軟件開發工做充滿了挑戰性。人無完人,對於程序員來講,在線翻車是在所不免的。有些人很淡定,也有一些人會感到生氣、沮喪、不安或氣餒。前端
在修復 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. 「扔掉這個,我要從頭開始」
有時候,在花了幾個小時嘗試某個解決方案以後,你會將工做文件移動到存檔目錄(或刪除它們),而後從頭開始。
以前幾個小時的辛苦工做幾乎沒獲得有什麼回報,因此作出這個決定是很艱難的。但當我陷入困境時,從新開始每每正是完成一個項目所須要作的事情。
看看,這是否是你本身
另外若是你想更好的提高你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這裏或許能夠幫到你~
歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!
免費學習資料: