【為什麼我們要挑選這篇文章】優秀開發者和一般碼農的差異是什麼?一般的碼農是執行者,根據主管、客戶的要求,寫出相對應的程式;但優秀開發者會理解需求與程式內部架構,找出最適合的程式碼,持續優化程式並向同事分享。想讓自己職涯更上一層樓的工程師,必須要了解以下 5 點優秀開發者所具備的特質與能力。(責任編輯:郭家宏)
「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息
快將你的履歷自傳寄至 jobs@fusionmedium.com」
不久之前,文摘菌(本文作者)曾報導過,Python 之父 Guido Van Rossum,一位荷蘭工程師邊看電視邊寫程式,歷時三個月開發出了現今廣泛應用的 Python 語言,就有人在後台問了:「同樣是工程師,我也喜歡宅在家裡,為什麼收穫的只有身體的橫向發展?」
那些號稱「程式碼教科書」、「程式不透過編譯器都會道歉」的高級開發人員和在搬磚邊緣苦苦掙扎的碼農有什麼不一樣呢?難道真如學習一個樂器,例如管樂,老師會看你嘴唇薄厚,或是絃樂,可能會看你指節長度一樣,寫程式也需要有天賦嗎?
開發人員的技能範圍是很廣的,不能僅根據工作年限來評價一個人的才能,五年、十年甚至十五年所謂的「工作經驗」並不一定是有能力、高效率開發人員的佐證,有些人往往年齡大而能力低,那麼是什麼讓有些人能在同類中脫穎而出呢?
文摘菌透過觀察周圍一些高級開發人員,發現他們身上都有相同的特質,到底是什麼樣的特質使得他們開發出來的程式碼使用性好,漏洞低呢?可能他們都具備以下的 5 個特質吧。
理解程式碼的內部架構,優化程式碼的運作模式
程式化面向對象、功能編寫與面向對象設計、清晰編碼技術的 SOLID 是編程模式的「三重奏」,它們很大程度上決定了程式碼創建背後的思維模式。
大多數初級開發人員在寫程式過程中並沒有意識到,寫程式是一種超越了語法規則的問題,可以把它看作可以多種方式完成的通信工具,好的程式模式有助於優化程式碼間的通信方式。
任何人都可以寫程式,正如任何人都可以在豆瓣上發短訊和寫書評一樣,當然這肯定不能與史蒂芬金的小說比擬。程式模式作為高級開發人員程式碼背後的指導力量,就像小說結構對於其整體情節的反映一樣,所有的語言都是有其內部架構的,高級開發人員可以在內部層面理解並應用,這是許多初級和中級開發人員做不到的。
創造力:整理思路,知道自己的程式要解決的問題
當我們在 for 循環和 if else 語句中開始寫程式時,我們往往更喜歡用複製和貼上的方式解決程式碼問題。然而,理解程式碼的方式決定了你是低級還是高級開發人員。
走一步,再走一步,更進一步,可能會發現另外一番風景,與其複製貼上程式碼,倒不如整理好自己的思路,創造出有靈魂的程式。
高級開發人員之於普通開發者,是他們有創造力,而不只是依靠 Google 的幫助。他們知道自己的程式碼要解決的問題,看得到風險,或者說至少預測得到程式碼運行時的問題,能看得到程式碼中的潛在漏洞並想好如何改進它們。如果發現知識方面的盲點,他們不單單會看表面,而是對工具箱中的所有內容進行更深入的瞭解,總之,高級開發人員的眼中能看到一個更加深邃的程式碼世界。
保持客觀:沒有絕對正確的程式碼,只有適合的程式碼
每個人是用自己已有的知識來看待現有的問題,這也是初中級開發人員的共同點,他們更傾向於根據個人經驗而不是程式碼本身的問題來解決問題,他們的個人偏好、風格、命名慣例和思維方式是他們提供評估和建議的出發點。這是成長過程的一部分,沒什麼不對的,但是沒有絶對正確的程式碼,只有適用於情境和場景合適的程式碼。
高級開發人員能意識到這一點,接受他們的程式碼可能不是最好的,永遠還有改進的空間,面對不同的處理任務和問題時都能夠保持樂觀,整理和改進出不同的程式碼以解決不同的問題。同時他們也是有效的程式碼管理員,能指出同行所做架構中的弱點和邏輯思維混亂之處,能高瞻遠矚,不受任何一種編碼或規範的束縛,從突發事件中看到問題,同時根據實際情況做出最優選擇。他們著重點在於解決問題而不是選擇工具。
追求卓越,知道「能用」和「優良」程式碼之間的差別
作為開發人員,寫程式碼是本職工作,一些人寫完即止,打卡下班,不會考慮程式碼復用性和簡潔性,而高級開發人員則會追求完美。
多數老闆只關注軟體是否能正常運行,專業的開發人員知道優秀的軟體和能用的軟體之間的差別,在寫程式碼時會考慮到重構問題,他們更關注技術和程式碼風格等隱性成本,能在專案的準時交付和與老闆的洽談這兩者之間做平衡。
廣博的知識面和對框架和語言的精準理解,不僅使得他們知道如何創建優秀軟體和能用軟體,也使他們能夠在必要時提出創造性的解決方案。
教的能力:樂於激勵並幫助經驗不足的同事
「平庸的老師教導,一般的老師解釋,優秀的老師展示,偉大的老師啟發。」
—— 威廉亞瑟沃德
真正的高級開發人員對工作充滿熱情,樂於激勵並幫助經驗不足的同行。
寫程式本身就是一種思想,有經驗的人能夠化繁為簡,根據實際需要在不同界面和媒介之間交流,就像任何教師都需要精通一定的領域一樣,雖然「經驗」能以履歷上的專案數量和在不同公司的任職時間這些標準來量化,但會啟發的高手屬於那些真正瞭解程式內部藝術的人。
寫在最後的話:養成「整理」和「反思」程式碼的習慣
上述特徵存在於他們的個性和知識的深度中。使他們能比普通工程師更快地探索未知程式碼區域,通常能夠顧及全局並以開明的心態審視程式碼。高級開發者提倡並引導同行養成「整理」和「反思」程式碼的習慣,旨在形成思維的正向回饋,是真正問題的解決者和思考者。
這些品質都是在平時開發過程中思考、積累得到的,誠如「哪有什麼天賦異稟,誰不是在苦中作樂」這句話所描述的一樣,程式開發是一門藝術設計,而不是單純的寫程式碼,需要我們在開發過程中多做總結,思考是比單純地複製貼上要難的多,但是正如電影《三個傻瓜》中的經典台詞:「追求卓越,成功自然會追著你跑」,寫程式碼的習慣、程式碼的風格、簡潔性這些方面都是一名優秀的開發人員應該考慮的問題,在追求卓越的過程中,這些品質都會積累下來,成為後續開發的財富!
相信具備了這些品質和自我反省的能力,你也可以修正自己開發過程中的 bug,在寫程式的過程中少走彎路。
原文 傳送門
(本文經合作夥伴 大數據文摘 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈一个码农的自我修养:5 个高级开发人员应该具备的品质 〉。首圖來源:Alvar C.H. Freude)
更多關於寫程式的技巧
寫程式不再崩潰!介紹 5 個 Google 工程師都在用的好習慣
台灣正缺軟體工程師!新鮮人年薪中位數破 70 萬台幣,但他不能只會「寫程式」
【工程師實用外掛】開啟 Cython,讓你的 Python 運算速度提升 36 倍!