程序員在工作中會遇到形形色色的問題,提問題是一種能力,如何問問題是一門學問,小編在這里分享一些感受和方法。
問題類型和提問技巧
一、有“標準”答案或明確定義
這類問題就不要問了,自己找答案。
例如:
①考研都考什么?計算機軟件資格水平考試都考什么?
這種就是屬于有“標準”答案,自己去找考試大綱就可以。
②sprintf參數都是什么意思?
這種就是屬于有明確定義的,可以通過手冊、書本、搜索獲取答案。
二、無標準(“思考”型、“實踐”型、“排查”型、“經驗”型)
1.“思考”型
一些算法題或者需要提供解決方案的。
例如:
如何實現一個隨機播放音樂,要求能夠方便查看上一首播放的是什么,方便交換即將播放的歌曲順序?
這種問題一般要注意:
先搜索,一般常見的算法或問題,別人可能遇到過,已經分享出來了。
問的時候注意先提供自己的思路,如果是需要提供解決方案的,那么要把環境問題同時說明清楚。
最好是到開放型的地方,比如論壇、QQ群等咨詢討論,多個人討論,方便開拓思維。
2.“實踐”型
例如:
學校那些編程實踐作業或試題,就是那一類提問題的人甚至都不理解問題是什么,就只要答案的,而且還需要解決問題的人寫代碼。
針對這類問題的建議,就是怎么樣把題目細化,轉換成思考型問題,然后按照思考型問題提問。如果沒有的話,除了親朋好友基本上沒人能幫忙解決,誰有空編寫一大堆代碼然后把文件給你,為了達到目的或許付費請人幫忙是可行的。
3.“排查”型
這類問題很多,例如代碼或服務器出現問題。
舉個例子:
程序部署到Linux上后,頁面出現中文亂碼,是不是中間件的配置出現問題了?
服務器負載、內存、CPU沒問題,遠程SSH鏈接也正常,但是網頁打開很慢,可能是什么出問題了?
這種問題一般要注意:
找找Web服務器日志、系統日志的錯誤信息,或者程序報錯信息。先通過錯誤信息搜索,別人可能遇到過,已經分享出來了。
問題描述清楚,把環境同時說明清楚。
這類問題,經常需要斷點調試、各種測試才能最終定位問題。先嘗試在論壇或QQ群問,大家會提供的都是一些經驗想法,去嘗試下,如果還是解決不了,那么只能就是針對性找朋友幫忙解決,甚至需要授權登錄服務器或者遠程連接到你的電腦,所以這種可信任的朋友就看你能不能找得到。“朋友”是一種資源,平時注意積累。
4.“經驗”型
這類問題,我遇到最多。典型的就是問職業規劃,專業選擇。能不能學會,如何學習,該不該考研?還有就是問經驗,比如各類考試經驗。
這類問題,可以選擇跟導師、師兄師姐、職場前輩或者網絡上相關領域牛人咨詢。
問的時候,把自己的情況和背景信息介紹清楚。
這類問題不要經常問,大概搞清楚后,做完選擇就開始認真去學習。問多了整天就浪費時間做選擇、學習方法、總結經驗的,其實對真正學習知識幫助有限。
比如有些人整體就在問到底學習Java用哪一本書好,有的說這本不好。其實如果有人推薦了一本書,你就先看,等看一部分自己就有感覺了,實在看不下去再換,如果看得下去就先不要換了,認真去學習才是最重要的。
問問題其它注意事項
1、不要問調查式問題,特別是向陌生網絡朋友提問問題,應該先自報一下自己的情況和背景,切忌調查式的提問。別一上來就開始調查:你是學什么的?你做哪方面開發?你在北京嗎?…
2、不要先問:“在嗎?”或者很粗糙的問題,應該直接把問題具體化。
因為你不確定對方什么時候會回復,如果你發這種消息過去,對方看到可能直接忽略不回復或者根據粗糙的問題給一點建議,或者回復一個:在啊。然后對方回復的時候,你又不在線或者沒辦法馬上跟對方聊上,那么對方還在等你的下一步消息,你半天以后才回復,來回幾次,對方就會覺得你很煩。
我最煩的問題是:問了一個在嗎,然后回復過去之后,對方就不見人影,等了半天才突然上來,然后又來了一個很粗糙的問題或者調查式問題:你做哪方面開發?真想罵過去,你妹的,你誰啊?我又不認識你,你能不能先自我介紹一下,然后直接描述清楚問題。
3、周全準備問題。根據上述問題分類,描述清楚問題的背景、環境等信息以及你的理解和思考。
提問題是一種智慧,每個人都應該學會問問題。