不同優秀程度JavaScript開發者的差別
“優秀絕非偶然. 它總是由強烈的意圖、真誠的付出以及聰明的行動帶來的。優秀代表著明智的選擇——選擇,而不是機會,它會決定著你的命運。“ – 亞里士多德
我們所有人都想成為自己所在領域的佼佼者,但是很少有人付出時間和努力去實現自己所想。成為優秀的人很難,任何職業都是這樣。
評估一個JavaScript開發者的優秀程度是非常難的事情。
是什么成就一個優秀的JavaScript開發者呢?
我們可以通過很多標準來做出判斷。
代碼質量、按時交付、及時解決ticket(注:ticket類似于github中issue的意思,參考這里)是幾個可以參考的標準。當然也包括幫助團隊其他成員解決ticket。
我認為以上幾點都沒有提供準確的的量度。為了寫出優美的代碼而使整個項目延期了兩個月,僅僅是由于你想要重構那些沒有任何幫助的東西。我們都知道,關閉一個ticket并不意味著什么。
有許多變化的因素需要考慮。假如我問10個不同的程序員——他們覺得是什么成就一個優秀的開發者,我相信我會得到10種不同的回答。
我相信現在你也在思考著關于它的定義。
我曾一度掙扎于思考這個定義,所以我決定嘗試并弄清楚。
專注于工作我想找出所有開發者都會做的一些事情,然后我就可以基于開發者是如何做的,來對開發者的表現做出分類。
對于一個行業的優秀評估只基于一件事過于簡單化,但,無論如何我都打算去試一下。
現在你可以持保留態度。
我會試著證明我做了一個不錯的選擇。它會是所有開發者都會做的,同時又能夠將優秀的人從平庸者中篩選出來的一件事。
所有的開發者都會偶爾寫出垃圾代碼。
讓我們正面這件事吧,你和我都會時不時寫一些非常垃圾的,可恥的,以致我們永遠都不希望被人看見的代碼。
我們都有偶爾寫出垃圾代碼的理由。我不打算去討論哪些是正當的理由,因為我們每個人都有自己正當的理由。
在展示一些編碼的暴行之前,我們先回顧一下我們寫垃圾代碼的原因。然后我們就可以避免陷入代碼氣味,苦苦掙扎。
寫垃圾代碼的常見原因1. 趕時間“時間不夠”是目前寫垃圾代碼最多的一個原因。對客戶的承諾、緊張的日程安排,以及正在等待的新的發布都可能是造成這個惡果的原因。
2. 深陷痛苦之中現有代碼庫實在是太垃圾了,讓你根本不想努力寫出好的代碼。你知道自己無論做什么都不可能挽救這份將在某一時刻崩潰的垃圾代碼庫。
3. “我只需完成任務然后離開”作為開發者,我們有時候是在不同的項目組工作。假如寫完最后幾行代碼你就要轉到一個新的項目,這并不是什么影響別人的大事情。
知道自己在這個項目上的時間即將結束,沒有人會再review你的代碼了。于是你就草草提交、推送,然后指望單元測試來確保沒有任何問題。
看看真相我們都會偶爾寫出垃圾代碼。這能說明我們都是糟糕的開發者嗎?
當然不能。正因為每個人都會偶爾寫出糟糕的代碼,所以這件事本身不能說明任何問題。
然而,多年來,我漸漸發現一個關于開發者的令人驚訝的真相。
在寫出垃圾代碼后如何表現,就是對我們開發者資質的根本檢驗。
有點不可思議,但確實是這樣。意識到你正在寫出垃圾代碼,以及為了避免將來再次發生而采取的行動,都反映出你是如何寫代碼的,以及你一般都是如何對待寫代碼這件事的。
垃圾代碼與評估開發者的優秀程度有多大關系呢?有很大的關系。
我們舉Ron為例。Ron今天寫了糟糕的代碼,并為此不高興。因為一個令人討厭的五級深度的Backbone模型繼承鏈,讓Ron根本不能修改一行代碼,除了打破一切。
Ron寫了一段超級垃圾的代碼,繞過了這個問題。每個人都很高興,因為Ron準時交付了代碼。然而除了Ron自己。
他告訴團隊老大發生了什么。他們一起反復思考如何解決這個問題。他們明確了一點,打破繼承鏈并劃分為水平的組合模塊是最佳的解決辦法。
Ron于是請求老大給他時間實施自己和老大剛剛討論的重構方案。
Roger今天也寫了很糟糕的代碼。他告訴自己的開發伙伴,自己用難以置信的hack手法繞過了一個奇怪的五級深度的Backbone模型繼承鏈。他準備繞過整個整個架構,就這樣準時交付。
Roger自己感到非常滿意,覺得沒有進一步改善的必要。
四類JavaScript開發者你可以通過程序員對待寫出垃圾代碼的態度,將他們分為四類,從差勁到優秀。
告訴我你沒有同時遇到所有的這四類開發者。
Barney - 差勁的JavaScript開發者Barney并不關心自己正在寫垃圾代碼。他關心的僅僅是能否按時完成工作,其他任何事都無關緊要。代碼能正常運行,就沒有問題。
Barney寫出的垃圾代碼,有時也會阻礙整個項目的進展。代碼工作時,也會一直帶來很多問題,讓整個項目進度倒退。Barney卻認為自己并不需要學習什么新的東西。
他已經知道了完成工作所需要的關于JavaScript的所有東西。
Bill - 普通的JavaScript開發者Bill并沒有意識到自己正在寫垃圾代碼。他遵循著團隊的約定和lint規則,認為自己所做的沒什么問題。但他并沒有花費時間去理解整個項目結構,以及不同組件之間是如何交互的。
最后的結果就是,很不幸,一片混亂。
Bill在做出重大的設計選擇之前,沒有咨詢任何人。他自己怎么想的就怎么做。他讀過三篇發表于一年前的博文,它們一直在指導著他的決定。
我經常說走進Bill的代碼中,感覺就像地雷戰,移動錯了一步,所有的東西都會炸到你臉上。
Roger - 好的JavaScript開發者我們前面就提過Roger這種類型。完全意識到自己在寫垃圾代碼。他知道如果他想好好寫的話,代碼會是什么樣子。他拍拍自己的背,然后繼續寫出這段垃圾代碼。
Roger的主要問題在于沒有嘗試做一些改變。他做了自己被要求去做的,而且完成的很好。但是他寧愿讓事情該怎樣就怎樣,而不是花點時間,做一些努力讓其有所改變。
Ron - 優秀的JavaScript開發者Ron是一個優秀的程序員,但偶爾他依舊不得不寫一些垃圾代碼。
讓Ron與別人不同的,就是在寫那些垃圾代碼的時候,他會認真地思考如何讓這種情況不會再次發生,既不為自己,也不為任何其他人。Ron會弄清楚需要那種類型的重構,哪一塊的技術方案可以改變或提升。
然后,基于這些發現,Ron會行動起來,去推動這些改變。
冷酷的現實我必須得懺悔一下。 我就是這里的Roger。 但我也是Ron。 我也相信我曾不止一次的偶然當過Bill而自己不知道。我認為自己沒有像Barney那樣過,但是,到底有沒有,誰知道呢!我們都在走向持久優秀之路上來來回回。有時候我們是普通的,有時候我們是好的又或是優秀的。總是在嘗試著不要變成差勁的。
我們最終持續時間最長的那個角色會決定我們是什么樣的開發者。
說實話,從普通開發者到好的開發者,相較于其他事情,需要的是積累更多的知識和經驗。但是想要從好的躍升到優秀,你只需要改變一樣——態度。
“記住,在成為偉大之前,你必須是良好。在你成為良好之前,你必須是差勁。但是,在成為差勁之前,你必須去嘗試。——阿特 威廉姆斯
原文:http://thefullstack.xyz/excellent-javascript-developer/
相關文章:
