怎樣才算是一個優秀的 JavaScript 開發者?JavaScript 開發者網站 The Full Stack 作者 Dor Tzur 撰文 分析了如何辨別出卓越/優秀/平庸/差勁的 JavaScript 開發者,雖然一個 JavaScript 開發者到底有多優秀可能難以有準確的數據去衡量,問 10 個不同的工程師可能他們會說出 10 個不同答案,但或許你能看看以下 Dor Tzur 所說有沒有道理。
在進入正題之前,先來一個事實爆擊。
所有的開發者當都會寫出可怕的 code,那些可恥的、爛到爆的 code,儘管你知道一個成功的工程師背後可能都有一堆爛 code,但你就是不希望別人看到的那種狗屎 code。我們往往都會為這些屎一樣的 code 找理由,可能是:
「時間來不及啊!」、「codebase 就真的太爛了」或者有時候你在陌生的 project 裡面寫幾行 code,這事情雖然不是什麼大事,但也不能麻煩別人,本來負責這 project 的同事又休假,只好輪到你身負重任,所以抱持著「幹完這事我就能撤了」的心態寫下了屎一樣的 code。
爛到爆的 code,是開發者能力的「終極試金石」?
沒時間是最常見的原因和理由;有時候給開發者的 codebase 是真的很糟;更沒人想要寫出爛到爆的 code,但 Dor Tzur 觀察到:開發者怎麼去對待這些屎 code,他們對這些爛爆的 code 有什麼反應,就是這些開發者能力的 「終極試金石」。
Dor Tzur 舉了一個例子:
Ron 今天寫了段爛 code,但是因為令人討厭的 5 level deep Backbone Model 繼承鏈,除非推翻全部重來,所以他也沒辦法改,除了他自己,所有人都因為他交了 code 而滿意,他向自己的組長說了這件事,並且想辦法一起解決。
最後他們討論的結果是打破繼承鏈,並且重構,Ron 並向組長要求分配多一些時間讓他完成重構。
另一位 Roger,他同樣也寫出了爛 code,他告訴他的工程師朋友,他寫了段超級酷炫的 code(無視了 5 level deep Backbone Model 繼承鏈),在設法繞過了整個代碼架構、達成目標後就把 code 準時交出去了,他非常滿意這樣的做法,且不需再有任何進一步行動了。
卓越、優秀、平庸、差勁的 4 種開發者,你是哪一個?
差勁的開發者 Barney
Barney 是個不在乎寫出爛 code 的開發者,他唯一在乎的是能不能準時完成,只要 code 可以動就好、一切就非常完美,但他寫的爛 code 有時會打亂整個 project 的進程,並且會弄壞許多東西,最後拖累整個 project,不過 Barney 覺得自己挺好的,挺精通 JavaScript 的,而且不需要再進修了。
平庸的開發者 Bill
Bill 沒有意識到自己寫了段爛 code。他遵循團隊的規則,覺得自己做得還算 OK,但他不會去花時間去理解整個 project 的結構以及不同模組之間會有什麼相互作用,到最後,只能用亂七八糟、一團混亂來形容。
Bill 在決定大方向的設計前沒有諮詢過任何人,他即興表演、臨時發揮一般,只參考了他一年前讀過的 3 篇部落格文章,看 Bill 的 code 就像走在到處都埋著地雷的所在,一步踏錯、一個錯誤的舉動,一切就會在你臉上炸開。
優秀的開發者 Roger
在上文,我們已經先認識 Roger 了,而他被 Dor Tzur 分類在「優秀的開發者」。他完完全全能意識到自己寫了段屎一樣的 code,然而他只是安慰了自己一下,並且繼續完成這段屎一樣的 code。
Dor Tzur 指出,他做了自己份內的工作,還做得很好,但他的錯在於「沒嘗試去改變」,他覺得花時間追求完美,還不如維持現狀就好。
卓越的開發者 Ron
就像你所想的,Ron 是一名卓越的 JavaScript 工程師,他清楚自己寫出了那些爛到爆的 code ,也知道必須想辦法解決,他能想出需要怎樣的重構、怎麼去改進或改變,並且真的付諸行動。
看到這裡,你是 Ron,還是 Roger 呢?或許我們還曾不自知的狀況下當過 Bill 或 Barney,或者在閱讀文章時,你想起了自己身邊哪位優秀的同事。
總結上文,你不難發現為何 Dor Tzur 會說爛 code 其實就是開發者能力的試金石,因為這彰顯出了開發者的「態度」。
沒有人想要成為 Barney,但我們要怎麼成為 Roger,甚至進化成 Ron,至少我們得先嘗試改變,Dor Tzur 最後引用了 Art Williams 說過的一句話來勉勵工程師們,他們或許是 Bill,或許是 Roger,也或許是別人眼中的 Barney。
人才時時刻刻在增強自己的技術,
>>> 6 月 12、13 日雲端年度盛會 AWS SUMMIT 登場 <<<
聽更多人工學習與機器學習免費課程。
Art Williams 是這麼說的:「記住,在你變得『優秀』之前,你需要做得『好』;在你做得『好』之前,你可能會做得很『差』;但在你甚至可以做得很『差』之前,你至少需要先去嘗試。」
參考資料來源:
1.《BitTiger》:〈如何鉴别一个优秀的 JavaScript 开发者?〉
2.《The Full Stack》:〈The Difference Between Excellent, Good and Bad JavaScript Developers〉
(本文提供合作夥伴轉載,首圖來源:Pexels,CC Licensed。)
延伸閱讀
【我只想靜靜 coding】菜鳥工程師是怎麼一步步失去理想與熱情的?問題其實出在主管身上
工程師只能 996 嗎?三個老工程師教你如何在程式界開心存活 20 年
寫程式不再崩潰!介紹 5 個 Google 工程師都在用的好習慣