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