為什麼我們程式設計師寫不出好程式碼?

發表於2016-01-01

每個開發者在編碼時,都希望程式碼像水管的水一樣源源不斷的流出,思緒不被打斷。但在現實開發中,經常會由於一些事情突然中止或停下。本文就總結了現實工作中,影響編碼進度的15個“攔路虎”。

51d3dea51e328

1.開會

停止手頭的編碼工作,去參加會議。程式設計師或許不會相信,他們可能已經在會議室花費了數週或數年時間和老闆閒聊技術細節。

當你從會議室出來後,大腦可能需要一定的轉換時間,才能再重新投入到編碼工作上,你很有可能需要一個小時的過渡。

2.回覆所有的電子郵件

如果會議已經夠糟糕的了,那麼沒完沒了的郵件可能更讓人頭疼。經過幾個小時的來回討論,最終卻沒有個結果。

3.衡量生產能力

有些管理團隊受到一些書籍啟發,對提交到程式碼庫的程式碼行數或bug修復數進行統計,並且作用一種衡量標準。他們認為,統計是一種衡量,而衡量肯定是有好處的。

然後他們根據此標準為開發者的工作能力進行排名。開發者猶如網路遊戲中的玩家,他們將更加關心自己的排名,而不是如何讓程式碼更好。

開發者的重點變成了統計程式碼所編寫的行數、解決bug或把所統計的提交的倉庫裡。如果程式碼行數都計算在內的話,原本一個問題只需10行程式碼即可解決,程式設計師有可能編寫5000行程式碼,來讓功能更加靈活和相容,這樣,他的程式碼總量就會增加5000行了。

衡量生產力反而會使程式碼變的更糟,讓專案裡充滿功能豐富但過度設計的程式碼。

真正解決這個問題,我們需要跟蹤bug,我們需要組織工作流和協調軟體開發,這些都是無法準確衡量。

4. 愛慕虛榮(Prima donna)的開發者

就開發者而言,最糟糕的莫過於其他開發人員沒有按照專案需要進行開發,而是用自己的方式來迭代專案。每一個開發者都能識別出可怕、不可原諒的最後一次迭代行為。

這種不考慮之前已完成程式設計工作的態度會拖慢專案的進度。傲慢和利己主義會導致程式設計師扔掉合適的程式碼,而以他們認為的“正確的方式”重新構建。

5.“以後再修復”思維模式即“技術債務”

有時候,我們很難按照需求在數天裡完成相應的功能,因此我們可能會偷工減料、補丁程式碼等。聰明的專案經理在弄清事後必須補上的“債務”後,形象的稱它為“技術債務”。

每個專案都會有一定的技術債務,有的可能會快速還清,而有的可能會在下一個版本中初見端倪。

6.非程式設計師經理

有些程式設計師很喜歡這樣的經理,他們不會對你的程式碼指手畫腳,而且在技術上愚弄他們很容易。而他們也很難給你技術上的指導。

7.程式設計師經理

雖然程式設計師可能會抱怨要和完全沒有程式設計經驗的專案經理一起工作,但他們也經常私底下說如果專案經理具備程式設計能力可能會更糟糕,甚至有多糟糕就多糟糕。

具有程式設計能力的專案經理可能會對專案管理的太細,因為他們一旦有新的觀點,程式碼就會大片修改。

8.技術過硬但有些強勢的程式設計師

程式設計師往往都是因為過硬的技術才被公司賞識,而不是人際交往。但不能每次出現問題都責怪穿西裝不自在或銷售人員過於熱情,有可能問題出現在自己身上。

客戶想要一些不同的東西,這對此類程式設計師來說無關緊要,他們更多的是關注於技術引數。

然而在人際相處中,他們經常會過濾掉彼此的特質,當他們彼此產生爭議時,就可能影響到整個團隊的進度。

9.自私或莽撞的程式設計師

自戀狂程式設計師的工作可以說是非常酷和快,但遺留的問題也會很多,而你的工作就是處理這些瑣事,對程式進行測試保證它不會崩潰。

許多團隊在發現這一點後,都已經太晚了。在早期的測試中,程式碼塊都可以很好的工作,但在推送一些真實資料後,大家才意識到並沒有人檢查這一問題。

10.文件不全

有時,這裡會有大量的文件,但它可能是幾個月前或者一些老版本的記錄。我們沒有時間繼續記錄和修復程式碼,但它對我們來說仍然是有用的。

11.純粹地編寫文件

雖然我們都經歷過沒有文件的專案,太多的廢話和較少的程式碼常常會導致程式碼失敗。程式設計師經常會根據需求編寫評論,他們很詳盡地把每個細節記錄在文件裡,沒有總結或進行深入的理解,但如果沒有提供太多的抽象和理解,這很有可能是一份失敗的文件。

12.易分散注意力的環境

雖然銷售和營銷團隊能夠在具有噪音的環境裡很好的工作,而程式設計師則需要圖書館般那種安靜的環境。雖然許多企業給包括程式設計師在內的員工提供了類似乒乓球這類的運動,但他們常常忘記,程式設計師需要在安靜的環境下辦公,否則,嘈雜的環境很容易分散程式設計師的注意力。

13.辦公文化

你想擁有自己的辦公室嗎?還是你想在可以隨時提出你的問題團隊裡工作?你是喜歡在清晨工作還是熬夜呢?

如果一個團隊擁有一個相似的風格,那麼這個團隊會運營的更好。如果無法找到一個共同點,很有可能會快速失敗。

這可能太一概而論了,但你想象下,如果你正在編譯或者準備完成專案,而此時團隊裡的人在互相爭吵,你不得不中斷下來,這樣時間不就浪費了嗎?

倘若我建立了一個非常複雜的演算法,而中斷、談話、甚至是敲鍵盤的聲音都會使我無法集中精力,這時,我就非常希望有屬於自己的辦公室。

14.緊隨遺留技術

最令人討厭的莫過於去改寫那些塵封已久的舊東西,他們經常會忘記這樣做所花費的成本,有些程式碼是在ASCII之前編寫的,意味著你要重新轉換輸入輸出。舊的系統通常會計算空格字元,僅僅是為了弄清其在資料庫中是幹嘛的,這更要進行轉換。

程式設計師做大量的工作來截圖、重新格式化等,而過一段時間後,他們可能會花更多的精力去複製程式碼,而不是去重新編寫邏輯程式碼。

15.迷戀最新的工具

最新的工具可以給你帶來很多樂趣,處於最前沿的程式設計師總是喜歡修改整個API,並且重寫它們,迫使人們不得不修改底層的程式碼。

當我試圖兼顧Python 3.0和Python 2.7兩個版本時,儘管Pyhton是一個相對穩定的版本,但我還是感到很煩。

在許多情況下,新的工具都沒有得到十足的鍛鍊。例如,Node.js的確非常快,但只有在你重新學習了關於建立程式時死鎖的所有知識後才能做到。利用最新的工具是可以帶來很好的結果,但天下沒有免費午餐,並且會為此付出足夠多的學習成本。

相關文章