“有能力”的程式設計師和“熟練”的程式設計師誰更牛?

床上不敗發表於2018-01-03

點選有驚喜


如果想成為一名程式設計師,只需要學習一門語言就算踏入了程式設計師的行列,被稱為程式設計師。但如果要成為一名優秀的程式設計師,就需要不斷地學習掌握並將之應用到工作中。 周而復始,而在這個過程中有一部分人說程式設計師,寫程式碼能力最重要,也有一部分人說知道寫什麼才重要,這就要提到兩個詞“能力”和“熟練”

我們將“能力”定義為“我知道如何做事”。公平地說,不管你從事何種職業,知道如何做事都是相當重要的。如果你是個程式設計師,那麼你的工作中的很大一部分是學習如何做事。知道如何做事雖然很重要,但是不要只為“知道如何做事”努力,否則你會很快發現自己失業了。

要知道在通向專家道路上,處於中間位置的程式設計師,都在某個層次止步不前(許多人甚至一輩子都停留在此處):這些上流不屬於上流,下流不屬於下流的程式設計師會認為可以用所做事情的多少來區別新手和專家。這就引出了“熟練”的含義。“熟練”的本質是關於“為什麼採用這種方式做事情”——這是理解一個難題的各個部分與理解各個部分如何構成一個整體的難題的不同之處。

比如,“有能力”和“熟練“之間的差距可以解釋為什麼有許多人都在高層次的程式設計思想之上掙扎,如設計模式。

一個有能力的程式設計師能夠熟讀備忘錄模式,並且理解如何實現它。他們甚至能夠識別出備忘錄模式適用於何種應用場景(可能在GUI裡實現一個undo操作)。但是由於他們不知道更大範圍的框架性的東西,他們可能還是會錯誤地應用這種設計模式。

相比之下,一個熟練的程式設計師能夠知道備忘錄模式什麼時候會失效(例如,如果正在拷貝大量資料,或生成大量副本時)。他們能夠考慮一些替代方案與備忘錄模式進行對比,從而考慮備忘錄模式是否是最優的實現方案。他們也理解備忘錄模式背後的基本設計思想,從而創造出一種能夠更好的適應特定應用場景的定製化解決方案。

更重要的是,一個熟練的程式設計師總是能夠識別出討論設計模式的合適時機。就像向一個新手解釋程式碼庫的概念,一個熟練的開發者可能會重點說明程式碼做了什麼,而不是丟擲一堆設計模式的名字。

所以作為程式設計師,要一直探究不熟悉、不同角度、不精通的技術。只有這樣你才能在“有能力”的基礎上更上一層,才能脫離僅僅是“知道某些事情”的程度 。


點選有驚喜


相關文章