好的技術文章應該讓讀者更自信而不是更自卑


  今天朋友給我微博留言,說我的《大話設計模式》被拍磚了。果不其然,確實是在《放過設計模式吧》的評論第8條中有。還好博主並沒有在博文中點名我的書,還算是留了點客氣。不過如此轟動的一篇博文(博客園編輯首頁推薦),但卻傳達了一些讓初學者困惑的信息——我們初學者在不知道對錯的情況下到底還要不要寫設計模式的心得文章?針對此我寫了一篇吐槽的博文,說說我的想法。

       我對《放過設計模式吧》文中所說的技術內容絕大部分認同,這點需要事先明確。作者談了很多他對設計模式的理解和現在網上很多初學者誤用設計模式的現象,這些都是可取的。比如將GoF的《設計模式:可復用面向對象軟件的基礎》應該翻譯為《面向對象設計23招》這樣的趣解,比如說策略模式和橋接模式的根本不應該因為UML圖的類似而就認為他們容易混淆,他們根本就是講了兩回事等。作者對設計模式理解的高度應該是足夠了。

       但閱讀完畢后,作為一個讀者,特別是站在一個初學者的角度,這篇文章卻讓我感覺很壓抑,有一種“他對設計模式理解得這么深,讓我都不敢再去討論設計模式了,真心怕挨罵呀!”的感覺。我不知道別的讀者是否是這樣,不過對於閱讀本文的那些非擅長設計模式的讀者來說,應該有類似的想法。

       我一直有一個觀點:“好的技術文章應該讓讀者更自信而不是更自卑”。自信是指讀者讀完之后,感覺很有收獲,心情愉悅,有興趣可以試着照做。自卑是指讀完之后,甚為不爽,這個看不懂,那個不理解,有些觀點與作者不同,作者解釋不能說服自己,感覺看着沒勁,學着費力。

       這篇文章沒有明確的給出最終應該怎么做的建議,給人的感覺可能是:“如果你沒有徹底研究明白GoF的《設計模式》之前,最好不要寫文章來獻丑,那真是很罪惡的。”(希望作者能夠聲明你其實不是這樣的想法,我願意為這個推論道歉)。難道因為知識理解可能有錯誤,所以就不要寫博客和發表評論了?我覺得不應該是這樣的。

       虛構一個在小學手工課上給小朋友講課的場景:今天我們來學習一個新的工具——錘子。錘子是敲打物體使其移動或變形的工具。最常用來敲釘子,矯正或是將物件敲開(錘子的百度百科定義)。……等老師介紹完錘子的作用后,讓小朋友練習。面對錯誤使用錘子的小朋友,老師的可能會有兩種態度。

       第一種:現在你們手頭都有一把錘子,你們只可以用它來敲釘子。錘子就是用來敲釘子的,不允許敲別的東西,那樣是不對的。……怎么搞的,你怎么可以用它來敲桌子呢,錘子是用來敲釘子的,你太笨了!……有部分違規的小朋友在挨了批評后失去了使用錘子的信心,不玩它了。還有部分小朋友依然用錘子做着違規的事情,他的眼里所有的物品都成了“釘子”,甚至是用來敲人(鄙視肖傳國雇人用錘子傷人),這樣的小朋友被老師嚴厲地批評。整節課下來,大部分小朋友都學會了正確使用錘子,但還是有一些小朋友有些郁悶和叛逆,反正就是——討厭錘子只能敲釘子。

       第二種:小明,你為什么要用錘子敲桌子呢,這樣敲后,桌面就會有凹洞,不就不好看了嗎?……你為什么要用錘子打人呢?如果是打在自己身上,會不會很疼?……你能不能不用錘子就把釘子釘進木板?不能是吧,用了錘子感覺如何?是不是很容易了?……同樣一堂課下來,同樣有部分小朋友在使用錘子的目的上犯了錯誤,同樣結束后還是有部分小朋友會用錘子去敲打不該敲擊的東西,但是每個小朋友都沒有失去學習的興趣,都在成長過程中。

       好了,我虛構的場景介紹完了,這個場景的原型是源自“當你手中有一把錘子,什么問題看起來都像是釘子”的格言。當一個初學者學習設計模式的時候,通常閱讀GoF的《設計模式》是效果不好的,一般會打擊學習的興趣,不排除有少部分直接閱讀就能理解的初學者,而更多可能是閱讀像《Head First設計模式》、《Java與模式》以及我本人寫作的《大話設計模式》等等這樣的通俗讀物來初步了解設計模式。

       剛學完一個模式后,等於初學者手里拿了一把“錘子”,此時他是否會希望能在自己的編程項目或者練習中使用到這把“錘子”?當然是希望的。於是他們開始嘗試使用,如果用得不好自然就得繼續修煉,可也有感覺用得不錯的人存在。此時他很希望分享一下自己使用這個設計模式的心得,於是一篇博客就新鮮出爐了。他寫得好嗎?或許應該這樣問,對於一個初學設計模式的人來說,他寫的心得可能會很好嗎?顯然大部分情況是不好的,但是為什么他會願意寫呢?因為他在學習時找到了興趣,建立了自信,於是他開始寫了,並且認為是對的。對於這樣的博客,如果當一位專家級的人物在評論中寫道:“你寫得什么垃圾,這個模式不是這樣理解的,你還是回去好好讀讀設計模式的語義吧。”你知道這樣的評論對於博客主打擊有多大嗎?也許他再也不會去寫設計模式的心得了。反之,另一位讀者在下面評論道:“你寫得不錯,但是有理解錯誤的地方,比如(1)(2)(3)等。”於是他們討論了關於技術的細節,最終這博客主又寫了一篇關於這個設計模式的文章,此時他寫得比以前好了,贏得了普遍的贊譽。后來,他寫了很多篇這樣的文章,給讀者帶來了知識上的分享和收獲。

       有讀者一定會說,你這不就是在寫自己嗎?哈哈,我想所有寫博客人的想法都是一樣的。這既是我的感受,也是所有寫了博客人的感受,大家寫作的目的都是分享心得,並希望得到贊譽或者中肯的批評,而不是被打擊和辱罵。

       我始終都認為,在沒有一定積累之前,對設計模式的理解大都可能是片面,甚至是錯誤的(包括我自己),但這不等於不應該鼓勵去把自己的想法寫下來。事實證明,大部分很牛的人寫出來的技術文章是不好讀的。因為所謂牛人,已經在學習過程中跨越了N個技術門檻才達到某個高度,此時他已經無法理解初學者的困惑的原因了。就像我在教我兒子認字時,我開始根本無法理解,他怎么會區分不開“右”、“石”和“萬”,“左”和“在”等字,甚至把“車”和“在”字搞混.。但這些就是小朋友的學習難點,你必須得理解他們,耐心教導他們。

       一般說我的書是垃圾的讀者,通常都是牛人,原因就是他們已經跨越了初學者的障礙,因此沒有去認真讀我的書,就給出了極端情緒化的否定,說大話純粹是扯淡。因此對於兩本書都持否定態度,這樣的批評我一般可以忽略。而前幾天有個讀者在微博中說“相比《大話設計模式》,《大話數據結構》真是本垃圾書。”我略感驚訝。說一本不錯,而另一本是垃圾,這比較少見。我於是和他在微博中討論了一下。最終原因找到了,因為他看GoF的書沒看懂,所以覺得《大話設計模式》不錯,而他之前學過嚴蔚敏的數據結構,至少是已經非初學數據結構的人了,因此再讀我的《大話數據結構》會認為差別不大(唉,那也不至於垃圾呀)。明白了嗎?這就是關鍵。造成被讀者極端肯定或否定的原因就在於他之前有沒有好好學過它,使得閱讀體驗結果是愉悅還是失望。事實上,兩本書都是我寫的,在准備寫作《大話數據結構》的時候,我就考慮到了之前一些《大話設計模式》的讀者覺得大話過多的意見,而改為少一些白話,多一些講解的方式,但畢竟兩個技術差異太大,你不能指望全都是同樣的趣味體驗。由於在寫作前是購買和閱讀了市面上絕大多數有名的數據結構圖書才開始寫作,除了頭兩次印刷有不少細節錯誤是不可原諒以外,整本書對數據結構的講解是不錯的。我個人認為《大數》要比《大設》更好一些。

       有點跑題了,回過頭來說《放過設計模式吧》這篇博文,我覺得值得閱讀,里面作者對設計模式的分析很有學習借鑒的意義,可以幫助讀者更好的理解設計模式。但是我依然鼓勵所有學習設計模式(也包括其他所有技術)的朋友把自己的學習心得體會寫下來,哪怕是不夠好的,哪怕是有錯的。人都是從小長到大的,誰TM沒幼稚過。錯了,改就行!對於什么才叫好的技術文章,標准可能有很多條,但我覺得是能讓讀者閱讀愉快,更加自信而不是更加自卑就是其中很重要的一條。生來世間,多少總得留下點有價值的東西,寫比不寫強,多寫寫自然就好了,不是嗎?加油!

       吐槽完畢,繼續休假式治療,再見!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM