“ 職業程序員 ” 不必那么 “ 職業 ”
編者按:本文作者余晟,文章首法于其微信公眾號“余晟以為”(微信號:yurii-says),歡迎交流探討,授權 36 氪發布。
我剛工作時,怎么也搞不清楚為什么求職信息里要有 “行業” 的選項,還要有 “職業” 的選項,很多時候 “行業” 和 “職業” 還是重疊的,比如行業是 “軟件開發”,職業是 “軟件工程師”,這不是一回事?過了好些年,這個謎團才真正解開。
好玩的是,我本來以為只有自己不清楚這個問題,慢慢才發現不是這樣。工作的時間長了,不少年輕的朋友們和我聊工作的問題,我發現不少人對自己職業生涯的困惑,都來源于對 “行業” 和 “職業” 的理解。看來,值得為這個問題寫篇文章,談談我的看法。
-
所謂 “行業”,通常是就公司而言的,指的是公司業務所在的領域。比如 “運輸”、“零售”、“電商” 等等。
-
所謂 “職業”,通常是就個人而言的,指的是個人所從事的具體工作。比如 “貨車司機”、“營業員”、“平面設計” 等等。
以上的例子看起來很簡單,但生活中時常會發生混淆。因為行業與職業既不互斥也不重疊,每個人既有自己的職業也有自己的行業,而且職業和行業的名稱還有可能非常相似。行業有 “軟件開發”,職業也有 “軟件開發”,兩者還是有區別的。如果行業是 “軟件開發”,往往指的是這個人所在的公司負責開發和銷售軟件產品;如果職業是 “軟件開發”,往往指這個人自己就在編碼開發軟件。延伸開來說,軟件公司里不只有開發軟件的人,還有測試、財務、行政、銷售等等各種職業。做軟件開發的人也不一定在軟件公司,電商、科研等等行業的公司里也需要這種職業。
搞清楚了行業和職業的大致關系,就可以來談職業生涯了。
基本上,任何一份工作能給人的新鮮感都不會超過 6 個月,之后就只是簡單重復的勞動。從公司的角度來說這是合理的安排,熟練工效率最高最保險。從個人角度來說很可能就不滿意了,有心人總會想著自我提升。可是,力氣該花在哪里呢?時間是有限的,誰都不想白花工夫。
這時候,行業和職業代表了發展的兩個方向。選擇行業,就要拓展自己知識的廣度,去接觸上下游的人,了解整盤生意、整個業務鏈是怎么玩的。選擇職業,就要加深自己技能的熟練程度,尋找比自己更專業的人和資料,加以學習。
通常我們說的 “向專家學習”,其實是沒有明確方向的,因為專家既有行業專家,也有職業專家。假設你在一家在線商店做程序開發,那么你的行業是電子商務,職業是程序員。選擇行業作為發展方向,就應當側重了解以下問題:電商的應用有哪些特點,在系統的選型和使用上有哪些講究,哪些問題適合使用什么框架和中間件解決…… 選擇職業作為發展方向,就需要側重了解以下問題:現有的編程語言和框架有什么功能,什么特性,系統有哪些技術指標各表示什么意思,系統大概會出什么問題應當怎么解決……
注意上面我說的是 “側重”,極度 “偏科” 的組合是沒有市場的。僅僅關心行業而不能動手就只能夸夸其談,僅僅關心職業而不了解背景和規矩同樣寸步難行。所以,大多數職業通常都對行業知識和職業技能有入門要求。但是,個人在成長時應當如何選擇方向,把重心放在行業知識上還是職業能力上,很多人未必清楚這個問題。
可以肯定的是,至少相當多的程序員選擇的是 “職業”。無論什么行業的程序員,大家愿意愿意爭論什么語言好、什么框架好之類的問題,把自己定位為 “中立” 的技術人員,所謂 “中立”,指的就是 “和具體問題無關,與具體領域無關”。這種職業生涯的選擇,美其名曰 “職業程序員”。
但是這種 “職業程序員” 工作起來往往會有很多問題。典型表現之一就是業務人員常常會大喊 “你怎么連這個都不懂,這不應該要我說啊”,因為他們確實 “不懂”——我見過不少開發倉儲系統的程序員真的不理解什么是庫齡,也搞不懂標品和庫存的區別等等 “入門問題”;典型表現之二就是我經常在面試時遇到來自完全不同行業的程序員,對要應聘的行業沒有理解也不做功課,看到 “程序員(開發工程師)” 就直接投簡歷了。你問他 “NoSQL 和 SQL 有什么區別” 通常還能答上來,問他 “電商、SNS 的什么特性決定了它們要大量用到 NoSQL”,往往就答不上來了。如果再問問他之前行業的典型問題對應著軟件科學里的什么模型,能答上來的人就更少了。不過很多 “職業程序員” 覺得這不是問題,本來就不必操心這些問題嘛。
現實的結果是,大量的 “職業” 程序員更適合去做 “純” 開發,雖然這個職業已經 “人才濟濟” 了;而 “行業” 程序員奇缺,在許多行業有大量公司需要開發 “不求高精尖,只求穩定能用” 的系統,愿意付出高薪招募有足夠行業知識、開發技能相對一般的程序員,卻長期一無所獲。我相信不少程序員棄 “行業” 而選 “職業” 并不是有意識的選擇,但這種 “無意識” 的代價有時大到讓人嘆息。
為什么會這樣?我覺得有兩方面原因。
一方面,軟件開發本身已經足夠成熟,對于純軟件領域的許多經典問題,已經有相當成熟的解決方案,形形色色的各種語言、框架、組件已經相當可靠了,不那么靠譜的程序員也可以拿來直接使用。換句話說,“純” 軟件開發已經有相當多的積累,要想做出成績的門檻已經很高。
另一方面,軟件如何解決各種現實問題,其實一直沒有經典的方案。軟件最早是解決科學計算和銀行問題的,走的是理論先行的路子(還記得 Codd 的經典論文吧),之后軟件開始試圖解決其它各種領域的問題,這時候就只能實踐先行了。這些領域(行業)之前的經驗和規范如何移植到軟件的世界中,其中哪些值得保留,哪些需要更新或放棄,大量此類問題都還在摸索(移動互聯網興起以后更是如此,因為新興場景和問題成倍增長)。
在這種情況下,行業知識的價值更高也就不難理解了。如果有兩個程序員,甲的職業技能更強,用一個月時間把倉儲管理系統的響應速度提高了 100%,乙的行業知識更多,用一個月時間把倉儲管理系統的準確率提高了 40%,出貨速度提高了 20%。對如今電商行業的大多數公司來說,誰的價值更高,恐怕是不言而喻的——其實對于這種現象,溫伯格在《成為技術領導》里給過一個模型:不要算加法,算乘法。如果你花了 90%的精力在職業上,10%的精力在行業上,總分是 0.09,如果精力分配是 60%:40%,總分是 0.24。數值或許不那么準確,但總的趨勢是對的。
或許有人會說,偏向 “行業” 是有風險的,萬一行業不景氣了怎么辦?還是靠 “職業” 的硬本事吃飯更有底氣。這種擔心其實是不必要的。首先選擇行業不是要撞大運,不是終身契約;其次選擇行業未必意味著你要完全放棄職業技能,你或許只需要把時刻緊追最新技術的精力用來了解行業已有的經驗就好;最后,如果你技術過硬又能深入了解兩三個行業,那就是 “領域專家” 了,領域專家可是比只會夸夸其談的 “咨詢顧問” 吃香得多。
本文來自讀者投稿,不代表 36氪 立場,如若轉載,請注明出處:http://36kr.com/p/5043342.html
“看完這篇還不夠?如果你也在創業,并且希望自己的項目被報道,請戳這里告訴我們!”
來自: http://36kr.com/p/5043342.html