程序員到底是一個什么職業?
編者按:反思技術圈的造神現象,作者寫下對程序員這個職業的理解。他認為,程序員首先是雇員、然后是工程師;比起創造力,工程能力對這個職位更為重要。作者 Easy,職鹿 JobDeer.com 創始人。
今天看到鳥哥的微博,說了些我一直想說的話,正好猴年來了,就展開聊聊我理解的程序猿:monkey:這個職業吧。
為什么有人在技術造神
大家應該已經感受到,技術圈這兩年已經和娛樂圈創業圈差不多的氛圍了,這其實是有原因的。
最主要的原因是,創業公司和創業媒體越來越多,他們需要大量的程序員投身到創業這個高風險的行業中,而造神,正是讓程序員們自動跳進火坑的絕佳辦法。不是說程序員不能創業,我是說,創業媒體們故意模糊了創造和創業的界限,把程序員們的創造沖動偷換概念,鼓吹了太多不適合的人去創業。
另一個原因是,招聘成本高漲,CTO 們為了能提升影響力,不得不頻頻出席各種大會刷臉。文筆好的再做做自媒體和技術社群,既能強化個人品牌提高身價,又能在融資的時候提升成功率。
總之,這個行業出現了各種技術大神。
這些大神在普通人類和初級程序員眼里是無所不能的,是他們向往的目標;在中級程序員和高級程序員眼里,這些大神就是他自己,只不過他還沒紅起來而已…
于是攀比心理也開始泛濫,全國第三的架構師比比皆是,整個圈子漸漸就浮躁起來。
然而絕大部分程序員,依然是雇員
媒體們在包裝時,最喜歡按獨立開發者的路線來整。「從小就對技術有天分」、「大學時曾在某編程大賽一鳴驚人」、「寫了個 APP 玩結果一個月有了千萬用戶」、「從公司離職自立門戶三年上市」。
OK,這的確是程序員的一條職業路線圖。但是媒體們不愿意告訴你的是,一:只有極少數程序員是通過這個路線成功的;二:這條線其實需要太多非程序員職位的技能,比如產品設計能力和銷售能力。
程序員的四大職業象限
這件事造成了兩個結果,一是沖動點的程序員跑去創業了,二是不那么沖動的程序員天天覺得自己能創業,能干大事,在現在公司屈才了。于是就有了這樣的畫面:雇員們天天抱怨雇主不能提供給他們高管或者獨立開發者級別的待遇。
如果不是你自己開的公司,那么雇員同學,你的價值是由你對公司的貢獻來決定的。
程序員的價值決定
絕大部分互聯網公司的程序員職位,沒有技術門檻
然而不幸的是,絕大部分互聯網公司都不是技術驅動的公司。真的就是鳥哥說的那樣,絕大部分技術崗位,其實技術門檻都不高(門檻在工程上,后文細講)。技術不過是這些公司的護航艦,而不是破冰船。
先別打我,冷靜下來想想,到底有多少你會的那些技術,是你的同行們不會的呢?不多,對吧?
幾年前億級別的搜索還是問題,現在已經到處是通用解決方案了;幾年前千萬到億級別的網站和 APP 解決方案還在大公司手里,現在各個架構大會都講爛啦,而且其實都差不多;就連 DeepLearning,帶 API 接口的框架也開始涌現,只需要把圖片用 REST 傳進去就能取到結果了。
很多事情,已經沒有難度,只需要持續投入。是的,對絕大部分程序員來講,他們不需要成為科學家,而需要成為工程師,成為從科學家手里接過火種,去燎原大地的人。
怎樣才是一個好工程師
1)工程的本質不是創造,而是去風險化。
工程是關于如何 低成本、高效率、按時按量完成既定任務的。所以判斷一個工程師是否優秀,并不是他多有創意多有名氣,而是看他有多穩,看他能多 GettingThingsDone,中文就是「靠譜」。
有時候一個好的解決方案,未必采用了最新的技術和框架,而是看上去樸實無華,功力都包涵在背后的細節里。就像頂尖高手打的斯洛克臺球,每一桿都平淡無奇,只是因為上一桿的回球太到位。
有同學問,那我工程做的太好,豈不是沒有機會遇到一些高難度挑戰了么?放心,一般公司都雇傭了產品經理來幫你制造高危事件。
同樣的,一個好的工程師,會選擇最適合需求和團隊的方案,考慮開發效率和系統效率的均衡,從而已達到最優效果;而不是整天和別人去爭論什么語言最好、哪些框架過時了。
2)工程的另一個要求是進度控制和質量控制。
在項目立項之后動工之前,對要做的事項作出詳盡的規劃,對未來一到兩周的工作給出細致的排期,這是進度控制的基礎。
代碼的及時入庫與合并,自動化測試和每日構建,CodeReview 和文檔編寫,這些看似無關緊要的習慣則決定了項目質量。
不幸的是,很多程序員把這些工程上至關重要的東西當成垃圾,視為對他們「創造力」的壓抑。
他們總是以創造力為借口去尋求自身的自在,比如上班不帶胸牌不打卡,中午休息時間在公司看視頻打游戲,最好可以遠程上班,項目到期之前再來檢查進度,公司不要用統一框架,只有傻逼才寫文檔。
對職業的理解偏差和工程能力上的荒蕪,培養了大批能寫代碼但死活寫不好代碼的「碼農」,反而讓那些有著彪悍工程能力和良好習慣的程序員變得奇貨可居。
最后,來說說程序員那無處安放的創造力
有了錘子想找釘子是很正常的原始沖動,但我們必須認識到,創造力對于程序員這個職業來講,是錦上添花的東西。如果你沒有強大的工程能力,那么創造力也不過是無本之木。所以扎扎實實的把工程基礎打好,這是最根本的。
在此基礎上,我比較推薦程序員采用內外兩條線來培養自己。在公司內的項目上采取相對保守的策略,盡力把穩定性做到最好,培養出自己卓越的工程能力;然后在公司外的開源項目和自己的獨立項目上,采用一些新的技術、實踐一些新的想法、充分發揮自己的創造力,夢想還是要有的,對吧。
這樣做最明顯的好處是,你可以了解到新技術和激進方案的優缺點,從而在進行方案選型時,有更多的依據;還有一個職業發展上的好處:如果不是主負責人,公司的項目往往不能代表你的能力;但獨立項目卻可以作為一個非常好的能力證明出現在你的簡歷里邊。
你可以是一個身懷絕技的手藝人,在自己家里你嘗試各種手法各種風格的個人作品;但當你參與頤和園這種級別的工程時,好好的把自己負責的石頭雕成總設計師要求的樣子就好 —— 畢竟這個時代一個人已經很難負責整個項目了。這就是我所理解的程序員的工匠精神。
本文來自讀者投稿,不代表 36氪 立場,如若轉載,請注明出處:http://36kr.com/p/5043177.html
“看完這篇還不夠?如果你也在創業,并且希望自己的項目被報道,請戳這里告訴我們!”
來自: http://36kr.com/p/5043177.html