摘要:如果你也曾遭遇這樣的問題,或今后打算在編程社區里成長,請務必看看我接下來要說的東西如何正確地在編程社區提問絕大部分得不到滿意回答甚至引來不滿的問題,都是問題本身的原因。對新手來說,的可能性更大。
學編程難免遇到問題,遇到問題難免要上網求助。然而有過不少同學向我訴苦,說 在網上提問沒有人回答,有的還收到一些不是很友好的回復 。我自己也在經常上的論壇上目睹過類似的帖子。以至于有人說,程序員社區就是對新人不友好,不愿幫助新人,甚至說這是怕別人學會了來搶飯碗。
對此我想正名一下,程序員們大多很單純,而且這或許是 這個星球上最樂于分享的群體 。但在這個充滿理性、邏輯至上的群體里,有著自己一套規則。當一個不懂規則的人出現在群體中,往往會被“教做人”。
如果你也曾遭遇這樣的問題,或今后打算在編程社區里成長,請務必看看我接下來要說的東西:
如何正確地在編程社區提問?
絕大部分得不到滿意回答甚至引來不滿的問題,都是問題本身的原因。我本人在網上回答了這么多年問題,也經常是深感困擾。提出一個好問題,對于提問者和回答者,都有很大幫助。
提問前準備當你打算上網求助前,先問自己2個問題:
我 搜索 了沒有?
我 檢查 了沒有?
學編程,你不是一個人。幾乎所有你遇到的坑,都有前人踩過,搜索一下就會有答案。各種文檔、教程里的內容也都會包含在網頁結果中。搜索的關鍵是如何描述問題,所以要學會看報錯,能找到報錯中的關鍵信息。關于更多搜索的技巧,參考之前的文章《編程初學者如何使用搜索引擎》。
編程屆有兩個詞: RTFM 、 STFW ,含義我不解釋,自己去查。當有人在你問題下回復類似詞時,想想自己有沒有動手搜索過。
如果網上找不出你的問題,有幾種可能:1.關鍵詞選得不準確;2.你確實碰上了特殊情況;3.你犯了某些低級錯誤。對新手來說,3的可能性更大。所以請務必自己檢查下, 單詞拼寫對不對、標點是不是英文、縮進空格對不對、括號引號是否成對、文件路徑是否正確 ……
排除低級錯誤外,你還應當對錯誤做定位,盡量縮小范圍,增加必要的輸出。這在提問時也會極大方便回答者。而且我也經常跟人說,當你自己把必要的值都輸出出來看清楚后,通常問題已經很明顯了。關于 debug 的技巧,參考之前的文章《開發5分鐘,調試2小時 - 該如何debug?》
提問的內容一個好的問題,應當是 準確、具體、簡潔、完整 ,也就是既要清楚地表達了問題涉及的信息,又不要夾雜無關的噪音。
具體來說,通常應包括這幾種信息:
問題的表現
平臺 和 版本
輸出的 報錯信息
相關部分的 代碼
最好還附上你的 屏幕截圖 (避免你沒意識到的錯誤)以及中間變量的 輸出 (方便回答者,同時也說明你自己嘗試過)。
特別說一下附上的代碼。對新手來說,最好 同時提供截圖和代碼文字 ,截圖是展示電腦上的真實情況,文字是方便別人復現。如果你的代碼短,就全部發上;如果是很多代碼文件的項目,請自己先做初步的定位,只發關鍵部分的代碼。
如果你是在論壇、問答網站上發帖,取個好標題很重要。 把問題在標題里簡要描述清楚 遠好過“求助!在線等!挺急的”這種無意義的標題。
提問的形式提問時,要選擇 合適的地方,說合適的話 。
比如你在一個進階論壇中問初學者的問題,往往會遭到排斥。反過來也不合適。比較可惜的是,在編程屆,進階、深入的論壇更多,初學者論壇則較少。所以如果你愿意, 歡迎來我們的論壇提問 ,當然別忘了上面說的幾點。
而至于什么才是合適的話,這個比較難把握。總的來說, 禮貌永遠是好的 ,沒人愿意搭理傲慢、粗魯的提問。但有時候, 效率比禮貌更重要 。比如 StackOverflow 就禁止打招呼、感謝,因為這會帶來無效信息。你只需要精確描述問題、采納優秀回答即可。同樣,當你給別人提問時,直接了當地說明問題,絕對不要一句“你好,在嗎?”,等到回復再來一句“我可不可以問你一個問題?”這樣留言。或許你覺得這是禮貌,但對于別人來說,本來一次就可以回復的事情,硬生生被拖成幾個小時,可能根本就不理你了。
而當你發布在網上的問題最終被解決后, 在問題后附上解法說明 ,按社區規則 采納/點贊 有用的答案,是值得推薦的做法。對于回答者來說,這比一句口頭贊賞更禮貌。
提問的禁忌上面說了些建議,如果你還不夠理解,那么請記住,不要像這樣提問:
搜一步就可以解決的問題 。比如“Python 里怎么讀取一個文件的內容?”
X-Y 問題 。所謂 X-Y 問題,就是你要解決 X 問題,你認為可以用 Y 方法解決,然后你就問怎么實現 Y,但其實 X 問題根本就有更合適的解法。比如“我怎么取一個字符串的后3位?”,而實際他想解決的是“怎樣獲取文件的文件類型?”
籠統而抽象的問題 。比如“我能不能學會 Python?”。這個問題被問的頻率很高,但這不該問別人,問你自己。
不要亂猜原因 ,甚至聲稱是別人代碼的 bug。你需要客觀描述和分析問題。比如“我一輸比10大的數就不對,是不是 Python 在我電腦上有問題?”
不要把多個問題混為一談 ,分清楚因果。代碼有不止一個錯誤是很正常的,如果別人的方法讓你的報錯發生變化,說明對上一個問題起了作用,這種情況需要進一步分析,而不是立刻回復一句“按照你的方法改了還是不行”。(這種屬于真的不禮貌,會讓回答者不想再理你)
在開放的論壇、討論組、問答網站,盡量 不要通過發私信、加好友 的方式來提問。(事實上,這種方式大多也無效)
不要妄想讓別人替你調試 bug、寫作業、開發。
一個糟糕問題的例子:
哪位懂Python的幫我看下這是什么問題?
(一張幾十行的代碼截圖)
一個好問題的例子:
我的程序里將輸入和變量比較大小,結果報錯,請問是為什么?
我是Python3
報錯:TypeError: "<" not supported between instances of "int" and "str"
(代碼+輸出的截屏、代碼文本)
一個更好問題的例子:
我的程序里將輸入和變量比較大小,結果報錯,請問是為什么?
我是 Windows 下的 Python 3.7
報錯:TypeError: "<" not supported between instances of "int" and "str"
提示是第11行:if answer < num:
我在前面加了 print,兩個變量都是有值的。
(代碼+輸出的截屏、代碼文本)
提問的本質還是思考 。如果你能提出一個好問題,必定是對問題思考后的結果。這對你本身也是一種練習。不思考就直接提問,既浪費了鍛煉的機會,也很難得到滿意答復。
從另一個角度來說,天下沒有免費的午餐(也許有,但必另有所圖),不要把別人回答你當做一件理所當然的事情。所以 請尊重別人的勞動,并盡可能讓別人樂于回答你 。 不要提糟糕的問題 就是最基本的要求。
說了這么多,你也不要因此而不想提問題。該問的還是得問, 要敢于提問和討論 ,甚至要上 StackOverflow 等英語網站去問。不然怎么提高自己?不但要問,還要回答, “教”是最好的“學” 。當你能向別人解釋清楚一個東西時,才是你真的理解了它。既回饋了社區,又提升了自己,何樂而不為?
Crossin的編程教室永遠歡迎好問題。
最后,編程有篇很經典的文章,推薦給大家:
How To Ask Questions The Smart Way
http://www.catb.org/~esr/faqs/smart-questions.html
【中文版】 提問的智慧
https://github.com/FredWe/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md
上述這一切,不僅針對編程。
════
其他文章及回答:
如何自學Python | 新手引導 | 精選Python問答 | Python單詞表 | 人工智能 | 嘻哈 | 爬蟲 | 我用Python | 高考 | requests | AI平臺 | 計算機視覺
歡迎搜索及關注: Crossin的編程教室
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42634.html
摘要:原文鏈接恰當地學習適合第一次編程和非的程序員持續時間到周前提無需編程經驗繼續下面的課程。如果你沒有足夠的時間在周內完成全部的章節,學習時間盡力不要超過周。你還不是一個絕地武士,必須持續使用你最新學到的知識和技能,盡可能地經常持續學習和提高。 原文鏈接:How to Learn JavaScript Properly 恰當地學習 JavaScript (適合第一次編程和非 JavaSc...
摘要:用戶社區的使用用戶社區為實名制社區,在提問回復或發文評論前必須綁定手機號才能夠正常發帖。官方有權對灌水違法違規不文明內容進行刪除。親愛的小伙伴你好!首先感謝你來到UCoud用戶社區,期待你的加入!UClub用戶社區旨在為UCloud用戶及廣大云計算愛好者提供一個開放的學習交流平臺。為了你能更好地使用UCloud用戶社區,請你花費3分鐘仔細閱讀,閱讀完成后將獲得10積分。UCloud用戶社區的...
Llama3-8B-Chinese-Chat 是基于 Meta-Llama-3-8B-Instruct 模型通過 ORPO進行微調的中文聊天模型。與原始的 Meta-Llama-3-8B-Instruct 模型相比,此模型顯著減少了中文問題英文回答"和混合中英文回答的問題。此外,相較于原模型,新模型在回答中大量減少了表情符號的使用,使得回應更加正式。與 Llama-3-8B-nsturc...
閱讀 2831·2023-04-26 02:23
閱讀 1570·2021-11-11 16:55
閱讀 3149·2021-10-19 11:47
閱讀 3352·2021-09-22 15:15
閱讀 1975·2019-08-30 15:55
閱讀 1033·2019-08-29 15:43
閱讀 1288·2019-08-29 13:16
閱讀 2188·2019-08-29 12:38