大約在 2013 年,“全棧開發”這個詞開始出現在招聘描述和博文之中。很多公司也意識到,雇用一個僅僅精通一種語言的開發者已經不能滿足需求了。一個能處理各種任務和環境的 Web 開發者相當有用,這也開始成為了(公司人才招聘)的規范。
盡管如此,網絡架構知識并未普及。很多開發人員雖然做過網站建設,卻對“幕后”知識并沒有很好地領會,(比如)Web 表單、高速緩存、HTTP 協議、Apache 等。這些(知識)都是次要掌握的。
在線學習對就業市場的影響
大概是受幾年前開始興起的在線學習的影響,自學的 web 開發人員對于底層技術的了解少的驚人。面向編程語言的課程不能全面覆蓋 web 的知識,導致學生完全不知道 htaccess 文件是做什么的,或者怎樣去重啟 Unix 的守護進程,或者不同類型的 POST 編碼是如何 工作的。
那么,一個全棧開發人員都應該知道一些什么(知識)呢?在工作描述中提及的通常是前端和后端技術的結合,像是JavaScript 和 Node、PHP 和 jQuery、Angular 和 Spring 等等。其實,在這個范圍以外,還有相當多的信息可以提升個人建站的能力。那些固步自封,僅憑單一技術就能做出一番事業的日子已經一去不復返了。
如果只堅守你(所掌握的技術)已經不再能滿足需求,那我們要怎么辦呢,我們如何才能跟上 web 庫以指數形式在增長的速度?如今,已推出的軟件實在太多了,導致了技術間組合的可能性也在急速增加。這種組合的爆發將會把軟件開發推向一個特別的領域。你所了解的使用技術 Y 和 Z 來解決問題 X 的幾率在逐漸減小,而且 Google 可以為你提供的幫助也在以同等速率降低。這些做法很快就要行不通了。
被譽為“編程界的搖滾明星”的 John Carmack 的文章中介紹了這個非常有趣的概念(反脆弱性)。我節選了《反脆弱性(Antifragile)》這本書中的一段,它是這樣描述的:
“就像人的骨頭在施以壓力時會變得更加強壯,流言和騷亂越是試圖掩蓋反而越會加劇一樣,生活中的很多事會得益于壓力,失序,波動和混亂。 塔雷伯所稱的“反脆弱性(antifragile)”的意思就是,不但要從混亂中有所收獲,而且還需要(依靠)它來生存和繁榮”。(譯注:塔雷伯,知名思想家,經驗主義者,金融業人士,風險工程學教授、哲學隨筆作家,以《黑天鵝效應》一書聞名于世。來源:維基百科)
這個想法反映了曾被叫做“黑客”的這樣一些人的態度。現如今,這個詞有了負面含義,但是在早些時候,它指的是對科技抱有某種態度的一類人。正如在行話中定義的那樣,黑客是“享受探索可編程系統的細枝末節和不斷延伸自己能力的一類人,他們與大多數只按照最低需求來學習的用戶完全相反。”
曾經有一段時間,當你有問題的時候去 Stack Overflow 查找是找不到解決辦法的,很多軟件即使有文檔也都不可讀。我記得小時候曾試圖修復一個聲卡,當我閱讀這個聲卡的手冊時,只找到了匯編代碼和中斷代碼。這是黑客蓬勃發展的環境,這也是我們遲早要回歸的(環境)。當你想解決一個涉及到多種技術的復雜問題,你的第一反應是去 Google 搜索,那你就應該重新考慮一下你的工作習慣了。
確實,很多時候好奇心太盛會把你指向錯誤的道路上去,尤其是在這種時間永遠不夠的企業環境中。比如,在學習一個新的庫的時候,用它來寫一些基本用例會使你大有啟發。但是想要討老板歡心的程序員會選擇更實在的途徑,即從文檔中直接復制實例,其實完全不知道它(這個庫)的工作原理。作為開發人員來提供(自身)價值,需要一定的時間管理和期望設置的技能,為的是讓你可以探索你需要的知識,從長遠上節約公司的成本。
重新思考黑客這一角色
如何去找到黑客?你需要尋找這樣一些人,他們有我所描述的特定的心態,獨特的好奇心和堅持(的品質)。無關分析能力,也無關是否能記住一系列特定的學術算法,所以,在白板上徒手寫算法的這種考察方式是行不通的,考察其費米估算的能力似乎也不是那么行之有效(也不能合理猜測出這個人是否是一個黑客)。(你可以)問一個候選人他在空閑時間都喜歡做什么,或是他會把什么有趣的項目作為愛好,你可能會有所發現。我見過很多程序員,他們在業余時間不喜歡寫代碼,這已經非常可靠地顯示出他們是水平欠佳(低于平均水平)的程序員。
如果你是一個開發人員,你可能會擔心自己沒有那種動力或好奇心,那么對此你能做些什么呢?
這里有一些指引:
每當你需要 Google 一些錯誤信息或問題,請閱讀完所有答案,獲取與問題相關的盡可能多的信息,不要只是滿足于找到一個解決方法。
了解一項技術,也要知道在它的設計和開發之中所做的權衡。
捫心自問,如果你想成為一個「全面」的開發者,你需要什么(技能),寫下你達成目標所需要走的路徑。
做其他人不愿去做的事,去其他人不想去的地方,你終將從這些經歷中獲得啟發。
軟件開發領域正在飛速發展,學習編程也變得前所未有的容易。我們將會生活在一個適者生存的環境之中。但最后的成功者不會是第一個學會(使用)酷炫的新框架的人,而是那個思考這個框架新在哪里,(與從前的框架)有什么不同之處的那個人。如果你想跟上技術棧的更新的步伐,那就要停止對不能跟上時代的擔心,開始像黑客一樣去探索吧。
-
工程師
+關注
關注
59文章
1574瀏覽量
68703
發布評論請先 登錄
相關推薦



FPGA算法工程師、邏輯工程師、原型驗證工程師有什么區別?



嵌入式軟件工程師和硬件工程師的區別?





評論