django開發時遇到問題的正確求助姿勢

追夢人物發表於2017-11-30

django部落格教程釋出以來,已有超過上萬名讀者學習了該教程。一些學習者跟隨教程順利地完成了個人部落格的搭建,但一直以來也不斷地收到讀者的評論留言、QQ 留言、郵件等求助資訊,他們被開發中的一些問題卡主了,並且不知道該如何解決。隨著教程閱讀者越來越多,我收到的求助資訊也越來越多。一個人的力量始終是有限的,我個人也難以回答所有求助者的問題。為此,我想向大家介紹一些當初我學習 django 時遇到問題如何有效求助的一些經驗,一些更容易得到解決方案的求助渠道,以及一些可供查閱的 django 資料等。

求助首選項:django 官方文件

我所遇到過的,以及我收到的很多新人的問題 70% 都能夠通過 django 的官方文件找到答案。但是為什麼還是有很多人會問這些在官方文件中可以找到答案的問題呢?原因他們對官方文件不熟悉。學習 django 開發,官方文件是最為全面、權威的學習資料。我的建議是在簡單地入門了 django 之後,一定要花費一定量的時間開始通讀官方文件的內容。也許你害怕內容太多,但我們要做的是通讀文件,知道文件的哪一部分講了一個什麼問題,對 django 相關元件的文件說明有一個鳥瞰式的掌握,這樣當遇到某個問題時你就能想起這個問題曾在文件的某個部分有過討論,因此可以快速定位到文件的相關部分,找到問題的解決方案。同理,對於你正在使用的第三方庫,文件依然是首選求助物件。

當然,我瞭解絕大部分人不想閱讀官方文件的原因不是被龐大的內容量嚇退的,而是被英語嚇退的。但是,在目前這樣的技術環境下,熟練閱讀英文技術文件和書籍是一個合格的開發者必備的技能之一。如果英語對你來說是一個大的挑戰,你應該為此制定一個長期的英語學習計劃,而不該急功近利地想快速掌握一門開發的技術。如果專案緊急,你可以嘗試先求助一些中文翻譯文件,例如 django 有 1.8 的中文文件(我不貼地址,希望你閱讀本文後已經學到如何尋找資料的技巧)。但是注意,大部分英文文件翻譯都是熱心的網友貢獻的,一是文件更新緩慢,翻譯不全,二是翻譯人員眾多,錯誤在所難免,因此一定不能長期依賴,提高自身英文水平才是硬道理。

求助搜尋引擎

開發過程中不可避免的會遇到很多問題,這時候要善於利用社群和搜尋引擎來幫助自己解決問題。千萬不要一個人關起門來和問題死磕,有時候卡了你幾天不得解的問題,可能經他人一句話提醒就會是使你茅塞頓開。在這裡分享一下我遇到問題通常是如何求助的。

首先最重要的一點就是要拋棄百度。從我個人經驗來看,django 開發的大部分問題很難在百度搜到答案。與之相比的是 Google,我通常遇到問題會使用 Google 搜尋,使用關鍵字 django + 問題簡短的英文描述,90% 以上的問題都可以在 Google 的搜尋結果裡找到解決方案,幾乎不用求助於他人。如果你沒有適當的科學上網的方法,也可以使用雅虎搜尋或者必應搜尋代替。

當然,我知道很多人不是不想使用 Google,而是不知道問題對應的關鍵字該如何用英語表達。還是那句話,在目前這樣的技術環境下,熟練閱讀英文技術文件和書籍是一個合格的開發者必備的技能之一。如果英語對你來說是一個大的挑戰,你應該為此制定一個長期的英語學習計劃。如果情況緊急,你也可以嘗試使用一些翻譯軟體,Google 的搜尋一大好處是能夠幫你自動糾正語法錯誤。例如曾今一個朋友問我 django 該如何顯示圖片,顯然這種問題問 Google 比問我更容易得到更快更好的答案,只需要在搜尋框輸入:how to display pictures in django,你會看到排名靠前的基本都是你所需要的答案。

求助開發者問答社群

不知道 stackoverflow 的開發者不是一個好的開發者,有一句話叫面向 stackoverflow 程式設計,甚至還有人出版從如何 stackoverflow copy 程式碼到專案上線的過程,stackoverflow 對開發者的重要性由此可見一般。通常,我們使用第二步提及的搜尋引擎搜尋到的答案基本來自 stackoverflow。但如果遇到搜尋引擎都無法解決的問題,你就可以嘗試在 stackoverflow 上提問,只要問題描述的很好(見下文關於如何正確提問),基本上很快就能得到熱心的來自世界各地的開發者的解答。

我任然知道很多人不想使用 stackoverflow 的原因,但還是那句話,重要的事情說三遍:在目前這樣的技術環境下,熟練閱讀英文技術文件和書籍是一個合格的開發者必備的技能之一。如果英語對你來說是一個大的挑戰,你應該為此制定一個長期的英語學習計劃。

短期來說,可以尋找一些國內的問答社群。例如可以把 segmentfault 看作是國內版的 stackoverflow,儘管其獲取解答的時效性可能不及 stackoverflow。還有國內的技術社群 v2ex 的 Python 板塊,也是國內較為活躍,大牛雲集的地方。但在這些地方,請討論一些有價值的問題,而不是 stupid question。還有為了解決 django 開發者的問題,我搭建一個論壇 pythonzhcn,我推薦在以上一些地方發表了問題後,可以轉載到論壇上來,一些朋友(包括我)看到了的話有時間就可以為你提供解答。

求助有經驗的開發者

如果你使用了以上方法任然無法獲得問題的解決方案,那說明你這個問題有一定挑戰性了。你可以請教一些有經驗的人,或者也歡迎把問題發給我,如果我有能力和時間的話,會和你一起探討這個問題。但請確保正確的提問方式,只有問題越清晰明確,資訊越完整,回答者才能儘快地使用他們的經驗為你尋找解決方案,否則在來回的溝通過程中會浪費大量的時間(如何正確提問請看下方)。

如何正確提問

正確的提問就是要保證問題的目的性、完整性、清晰性、明確性、和資訊量。當然如何區分一個問題是否是好問題難以找到一個合適的標準,我們不妨從反面來定義這個問題,以下一些問題我相信你一看就知道是有問題的,但我任然經常收到此類讓我不知所措的問題:

我執行開發伺服器,但總是報錯,執行不起來,我該怎麼辦?

我在執行程式後提示 XX 異常,這是怎麼回事呀?

我寫好了程式碼,但是看不到你所說的效果是怎麼回事?

我該怎麼在伺服器上建立一個檔案並寫入內容?

諸如此類,總之以上問題的通病就是資訊不完整,或者只有一個問題的籠統描述,或者就只有一個程式的異常報錯資訊,我相信這種問題即使是相關技術的創始人恐怕也很難回答,更別說我這種只比你多學了一點點東西的老菜鳥了。

推薦閱讀這一篇文章:能有效解決問題的提問方法


最後,如果有 Python 和 Django 相關的問題,歡迎和我討論交流,當然前提是你已經按照這篇文章的指導對問題進行了正確的處理。

我的個人部落格:追夢人物的部落格

相關文章