答「路人甲」書

這篇文章的靈感由來是在Jeff Yeh的部落格上某篇文章的回應,有人抱怨論壇的回答只是貼一些連結而來,題目上的「路人甲」只是藉該文回應者的名稱一用,泛指抱怨論壇回答者之人,並無特指某人之意,依照敝人的往例,如果路人甲們看了文章不爽也不用回應了,請先捫心自問檢討自己的態度才是王道。

       這篇文章的靈感由來是在Jeff Yeh的部落格上某篇文章的回應,有人抱怨論壇的回答只是貼一些連結而來,題目上的「路人甲」只是藉該文回應者的名稱一用,泛指抱怨論壇回答者之人,並無特指某人之意,依照敝人的往例,如果路人甲們看了文章不爽也不用回應了,請先捫心自問檢討自己的態度才是王道。

       此次聽到的抱怨是關於論壇回答者在回答之時貼網路連結這檔事,敝人實在不瞭解得到個連結有什麼好抱怨的,今天即使像我們一群有交情的朋友們互相討論問題,常也是只會得到個資料的連結;就好比我上次UAC的問題 ( 參考 卡到陰事件簿歡樂團圓大結局),卓大指點我兩個關於Process Monitor的連結,一篇是TechNet上的Windows Sysinternals 及實用工具、另一篇則是黑暗大的【茶包射手專欄】Process Monitor基本操作教學,剩下的呢?靠自己看看這工具怎麼使用,並且自己思考如何利用這工具來解決正在思索的問題,當我試出結果的時候,心中第一個想感謝的人就是卓大,因為他給的兩個連結讓我從迷霧之中找尋到方向,讓我省卻了很多瞎闖亂撞的時間。我和卓大的交情再如何也比論壇上互不相識的發問者與回答者間來得深一些吧?如果以路人甲們的心態,難不成我應該把整堆程式碼丟給卓大,然後蠻橫地叫卓大一定要幫我解決問題而且請給程式碼和詳細解說嗎?當然我們這些有交情的朋友們會私下直接提供程式碼發問,這和論壇有幾點不同,一則我們這些朋友們之間有足夠的交情,也夠瞭解如果對方走到這地步表示這問題的確需要深入研究;二則當我們這樣做的時候,通常之前已經花了一段時間交換意見,而這些解法可能都有些其它問題存在;而且我們知道對方也會不斷地繼續往下深究找出關鍵問題來討論,而不是丟給別人後就雙手一攤等著看別人幫自己做出來的成果。

       談到這邊轉過頭來說一下論壇的功能是什麼?發問者該怎麼用正確的心態理解論壇的功能?路人甲們的基本心態是:「論壇的功能是用來解決我的問題。」,論壇是解決問題的地方沒錯,但它更重要的一個功能是提倡學習,為何我會把「我的問題」四個字標成粗體?因為自私的路人甲們永遠只想到自己,於是就要求別人要一步一步地教學,最好還能圖文並茂,如果回答者只給個連結,不僅心生不滿,更有甚者還會大發脾氣。路人甲們,你們可曾思考過,這些在論壇上的回答者花費自己的時間、分享自己的經驗 (你以為不經努力就可以知道連結在哪裡且如何找到正確的連結嗎?) ,為你們解決工作上、課業上與學習上的問題,沒有一絲一毫的報酬,你們可曾重視自己的問題,並且對這些熱情的社群成員抱持感激的心理?我想路人甲們並不懂得感激,因為懂得感激的人不會抱怨這些熱情分享知識的人。

       為什麼會給連結,因為有幾種狀況:

       (1) 搜尋式的連結:這表示類似的問題在網路上已經有滿坑滿谷的文章和範例,發問者要不是搜尋不得其法就是根本連找都不想找,如果是前面的情況,這表示你應該看一下回答者示範給你看的關鍵字,學習著如何使用正確的搜尋方式;如果你是後者,你非但不該抱怨,反而應該要好好的調整自己的心態,因為你是個只想剽竊別人辛苦學習的結果,而不願意自我學習提升的人。

       (2) 文章式連結:文章式的連結通常是因為回答者對這個題目的範圍內曾經自己寫過或看過別人寫的文章,足堪發問者參考並學習,因此列出這個連結希望發問的人能就瞭解到相關問題中更大範圍的知識。基本上,要找出這些連結有賴於回答者平常對於各方文章的閱讀,也就是說回答者平時努力花費時間閱讀大量的資訊,你才有機會獲得這個連結,正因如此,你更該感謝這些人省卻了你搜尋資料所花費的時間,而不是老抱怨別人為什麼不乾脆告訴你答案就好。

       (3) MSDN文件庫連結:這種連結的出現多半是因為很多事情其實文件庫解釋的很清楚,甚至還有範例程式可看;另一個重點是,回答者會在問題中看出幾件事,第一個是發問者的問題可能和這個類別會有更多的牽扯,於是會給你類別的連結,希望發問者能仔細研讀相關資料,藉以一勞永逸地讓發問者可以一路自行解決完問題。我遇過很多這種事,往往我給了一個連結後,發問者連看都沒有看,恰巧有另一個回答者直接用程式碼回答了他這個問題,於是乎發問者就完全忽略我給的連結,而在三五天後這位發問者又會鬼打牆似的問出同一類型的問題 (基本上答案就在同一個類別的文件中,這情形尤以ADO.NET的問題發生最多),此後的過程就是不斷地原地打轉,因為發問者只抄別人的程式碼卻不願意花心思找出自己不懂的關鍵點。第二個情形其實是前述的變形,事實上我們在回答問題的時候會注意到發問者發問的軌跡,也許第一次我們採用了直接標出程式碼的方式給解答,但慢慢發現此發問者一直徘徊在類似的問題中,這時我們會警覺到發問者可能沒有深入瞭解此一類別的內容而是一直用瞎猜的方法在寫程式,所以就會提供出該類別的連結供參考。

       經過以上的說明,路人甲們可以瞭解其實給一個連結也不是這個簡單的事,如果這位回答者沒有花時間去搜尋並閱讀這些文件,還未必給的出這個連結,願意在各社群花時間解答問題的人多半是靠著一股熱情在支撐自己 (少數只會在論壇嘴砲的傢伙除外) ,面對路人甲們這種不知感激還怨聲載道的心態,除了打擊這些人回答的熱情和讓別人看不起你之外,沒有任何一絲的用處。如果你認為你上論壇是要學習,首先請改變自己的心態,想想你對這社群的貢獻在哪裡?你可曾無怨無悔地把自己大把的青春用來回答一個你不認識的人所提的問題?而非總是自私自利要求別人要明確地解決你的問題,回答的人花費時間幫你解決了你工作的問題,也沒有要求你要把薪水分給他啊,你的薪水還是進了自己的口袋啊,那還有什麼可抱怨的呢?

       結尾我想舉一個正向的例子 (開發AP無法在Vista跟Win7正常執行 ),這位發問者不僅能自我研究而且願意將結果分享給大家,這才是社群所重視的學習與分享。其實我對於C++已經退化到僅能稍微看懂程式碼的狀態,當我看到這個問題的時候,自己可以猜得出原因發生在哪裡,但我並沒有能力寫程式碼去解答這個問題,於是我去找出Win32 API中要使用哪個方法來解決 Session 0 Isolation的問題,而這位一黑洞一兄給了我一個很正面的回應態度,並且他自己也試著去解決這個問題,雖然他第一次的嘗試是失敗的,但正因發問者正面積極的態度,使得我不得不勉力而為來找出解決之道,最終的結局是美好的,這位一黑洞一兄也發揮了分享的精神把他自己研究的結果公開。很明顯地,當一個發問者他的學習態度是正面而積極的,使得社群的回答者認為他是要學習釣魚的方法而不是伸手就要現成的魚的時候,正面的互動就會產生,而社群精神的本質才能得以發揮。

       路人甲們!請好好檢視自己的心態,想想你為了社群貢獻了什麼?抱持著對別人的感激,才會有更多熱情的社群參與願意在論壇上與你對話,自私自利的行為從來就不是一個正確的心態,請先想清楚以後,再考慮你該不該放肆地批評那些靠著熱情不求報酬的人。