一個碼農的自我修養:5個高級開發人員應該具備的品質
大數據文摘出品
來源:medium
編譯:張大筆茹、寧靜
前不久,文摘菌曾報道過,“Python之父”Guido Van Rossum,一位荷蘭程序員邊看電視邊擼代碼,歷時三個月開發出了現今廣泛應用的Python語言,就有人在后臺問了:“同樣是程序員,我也喜歡宅在家里,為什么收獲的只有身體的橫向發展?”
那些號稱“代碼教科書”“程序不通過編譯器都會道歉”的高級開發人員和在搬磚邊緣苦苦掙扎的碼農有什么不一樣呢?難道真如學習一門樂器,管類樂器,老師會看你嘴唇薄厚,絲弦樂器,可能會看你指節長度一樣,編程也需要有天賦嗎?
開發人員的技能范圍是很廣的,不能僅根據工作年限來評價一個人的才能,五年、十年甚至十五年所謂的“工作經驗”并不一定是有能力、高效率開發人員的佐證,有些人往往年齡大而能力低,那么是什么讓有些人能在同類中脫穎而出呢?
文摘菌通過觀察周圍一些高級開發人員,發現他們身上都有相同的特質,到底是什么樣的特質使得他們開發出來的代碼復用性好,漏洞低呢?可能他們都具備如下品質吧。
編程模式
程序化面向對象、功能編程與面向對象設計、清晰編碼技術的SOLID是編程模式的“三重奏”,它們很大程度上決定了代碼創建背后的思維模式。
大多數初級開發人員在編碼過程中并沒有意識到編程是一種超越了語法規則的問題,可以把它看作可以多種方式完成的通信工具,好的編程模式有助于優化代碼間的通信方式。
任何人都可以寫代碼,正如任何人都可以在豆瓣上發短息和寫書評一樣,當然這肯定不能與斯蒂芬金的小說比擬。編程模式作為高級開發人員代碼背后的指導力量,就像小說結構對于其整體情節的反映一樣,所有的語言都是有其內部架構的,高級開發人員可以在內部層面理解并應用,這是許多初級和中級開發人員做不到的。
創造力
當我們在for循環和if else語句中開始編程時,我們往往更喜歡用復制和粘貼的方式解決代碼問題。然而,理解代碼的方式決定了你是低級還是高級開發人員。
走一步,再走一步,更進一步,可能會發現另外一番風景,與其復制粘貼代碼,倒不如整理好自己的思路,創造出有“靈魂”的代碼。
高級開發人員之于普通開發者,是他們有創造力,而不只是依靠Google知識庫的幫助。他們知道自己的代碼要解決的問題,看得到風險,或者說至少預測得到代碼運行時候的問題,能看得到代碼中的潛在漏洞并想好如何改進它們。如果發現知識方面的盲點,他們不單單會看表面,而是對工具箱中的所有內容進行更深入的了解,總之,高級開發人員的眼中能看到一個更加深邃的代碼世界。
保持客觀
每個人是用自己已有的知識來看待現有的問題,這也是初中級開發人員的共同點,他們更傾向于根據個人經驗而不是代碼本身的問題來解決問題,他們的個人偏好、風格、命名慣例和思維方式是他們提供評估和建議的出發點。這是成長過程的一部分,沒什么不對的,但是沒有絕對正確的代碼,只有適用于情境和場景合適的代碼。
高級開發人員能意識到這一點,接受他們的代碼可能不是最好的,永遠還有改進的空間,面對不同的處理任務和問題時都能夠保持樂觀,整理和改進出不同的代碼以解決不同的問題。同時他們也是有效的代碼管理員,能指出同行所做架構中的弱點和邏輯思維混亂之處,能高瞻遠矚,不受任何一種編碼或范式的束縛,從突發事件中看到問題,同時根據實際情況做出最優選擇。他們著重點在于解決問題而不是選擇工具。
追求卓越,優秀還是好用?
作為開發人員,寫代碼是本職工作,一些人寫完即止,打卡下班,不會考慮代碼復用性和簡潔性,而高級開發人員則會追求完美。
多數老板只關注軟件是否能正常運行,專業的開發人員知道優秀的軟件和能用的軟件之間的差別,在寫代碼時會考慮到重構問題,他們更關注技術和代碼風格等隱性成本,能在項目的準時交付和與老板的洽談這兩者之間做平衡。
廣博的知識面和對框架和語言的精準理解不僅使得他們知道如何創建優秀軟件和能用軟件,也使他們能夠在必要時提出創造性的解決方案。
教的能力
“平庸的老師教導,一般的老師解釋,優秀的老師展示,偉大的老師啟發。”
—— 威廉亞瑟沃德 |
真正的高級開發人員對工作充滿熱情,樂于激勵并幫助經驗不足的同行。
編程本身就是一種思想,有經驗的人能夠化繁為簡,根據實際需要在不同界面和媒介之間交流,就像任何教師都需要精通一定的領域一樣,雖然“經驗”能以簡歷上的項目數量和在不同公司的任職時間這些標準來量化,但會啟發的高手屬于那些真正了解編程內部藝術的人。
寫在最后的話
上述特征存在于他們的個性和知識的深度中。使他們能比普通程序員更快地探索未知代碼區域,通常能夠顧及全局并以開明的心態審視代碼。高級開發者提倡并引導同行養成“整理”和“反思”編碼的習慣,旨在形成思維的正向反饋,是真正問題的解決者和思考者。
這些品質都是在平時開發過程中思考、積累得到的,誠如“哪有什么天賦異稟,誰不是在苦中作樂”這句話所描述的一樣,程序開發是一門藝術設計,而不是單純的敲代碼,需要我們在開發過程中多做總結,思考是比單純地復制粘貼要難的多,但是正如電影《三傻大鬧寶萊塢》中的經典臺詞:“追求卓越,成功自然會追著你跑”,代碼的編程習慣、編程風格、簡潔性這些方面都是一名優秀的開發人員應該考慮的問題,在追求卓越的過程中,這些品質都會積累下來,成為后續開發的財富!
相信具備了這些品質和自我反饋的能力,你也可以修正自己開發過程中的bug,在編程過程中少走彎路。
相關報道:
https://medium.com/better-programming/the-marks-of-a-true-senior-developer-d5f3b11c3375
【本文是51CTO專欄機構大數據文摘的原創譯文,微信公眾號“大數據文摘( id: BigDataDigest)”】