程式設計師翻車時的 30 種常見反應!第21個深有感觸

軟體開發工作充滿了挑戰性。人無完人,對於程式設計師來說,寫出有 bug 的程式碼是在所難免的。有些人很淡定,也有一些人會感到生氣、沮喪、不安或氣餒。在修復 bug 的過程中我們都經歷了什麼?這個值得我們一探究竟。

程式設計師翻車時的 30 種常見反應!第21個深有感觸

以下列出了程式設計師在修復 bug 時可能會說的一些話或者想法。我敢說很多程式設計師都曾經歷過程式設計的艱辛,但在事後都會一笑而過。

1. “我不知道該把它刪掉還是該重寫”

看著舊程式碼,你總有一種想要重寫它們的衝動。醜陋的邏輯語句和囉嗦的語法極大降低了程式碼可讀性!但是,如果程式碼跑得好好的,為什麼要去修改它們呢?我經常會陷入這樣的兩難境地,而且我相信這也困擾著很多其他程式設計師。

2. “我

先到

GitHub 上找個框架”

我想大多數人都知道 GitHub,這個網站每天都會有很多開源專案釋出出來。開發者們加入這個網站,給已有的專案拉取分支,在 wiki 上討論,或者建立自己的程式碼庫。網站提供了很多很好的外掛和模板,可以被用在各種各樣的專案中。

3. “為什麼這個指令碼要用這麼多庫?”

如果你要使用熱門的程式語言,比如 Java 和 Objective-C,那麼專案依賴庫的數量會變得非常大。在採用一個需要大量依賴項的框架時這一點就變得非常明顯。一些 JavaScript 外掛也需要大量的額外檔案。有時候這些雜亂的東西會讓人厭煩,但至少它們是可以用的!

4. “網上一定能找到解決方案”

在碰到難題時,我的第一反應是上網。很多程式設計師會在論壇上問問題,這些問題最終會得到解答。谷歌非常善於挑選與你的問題相關的關鍵字,併為你提供這些有用論壇帖子。但可惜的是,有時候對於某個特定的問題並沒有太多的資訊。

5. “這個功能有沒有對應的外掛?”

為什麼要重複發明輪子呢?要擴充套件使用者介面、程式或網站,外掛是一種很好的方式。另外,外掛還能提供定製化功能。如果找不到相應的外掛,為什麼不自己開發一個?

6. “網站沒問題,就怕遇到 IE”

在 IE 中渲染網頁給我們帶來了很多考驗和磨難,這個就不用多說了。從 IE 5。5 到 IE 9/IE 10,人們一直在為獲得更好的瀏覽器支援而做著艱苦卓絕的鬥爭。Web 開發人員可能很擔心網頁除錯,因為在 IE6 中開啟一個網頁可能就是一場噩夢。值得慶幸的是,那些日子正慢慢成為過去。

7. “這條邏輯語句的邏輯性不是很強”

if/else 迴圈、for 迴圈、while 迴圈、do 迴圈,這些都是邏輯語句,除了這些之外還有很多。在閱讀示例程式碼時,我會反覆回想我程式碼裡的邏輯應該怎樣寫更好。大量的非運算子和比較符號會讓你暈頭轉向。所以,我會經常回頭去修改之前寫好的邏輯。

8. “半小時寫的函式,花兩個小時除錯”

你一股腦兒寫了一個函式,然後函式輸出了一個致命的錯誤。為了找到問題所在,你不得不把其他程式碼刪掉,只留下出問題的那幾行程式碼。當你最終找到問題並把它修復,你會感到筋疲力盡,但同時也鬆了一口氣。

9. “在看了幾篇文章之後,我才意識到之前的做法是錯的”

我通常喜歡用自己的方式做事,但如果事情沒有按照原計劃進行,可能就會有麻煩。有好多次,我開始一個專案遇到了麻煩,然後開始在網上搜部落格尋找解決方案。最後我發現我的方法是錯誤的,重新開始也許會更容易些!所以,在一開始先做一些調研,從長遠來看肯定會節省時間。

10. “StackOverflow 上好人多,他們會幫我的”

我已經記不清有多少次是透過 StackOverflow 解決難題的。這個社群有很多有才又友好的人,如果你願意尋求幫助,他們就會幫助你。在所有的線上社群中,StackOverflow 無疑是能夠提供最廣泛支援的地方。

11. “少了右括號,麻煩一大堆”

除錯程式碼就是跳來跳去,向前兩步,後退一步,再向前兩步,如此往復。花上幾個小時盯著程式碼看,查詢函式名或變數作用域中的錯誤,最後卻發現少了右括號,那種感覺很怪異。所有的時間都浪費在了一個很小的語法錯誤上,感覺自己真是個天才,也是個傻瓜。

12. “休息一下”

有時候你需要站起來,離開顯示器一會兒。在敲了幾個小時的鍵盤之後,休息一會兒肯定有助於你思考。大多數的健康指南建議每 30 到 60 分鐘休息一次,但這完全取決於你的需要。如果總是在半途中斷,你可能也會感到惱怒。

13. “手頭的專案先停下,稍後再繼續”

除了離開電腦,這是另一種休息方式。或許你還有其它工作可以做,那就去做吧。這是一種更好的分配時間和資源的方式,特別是如果你已經花了 5 個小時還解決不了一個問題的時候。

14. “有沒有能夠激發我程式設計能力的古典音樂?”

有一種觀點認為,在植物生長的初期,播放古典音樂有助於植物的生長。我個人很喜歡古典音樂複雜的音符和音樂理論。爵士樂、鋼琴、大樂隊,古典音樂在人類文化中都佔有一席之地。那麼,在程式設計時聽音樂真的能讓你在除錯程式碼時變得更聰明嗎?可能不會,但希望它也不會讓你變得更笨。

15. “或許現在是檢驗鮑爾默巔峰理論的好時機”

該理論認為,程式設計師在攝入一定數量的酒精後,其編碼能力將達到巔峰。這是由史蒂夫·鮑爾默的古怪行為引起的,它可能只是一個酒鬼的胡言亂語。不過這有點諷刺,因為鮑爾默在微軟並不是一名程式設計師。我想我們得等別人來試驗一下這個理論。

16. “誰動了我的程式碼?”

這聽起來就像是一種妄想症,但有時你不得不懷疑,正當你忙著補覺時,是誰在寫了這些程式碼。過去幾周或幾個月忙的專案讓你感到沮喪。有時候你會不記得自己往程式碼庫裡新增過東西——甚至是上週剛剛檢視過的專案!

17. “我不知道這是什麼意思”

最糟糕的情況是,你一邊閱讀原始碼,一邊不知道該做點什麼。可能是你自己的專案,也可能是其他人的專案,但問題是一樣的。現在,你必須決定是花更多的時間查詢替代方案,還是花時間分析指令碼,把它看懂。

18. “我要在谷歌上搜一下這個錯誤訊息”

在做了多年 PHP 開發之後,我不得不說谷歌是我的好朋友。如果你使用的是其它程式語言,比如 Objective-C、C++、Java、Python 等,應該也會有同樣的體會。錯誤訊息試圖為我們提供幫助,但除非你已經記住了各種錯誤程式碼的含義,否則它們看起來更像是經過翻譯的計算機語言。值得慶幸的是,網上有很多內容可以幫助我們確定這些錯誤訊息到底是什麼意思。

19. “今天應該到此為止,但我真的很想解決這個問題!”

我們都知道,當你想要放棄一件事情,會有一種挫敗感,同時又覺得放棄並不是正確的選擇。你希望繼續前進,並嘗試新的解決方案。但如果你發現你又因此浪費了一個小時呢?我經常遇到這種情況,這讓人感到非常沮喪。

20. “天哪,我為什麼沒寫註釋?”

在寫前端 HTML/CSS/JS 程式碼時,並不總是需要寫註釋。但對於複雜一些的指令碼和程式,就需要某種型別的註釋,以便你在幾個月後甚至幾年後回過頭來檢視。有時候你會忘記給函式及其引數、輸出格式和其他基本資料添加註釋。當出現錯誤時,你需要除錯整個指令碼才能找到解決方案時,這無疑會給你添亂。這個時候你就會想,如果當初加一些有用的註釋就好了。

21. “剛才它還能執行……”

開發程式最令人感到沮喪的,可能是什麼都沒做——既沒有更新,也沒有修改程式碼——程式卻突然不能正常運行了。我發誓,這種事情經常發生。也許是因為其他程式正在執行舊的版本?有時候,更新一小段程式碼就會導致整個程式崩潰,然後只能恢復到最近的可執行版本,並從那裡接著往下開發。

22. “就因為忘記加個分號,整個程式都崩潰了”

我用過的每一種程式語言幾乎都需要行終止符,當然並不是所有的都需要,但 C/C++ 族程式語言通常是這樣的。如果你忘記新增結束分號,只是一個無心的錯誤,但解析器不理解這一點,它會無情地丟擲一個致命錯誤。然後,你必須再花 20 分鐘來檢視程式碼,最後你發現缺少了一個分號。也許這就是除錯的“樂趣”。

23. “我想知道如果請人來修復我犯下的錯誤要花多少錢?”

聘請其他開發者來修復問題,這種想法很誘人,但顯然財務上不允許。另外,如果你不親自動手,怎麼能從這些錯誤中吸取到教訓呢?在經歷了多次失敗之後,當你最終對一個程式設計概念有了透徹的理解,你才會感覺良好,但這並不能阻止我的腦子裡出現想要聘請更多人的想法。

24. “快速瀏覽一下 Hacker News 肯定能提高工作效率”

很多程式設計師喜歡在 Hacker News 上了解與軟體及初創公司相關的社會新聞。這個網站上有很多關於自由職業、時間管理、軟體開發、新公司啟動和融資的資訊。雖然瀏覽這個網站會給你帶來高效的感覺,但它也在消耗你的時間。每隔幾個小時休息一下,趁這個時候去看看新聞或許會更好。

25. “這個 API 怎麼能沒有文件!”

如果你使用的外掛或框架沒有文件,那麼最令人感到沮喪的是你必須自己深入檢視它們的原始碼。我喜歡那些開發人員會花時間專門設計文件的專案。文件解釋了所有可用的引數和選項,甚至可能還會提供一些示例程式碼片段。但遺憾的是,並不是所有的專案都會這樣。最簡單的方法就是遠離那些沒有詳細文件的專案,這樣你就不會那麼痛苦了。

26. “我多麼希望給資料庫做過備份……”

在開發和除錯程式碼時,我並不總是會想到給資料庫做備份。但是,資料備份提供了一個保障,在做出某些變更之前可以及時回退。記住,請在本地保留網站專案檔案和資料庫的副本,以備不時之需!這可能是一項煩人的任務,但絕對沒有重建被損壞的 SQL 資料庫那麼煩人。

27. “要解決這個問題,最快的方案是什麼?”

在經過了幾個小時毫無頭緒的工作之後,很明顯,你可能需要嘗試一種新的方法。在設計介面之前,程式設計師希望先讓功能正常執行起來。確定最快速、最準確的解決方案,並保證 100% 的時間都可以正常執行,然後繼續做那些錦上添花的東西。

28. “我打賭,更新新版本就可以解決這個問題”

負責管理程式語言依賴項和外掛的團隊不需要經常釋出新版本。有時候,更新 PHP/Ruby/Python/SQL 版本就可以解決將檔案從本地傳輸到伺服器時的除錯問題。本地更新很少有助於修復原始碼中的 bug,除非你的版本已經過時。值得一試!

29. “我應該學習 Git……但我想從下週開始”

版本控制系統 Git 在程式設計師中非常流行,它的學習曲線比其他競爭對手要容易些,被用於管理很多線上程式碼倉庫,比如 Github 和 Bitbucket。開發人員之所以想要延後學習,是因為對於初學者來說,它的入門曲線非常陡峭。但是,一旦理解了它的基本命令,Git 就變得非常簡單了。

30. “扔掉這個,我要從頭開始”

有時候,在花了幾個小時嘗試某個解決方案之後,你會將工作檔案移動到存檔目錄(或刪除它們),然後從頭開始。之前幾個小時的辛苦工作幾乎沒得到有什麼回報,所以做出這個決定是很艱難的。但當我陷入困境時,重新開始往往正是完成一個專案所需要做的事情。

看看,這是不是你自己?

程式設計師翻車時的 30 種常見反應!第21個深有感觸