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