編程中如何提問?

問一下各位大佬 keras怎麼才能每個epoch測試一下test集的損失?

想問問大神們,GPU的TF怎麼裝呀?有教程嗎?

你覺得國內機器學習相關的研究生,19年以後好找工作么(比如演算法工程師,演算法研究院這種)?我看他們說競爭激烈,AI方向博士的申請都擠爆了,說實話有點虛????

很抱歉打擾你……萬分感謝!本人某985機械本碩,研究生做的都是偏軟體的(二次開發.工業軟體開發)自己在學前端後端之類的東西……好好學編程的東西以後進互聯網能行嗎……會不會因為是機械學院的把我fail了

以上的問題屬於提問的錯誤示範,已經司空見慣,見怪不怪了。

提問是一門溝通的技術,沒人能在不知情的情況下給出你比較好的建議。

很多問題在提問的過程中自查就發現了問題所在。我常常看到有人在群里問問題,然後一群人圍著一個人,「你把XXX調出來看看」「你把XXX改一下」。這對大多數人來說是時間上的損失,對提問者和回答者雙方都是凈虧損的。

我先給一個GTD里的很虛的東西:

5樓視野:目的和原則。

4樓視野:願景。

3樓視野:目標。

2樓視野:關注點及責任範圍。

1樓視野:當前項目。

這是一個從宏觀抽象的角度到細微具體過程的思路,是一種自上而下的解決問題的辦法,也常常應用在投資、諮詢等相關行業中。這裡我們就用來給出一個通用的準則,細化一下也可以用於編程。

細化到提問里,這裡給出一個提問的過程,請在提問時候嚴格遵守以下五個流程,熟悉後只要思路不變,可以有無數的提問方法(這裡就限制死了,請按照這個格式填表格的形式來提問):

  1. 描述你的需求、做這個需求的原因(什麼是需求?做這個需求能得到什麼?)
  2. 描述你的實現思路(想怎麼做這個事情)
  3. 描述具體的實現過程(相對於思路更細節更具體的東西)
  4. 描述遇到的問題,得到的一切反饋(在編程中可以理解為各種信息,正確的、錯誤的)
  5. 所有涉及的最基本的具體信息(編程中就是所有代碼)

五步原則在編程提問中的解釋:

1、描述你的需求、做這個需求的原因(什麼是需求?做這個需求能得到什麼?)

你的做法可能是錯誤的,給出原因可以幫助他人發現你南轅北轍的解決方案。你的需求可能是錯誤的,給出原因可以幫助他人發現你錯誤的需求。

2、為什麼要描述你的實現思路(想怎麼做這個事情)

描述思路有助於他人搞懂你你正在做的事情、搞懂你遇到的問題

你解決問題的思路可能是錯的,描述清楚有助於發現錯誤,也有助於幫助他人理解你的角度

3、為什麼要描述具體的實現過程(相對於思路更細節更具體的東西)

描述實現過程有助於幫助他人理解你的具體問題

4、為什麼要描述遇到的問題,得到的一切反饋(在編程中可以理解為各種信息,正確的、錯誤的)

對具體信息的描述可以幫助他人分析具體問題,所以要給出錯誤的具體、完整的信息,而不是殘缺的截圖或者零散的幾句描述,這樣起不到任何作用

5、為什麼要貼出最基本的信息(編程中就是所有代碼)

如果不盡量給出完整、簡化、可運行、可重現的代碼,他人很難定位具體問題,也就無從解決問題了


錯誤示例:

很抱歉打擾你……萬分感謝!本人某985機械本碩,研究生做的都是偏軟體的(二次開發.工業軟體開發)自己在學前端後端之類的東西……好好學編程的東西以後進互聯網能行嗎……會不會因為是機械學院的把我fail了

正確示例:

0、客套之類的

1、想做前端開發,因為錢很多,我喜歡編程,我覺得性價比比機械高,認真學習編程可以進入互聯網行業做開發/測試/運維工程師么?

2、我想實現的思路是:

根據在某些網站上的求職信息,發現應該掌握知識A、B、C、D、E、F、G

3、實現的過程是:

A:學習某某本書籍、看某某開源庫、自己動手做XXX

B:學習某某本書籍、看某某開源庫、自己動手做XXX

C:學習某某本書籍、看某某開源庫、自己動手做XXX

·······

4、遇到的問題和反饋信息:

在XXX過程中我遇到了XXX的問題,得到的XXX信息是XXX

在XXX過程中我遇到了XXX的問題,得到的XXX信息是XXX

在XXX過程中我遇到了XXX的問題,得到的XXX信息是XXX

5、最基本的信息:

我是某某高效某某專業的XXX

之前做過XXX

拿過XXX數學競賽獎

英語能力XXXX

這五步過程中你要想做出得到人認真答覆的提問,需要準備很多的工作,使用搜索引擎查閱相關的信息,去找一些專業人士請教一些基本的知識等等等等,只有這樣才能得到有效的建議。而不是簡單隨口的問一句。

按照五步自查的方式,可以自己獨立解決80%以上的問題。先自查,再問別人。

有效的建議:

看了你的XXX,結合我自身的經驗,XXX可能是一個好的選擇,XXX的經歷是XXX的,而XXX是XXX的,所以兩者XXXX,你不妨考慮下XXX,我對此的看法比較樂觀。綜上,建議XXX。

而不是:

很抱歉打擾你……萬分感謝!本人某985機械本碩,研究生做的都是偏軟體的(二次開發.工業軟體開發)自己在學前端後端之類的東西……好好學編程的東西以後進互聯網能行嗎……會不會因為是機械學院的把我fail了。

我的答覆:能/好/行/對/嗯。


推薦閱讀:

Python · 決策樹(四)· 樹
Python 關於讀寫txt的問題?
Python 里為什麼函數可以返回一個函數內部定義的函數?
婚姻狀況與違約率
python 中文亂碼出現,不知道是什麼原因?

TAG:提問技巧 | 編程 | Python |