我剛工作時,怎麼也搞不清楚為什麼求職資訊裡要有 「行業」 的選項,還要有 「職業」 的選項,很多時候 「行業」 和 「職業」 還是重疊的,比如行業是 「軟體開發」,職業是 「軟體工程師」,這不是一回事?過了好些年,這個謎團才真正解開。
好玩的是,我本來以為只有自己不清楚這個問題,慢慢才發現不是這樣。工作的時間長了,不少年輕的朋友們和我聊工作的問題,我發現不少人對自己職業生涯的困惑,都**於對 「行業」 和 「職業」 的理解。看來,值得為這個問題寫篇文章,談談我的看法。
以上的例子看起來很簡單,但生活中時常會發生混淆。因為行業與職業既不互斥也不重疊,每個人既有自己的職業也有自己的行業,而且職業和行業的名稱還有可能非常相似。行業有 「軟體開發」,職業也有 「軟體開發」,兩者還是有區別的。如果行業是 「軟體開發」,往往指的是這個人所在的公司負責開發和銷售軟體產品;如果職業是 「軟體開發」,往往指這個人自己就在編碼開發軟體。延伸開來說,軟體公司裡不只有開發軟體的人,還有測試、財務、行政、銷售等等各種職業。做軟體開發的人也不一定在軟體公司,電商、科研等等行業的公司裡也需要這種職業。
搞清楚了行業和職業的大致關係,就可以來談職業生涯了。
基本上,任何乙份工作能給人的新鮮感都不會超過 6 個月,之後就只是簡單重複的勞動。從公司的角度來說這是合理的安排,熟練工效率最高最保險。從個人角度來說很可能就不滿意了,有心人總會想著自我提公升。可是,力氣該花在**呢?時間是有限的,誰都不想白花工夫。
這時候,行業和職業代表了發展的兩個方向。選擇行業,就要拓展自己知識的廣度,去接觸上下游的人,了解整盤生意、整個業務鏈是怎麼玩的。選擇職業,就要加深自己技能的熟練程度,尋找比自己更專業的人和資料,加以學習。
選擇行業作為發展方向,就應當側重了解以下問題:電商的應用有哪些特點,在系統的選型和使用上有哪些講究,哪些問題適合使用什麼框架和中介軟體解決……
選擇職業作為發展方向,就需要側重了解以下問題:現有的程式語言和框架有什麼功能,什麼特性,系統有哪些技術指標各表示什麼意思,系統大概會出什麼問題應當怎麼解決……
注意上面我說的是 「側重」,極度 「偏科」 的組合是沒有市場的。僅僅關心行業而不能動手就只能夸夸其談,僅僅關心職業而不了解背景和規矩同樣寸步難行。所以,大多數職業通常都對行業知識和職業技能有入門要求。但是,個人在成長時應當如何選擇方向,把重心放在行業知識上還是職業能力上,很多人未必清楚這個問題。
可以肯定的是,至少相當多的程式設計師選擇的是 「職業」。無論什麼行業的程式設計師,大家願意願意爭論什麼語言好、什麼框架好之類的問題,把自己定位為 「中立」 的技術人員,所謂 「中立」,指的就是 「和具體問題無關,與具體領域無關」。這種職業生涯的選擇,美其名曰 「職業程式設計師」。
但是這種 「職業程式設計師」 工作起來往往會有很多問題。
典型表現之一就是業務人員常常會大喊 「你怎麼連這個都不懂,這不應該要我說啊」,因為他們確實 「不懂」——我見過不少開發倉儲系統的程式設計師真的不理解什麼是庫齡,也搞不懂標品和庫存的區別等等 「入門問題」;
典型表現之二就是我經常在面試時遇到來自完全不同行業的程式設計師,對要應聘的行業沒有理解也不做功課,看到 「程式設計師(開發工程師)」 就直接投簡歷了。你問他 「nosql 和 sql 有什麼區別」 通常還能答上來,問他 「電商、sns 的什麼特性決定了它們要大量用到 nosql」,往往就答不上來了。如果再問問他之前行業的典型問題對應著軟體科學裡的什麼模型,能答上來的人就更少了。不過很多 「職業程式設計師」 覺得這不是問題,本來就不必操心這些問題嘛。
現實的結果是,大量的 「職業」 程式設計師更適合去做 「純」 開發,雖然這個職業已經 「人才濟濟」 了;而 「行業」 程式設計師奇缺,在許多行業有大量公司需要開發 「不求高精尖,只求穩定能用」 的系統,願意付出高薪招募有足夠行業知識、開發技能相對一般的程式設計師,卻長期一無所獲。我相信不少程式設計師棄 「行業」 而選 「職業」 並不是有意識的選擇,但這種 「無意識」 的代價有時大到讓人嘆息。
為什麼會這樣?我覺得有兩方面原因。
一方面,軟體開發本身已經足夠成熟,對於純軟體領域的許多經典問題,已經有相當成熟的解決方案,形形色色的各種語言、框架、元件已經相當可靠了,不那麼靠譜的程式設計師也可以拿來直接使用。換句話說,「純」 軟體開發已經有相當多的積累,要想做出成績的門檻已經很高。
另一方面,軟體如何解決各種現實問題,其實一直沒有經典的方案。軟體最早是解決科學計算和銀行問題的,走的是理論先行的路子(還記得 codd 的經典**吧),之後軟體開始試**決其它各種領域的問題,這時候就只能實踐先行了。這些領域(行業)之前的經驗和規範如何移植到軟體的世界中,其中哪些值得保留,哪些需要更新或放棄,大量此類問題都還在摸索(移動網際網路興起以後更是如此,因為新興場景和問題成倍增長)。
在這種情況下,行業知識的價值更高也就不難理解了。如果有兩個程式設計師,甲的職業技能更強,用乙個月時間把倉儲管理系統的響應速度提高了 100%,乙的行業知識更多,用乙個月時間把倉儲管理系統的準確率提高了 40%,出貨速度提高了 20%。對如今電商行業的大多數公司來說,誰的價值更高,恐怕是不言而喻的——其實對於這種現象,溫伯格在《成為技術領導》裡給過乙個模型:不要算加法,算乘法。如果你花了 90% 的精力在職業上,10% 的精力在行業上,總分是 0.09,如果精力分配是 60%:40%,總分是 0.24。數值或許不那麼準確,但總的趨勢是對的。
或許有人會說,偏向 「行業」 是有風險的,萬一行業不景氣了怎麼辦?還是靠 「職業」 的硬本事吃飯更有底氣。這種擔心其實是不必要的。
首先選擇行業不是要撞大運,不是終身契約;
其次選擇行業未必意味著你要完全放棄職業技能,你或許只需要把時刻緊追最新技術的精力用來了解行業已有的經驗就好;
最後,如果你技術過硬又能深入了解兩三個行業,那就是 「領域專家」 了,領域專家可是比只會夸夸其談的 「諮詢顧問」 吃香得多。
職業程式設計師守則
新公司第一課 職業程式設計師守則 1.不許說,我的電腦上沒問題 軟體是寫給使用者的,不是寫給自己的。2.善於發現,注重細節。君子善假於物 最快速度發現需求 滿足需求,才能體現自己的價值,對使用者產生價值的是你的結果 質量 效率 而不是過程,使用者帶給你的快樂,會大於自我陶醉的快樂。軟體如人件,產品即...
程式設計師職業建議
國企還是外企?一直程式設計有沒有前途?下面是某前天給我發來的郵件 我是乙個剛剛畢業的大學生,我覺得自己對於程式設計師這個行業感到很迷惘,所以發郵件打擾您一下,麻煩了。我現在很迷惘的是,如果我一直在程式設計師這個行業上走下去,以後的出路應該是什麼呢?還是一直到高階工程師,還是專案管理這種程度嗎?我現在...
論程式設計師這個職業
程式設計師三十歲後做什麼?我們常常在bbs上看到類似的問題,相應的回答也有了無數個版本,然而始終沒有乙個人能夠給出乙個標準的答案。事實上大部分程式設計師對於自己的職業發展方向是模糊的。一方面我們對於自己想要的東西並不清晰,另一方面對於已有的目標也不懂得有步驟有方法地去接近並實現。就這樣時間一點一滴的...