前谷歌技術主管親述:程序員請避開這幾大雷區

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

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

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

奇怪的是,無論任職於哪家公司,大多數經驗豐富的工程師都會表現出一樣的特色。他們缺少對代碼的關注,和其餘工程師相比,他們寫代碼的速度較慢。這是由於和僅僅編寫代碼相比,他們會將更多的時間花在設計上面。微信

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

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

1. 在代碼重構上浪費時間oop

@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,加入讀者圈,一塊兒討論最新鮮的人工智能科技哦~)

相關文章
相關標籤/搜索