1. 程式人生 > >前谷歌技術主管親述:程式設計師請避開這幾大雷區

前谷歌技術主管親述:程式設計師請避開這幾大雷區

全文共1827字,預計學習時長4分鐘

圖片來源:Unsplash/攝影NESA by Makers

軟體工程師的技能發展都會經歷一個自然的過程——經驗從無到有,最後變成老手。而一旦到了經驗豐富的階段,他們對程式碼就不那麼感興趣了。恰恰相反,他們會把更多的精力放在檔案設計和程式碼重構上。

奇怪的是,不管任職於哪家公司,大多數經驗豐富的工程師都會表現出同樣的特點。他們缺乏對程式碼的關注,和其他工程師相比,他們寫程式碼的速度較慢。這是因為和僅僅編寫程式碼相比,他們會將更多的時間花在設計上面。

從一個新手到經驗豐富,這個轉變過程不是一蹴而就的。但一般而言,這些工程師會用幾年甚至幾十年的時間,逐漸成為領域內資歷很高的人。

他們似乎在每個公司都是一樣的——不斷地處理新出現的需求,進行不必要的繁忙工作——這無疑會讓他們感到沮喪。本文將指出工程師們可能表現出的一些抑制其發展的特徵。

1. 在程式碼重構上浪費時間

@techleadhd作為目前在世的經驗最豐富的工程師之一,在推特上透露了他關於編寫程式碼的真實想法。

他顯然不相信編寫程式碼的意義。相反,他暗示稱刪除和重構程式碼是有價值的。

但這項工作並不是軟體清理,而是做軟體工程。

這就意味著工程師需要設計程式碼,而不是維護程式碼。維護程式碼是其他人的工作,興許實習生就能做到。

軟體工程師們應該花時間對那些陳舊低效的程式碼進行程式設計,而不是試圖改進舊的基礎結構。只要工作正常運作,就還可以用尚有不足的程式碼。然而,不少經驗豐富的工程師似乎認為維護舊程式碼具有很重要的意義。

2. 關注整體情況而不是程式碼

值得明確的一點是,整體情況和業務方面的事情並不重要,重要的是程式碼!

經驗豐富的軟體工程師有一個壞習慣,就是把注意力集中在整體情況而不是程式碼本身。他們喜歡提出這樣的問題,比如“這個專案將對誰產生影響”“終端使用者將如何與程式碼互動”以及“工程師將如何維護程式碼”。

他們花費很多時間試圖去了解專案的範圍以及它對於公司的影響。有時,他們甚至會用他們認為的“更好的解決方案”來挑戰領導階層。那麼,當他們專注於諸如“影響”和“優先次序”之類的瑣事時,他們如何抽出時間來完成所有程式碼?

把所有的時間都花在會議、鞏固、度量跟蹤和程式碼審查上,會導致程式碼編寫不再純粹。

優秀的程式設計師不應該質疑他們正在做的事情。相反,無論是什麼請求,他們都應該低下頭來編碼。在任何時候,企業都確切清楚什麼樣的行為將會對公司產生影響。作為程式設計師的工作職責,就是做好本職工作,而不是弄清楚他們做的事情是否值得,或者是否符合公司的戰略。

希望經驗豐富的工程師們記住:你是程式設計師,而不是領導者。

3. 總是想要一個設計文件

出於某種原因,經驗豐富的軟體工程師們總是想要一個設計文件。其實,在不考慮設計文件的情況下,無論專案規格多大,直接開始編寫都要快得多。

人們不會用一個稍微不同的物件或任何東西去重複功能。那麼,為什麼經驗豐富的軟體工程師偏要如此在意呢?

最後,如果不需要花時間考慮設計文件,工程師很可能將以快十倍的速度編寫程式碼。

4. 不喜歡“複雜性”和“設計過度的工程”

在某種程度上,有些資歷頗深的工程師不再願意深思其他人的程式碼。

因此,當建立一個模組時,他往往把在學校學到的所有知識都融合到一個面向物件記憶體中,並通常聲稱這是過度設計的程式碼。

其實他們只是不想深思別人的傑作。

花時間去理解如何從物件B中得到物件A,然後呼叫函式C,呼叫函式D,有時選項F和選項G從配置檔案E提取,配置檔案E用函式F從資料庫G中來解析資料,然後將日誌儲存在Hadoop、 CouchDB和S3中,這會很困難。

人們開始抱怨,說程式碼太簡單,或者設計太複雜。懶惰使得精心設計的程式碼很容易停產。

5. 他們都被困在未來

事實上,我們現在所瞭解的框架往往是一生中所需要了解的唯一框架。

然而,經驗豐富的工程師似乎花費了大量的時間去學習新的框架和語言,最起碼去研究新的設計原則,但這往往並非是必須要做的事情——很多事情並非是越多越好的。

圖片來源:unsplash.com/@k8_iv

事實上,從這一點來考慮的話,經驗豐富的軟體工程師可能正是阻礙社會發展的因素之一。

隨著對程式碼重構、設計文件和學習所提出的源源不斷的需求,他們不斷地推進著軟體的迭代。我們甚至可以這麼想:如果沒有那些經驗過度豐富的工程師,現在說不定已經出現比我們更智慧的飛行汽車和機器人了!

留言 點贊 關注

我們一起分享AI學習與發展的乾貨
歡迎關注全平臺AI垂類自媒體 “讀芯術”

(新增小編微信:dxsxbb,加入讀者圈,一起討論最新鮮的人工