技術(shù)文章如何寫作才能有較好的閱讀體驗

技術(shù)文章如何寫作能讓讀者有較好的閱讀體驗,是一個仁者見仁,智者見智的問題。甚至很多人都認(rèn)為根本不需要考慮讀者的感受,把技術(shù)寫好寫準(zhǔn)確就可以了,這其實就是一大誤區(qū),你的寫作如果只是給自己看,當(dāng)然我也就不多說什么,但如果你的寫作是給別人看,就一定要考慮如何寫的問題,因為這是一個信息傳遞的過程而不是簡單的記錄。
  事實上,對于一個準(zhǔn)備開始寫作的人來說,通常是會認(rèn)為自己寫的東西一定是對的。如果一定要完全正確才可以寫文章的話,那就會讓絕大多數(shù)人裹足不前。因此,寫得對不對雖然是作者應(yīng)該首先要把握的,但是無論作者自己還是別人都無法在寫出文章公布之前知道這一點,因此這不是我本文要談的重點。
  我的核心觀點是: 好的技術(shù)文章,是讓符合閱讀條件的讀者,在良好閱讀體驗的情況下,看懂學(xué)會甚至掌握文章要傳達(dá)的信息。因此,需要寫作中不斷思考,這樣寫,讀者會有什么感受。如果你的寫作不能讓讀者有一種收獲的喜悅,或者閱讀體驗不佳,那么你的寫作就是有問題的。問題可能會有很多方面,我們一點點分析。
  要告知讀者文章適合什么人讀
  首先要告知你寫的文章適合什么人讀,這盡管不是最重要的條件,但你是打算一開始就告訴讀者,這文章的適讀人群,還是讓讀者需要讀完文章后再自己去判斷這文章可不可以看得懂,兩者在閱讀體驗的感覺是完全不一樣的。通常一篇文章對于某個讀者不是太淺,就是太深。正好是自己不了解的技術(shù)知識,自己有興趣,而又能通過閱讀看得懂的文章才是適合的好文章。因此由于讀者層次不同,你的文章給什么人看的定位就很重要。
  你把你的文章放到了博客園首頁上,那就意味著不管什么層次的讀者都可能點擊進(jìn)去。你如果不告知讀者,這個內(nèi)容至少需要具備什么樣的條件才能閱讀,對于一篇有一定技術(shù)難度的文章,初學(xué)者去閱讀它,怎么可能高興得起來。
  反之,如果你在一開頭就寫明,此文必須要有A、B、C的知識,否則還是不看為妙,那么誤入的讀者至少可以不需要繼續(xù)往下看,或者有個心理預(yù)期,可能看不懂,不過反正自己也沒到那個層次,沒什么關(guān)系。
  如果將寫作的具體技術(shù)難度分為九級(九級最高),你打算寫一篇難度為七級的文章。此時,你不應(yīng)該考慮水平在一、二、三級的讀者,而是將四、五、六級的讀者作為目標(biāo)群,因為你的難度應(yīng)該要讓讀者稍微費點力就夠得著的,而不是那種根本看不懂的人,這樣的定位才會更有針對性。如果你寫的內(nèi)容連二、三級讀者都能讀懂,那就說明實在是太啰嗦了,細(xì)節(jié)描述過多。如果只有七級水平的讀者才能看得懂,那通常又是因為描述過于簡潔而忽視了細(xì)節(jié)。這兩種情況你的文章價值都會大大縮水。
  清晰明白地指出文章適合什么樣的人讀,這有很多方法。可以是標(biāo)題、摘要或者文章開頭,只要達(dá)到提醒的作用,不要去浪費非目標(biāo)讀者的時間就對了。
  另外,如果可能,還應(yīng)該在文章末尾提供繼續(xù)深入學(xué)習(xí)的建議,比如之后應(yīng)該閱讀什么書,看什么文章等。也就是說,你可以為你的讀者指明了接下來學(xué)習(xí)努力的方向。
  總之,你在一開頭就告知此文章適合什么人讀,幫助了讀者節(jié)約了判別的時間,這是一個非常好的開始。
  寫作內(nèi)容的難度層級遞進(jìn)
  不要一上來就是關(guān)鍵知識點,那雖然是一種風(fēng)格,但卻違背了知識(或者說信息)傳遞的規(guī)律。
  你在大街上看到了一漂亮姑娘,想讓她成為自己的女朋友,你不能直接上去說“做我女朋友吧”,除非你開著法拉利或許可能。你首先要和她認(rèn)識,并得到聯(lián)系方式。簡單的辦法就是去搭訕。搭訕時如果直接說“給我你的手機(jī)號如何?”顯然也是不合適的,除非你長著貝克漢姆的臉興許可以。所以你得說點不讓人反感的話。比如:“你那iphone如果開啟手勢功能,就不需要頻繁按Home鍵了。不信?你看我的……”
  舉技術(shù)寫作上的例子。在講算法時間復(fù)雜度的知識點時,你當(dāng)然可以直接講時間復(fù)雜度的定義(就像大多數(shù)數(shù)據(jù)結(jié)構(gòu)教材一樣),可這是很讓讀者,特別是剛學(xué)的人迷惑的,為什么要強調(diào)這個呢?而且由于一上來就是對大O階推導(dǎo),理解比較困難,讀者的體驗就相當(dāng)差。
  我在《大話數(shù)據(jù)結(jié)構(gòu)》書中講解的辦法是先舉了從1加到100的算法例子,對比容易想到的算法和高斯算法的差異,來引入算法優(yōu)劣間的差異,并詳細(xì)解釋了函數(shù)漸近增長的原理,最后再來給出時間復(fù)雜度的定義,以及推導(dǎo)大O階的方法。由于讀者理解了函數(shù)漸近增長的原理,再去理解時間復(fù)雜度就變得容易了,這就是層級遞進(jìn)的作法。
  運動員比賽前都需要熱身,男女親熱前也需要前戲。同樣,為了讓讀者進(jìn)入閱讀狀態(tài),用一些簡單的例子來預(yù)熱,用一些稍難的例子來鋪墊,然后引出要講解的重點,這樣可以更好的達(dá)到講解好知識的目的。
  得用讀者可以理解的語言,而不是你認(rèn)為好的語言
  微博上有這樣一個段子。一位老太太想知道什么是Facebook,約旦VC Ahmad Takatkah的解釋:
  1)Facebook是一份報紙;
  2)這報紙要在電腦或手機(jī)上看;
  3)報紙里只有家人和朋友的新聞,第2頁是兒子的、第3頁是妹妹的…
  4)關(guān)于他們的新聞他們自己寫;
  5)其中有一頁是你自己的,想寫什么想讓誰看你說了算;
  6)報紙第1頁,是全部內(nèi)容摘要。
  怎么樣,是不是感覺很不錯?如果為了讓老太太理解Facebook,去提什么這是一家社交網(wǎng)站,它可以向親朋好友分享照片、視頻和個人信息等很IT化的語言,她一定是非常困惑。她可能接著就會問“什么是社交網(wǎng)站”、“什么是視頻”等問題了。
  同樣,你如果想讓你的讀者閱讀體驗好,就一定要用適合他們的文字,而不是你自己喜歡的文字,哪怕你的文筆相當(dāng)棒。
  這一條可能是最重要的一點,信息的傳遞最終都是為了讓讀者理解你的意圖。寫作時,一定要時刻想著用適合讀者的語言來表達(dá)。
  一圖值千言
  用上千個字描述不明白的東西,很可能一張圖就能解釋清楚。比如我在講解數(shù)據(jù)結(jié)構(gòu)的歸并排序時,寫了很多文字來說明排序的原理,但如果沒有下面這樣一張圖,可能都是遺憾的。很多人也許就在看圖的一瞬間,就明白了前面的迷惑原來就是因為大腦里沒有這樣一個類似的數(shù)據(jù)變換概念造成的結(jié)果。


  當(dāng)然,也不一定要一張完整的大圖,也可以是多張小圖和相應(yīng)的文字來解釋一個動態(tài)的過程。比如下面是進(jìn)解二叉樹前序遍歷的部分截圖。通過文字加分解圖的方式,對于一個知識點的說明還是不錯的辦法。當(dāng)然,最好的辦法是用動畫的形式來表現(xiàn),目前暫時還不容易做到。或許未來的電子書,應(yīng)用動靜結(jié)合的方式將會讓讀者有更加舒適的閱讀體驗。

  不過你畢竟不是在畫漫畫,圖的目的是為了更好的說明問題,如果只有圖,沒有抽象的文字來準(zhǔn)確的表達(dá)你的意圖,可能就本末倒置了。
  總之,在分析講解時,能夠通過一些圖形化的表達(dá)來說明問題一定會比純文字的表達(dá)更加容易理解。
  代碼分解講解
  時常看到這樣的情況,寫作者會把超過100行的大段代碼貼在博客中,然后在前或后面用一段的文字說明自己要分享的觀點,這是很難讓讀者感覺到愉悅的。因為要認(rèn)真讀懂你的代碼以及你文字表達(dá)的意思,讀者就必須要頻繁上下翻頁,這可是一件非常不爽的體驗過程。
  解決辦法還是有的。不妨將大段的代碼分解成一個小函數(shù)一段說明文字,甚至是一句代碼一段說明文字的方式來講解。這樣的好處就是說明的文字就在代碼的旁邊,能夠很容易就查看到了。
  另外,對于代碼的講解有時需要模擬其運行時的狀態(tài),根據(jù)某一斷點時刻的變量變化情況描述來說明這個函數(shù)或這個循環(huán)是在干什么。這更加需要分解代碼來分析。
  很明顯,本來是貼一段代碼,再寫一段文字就算是完事的工作,現(xiàn)在需要一段一段的說明,一定是更耗費精力和時間,但這是很值得的工作。這也是我在本文一再強調(diào)的是為讀者考慮而非為自己考慮的寫作方式。
  多用章節(jié)條目段落
  除非你的文章很短,不然我都建議盡量多分章節(jié)條目和段落。這樣讀者閱讀不會太累。
  一些單機(jī)游戲,比如極品飛車或?qū)崨r足球等游戲,一般一局的時間不會超過5分鐘。為什么要這樣設(shè)置,因為這可以讓玩家精神集中一段時間之后得到一定的時間休息。
  同樣,讀者讀的文字,如果幾千個字就組成一段話,那將是相當(dāng)累的,多半情況就是閱讀不完就拉倒了。如果幾千個字分成六、七節(jié),每一節(jié)各有四、五段,那就會好很多。讀者可以在每讀完一小節(jié)時,體會一下其內(nèi)容,或者去上趟廁所。
  即便是阿凡達(dá)這樣的極品大片,也是有尿點時間的,你的文章為什么不這么做呢?
  當(dāng)然,章節(jié)條目最重要的作用是有利于幫助讀者了解整個文章的脈絡(luò)體系,更好的把握這篇文章講解的內(nèi)容是什么。
  排版、背景顏色、字體顏色、大小、類型的處理
  這些本身就是一門學(xué)問,都可以專門寫本書了。好的排版是沒有標(biāo)準(zhǔn)、也沒有止境的,可以做到千變?nèi)f化、賞心悅目。我非這方面特長,就不展開了。
  不過,對于大多數(shù)讀者來說,比較傳統(tǒng)的排版就能夠取得比較好的閱讀效果,反而過于標(biāo)新立異,比如黑底白字,藝術(shù)字體等方式是不可取的。
  善待讀者
  這個本不應(yīng)該成為一條,但還是覺得有必要提一下。你寫給自己看,把自己寫成上帝也沒人管你。可是你是寫給別人看的,你的目的不是打擊讀者,而是幫助讀者,那么寫作中以及之后的回復(fù)評論中,謙虛或與人為善的態(tài)度才是更值得提倡的。
  人生來就是不公平的。有些人天生聰明,讀了最好的小學(xué)、中學(xué)、大學(xué),工作在中國IT10強,甚至是世界IT10強的企業(yè)。他們自身可能也是非常努力,但由于他的一分努力總是抵得上別人兩分甚至五分的努力,加上只會越來越好人文環(huán)境和越來越多的技術(shù)資源,就算有點坎坷,最終成為技術(shù)大牛幾乎就是必然。
  一個愿意分享技術(shù)心得的大牛相當(dāng)難得,這一點一定要非常肯定。能讓大家佩服的原因,還是因為他持續(xù)發(fā)表優(yōu)秀文章的結(jié)果。但他們又時常會在表達(dá)正確技術(shù)觀點之時,順帶罵幾句犯錯誤的小菜鳥。這種自然而露的優(yōu)越感總會讓一些暫時還學(xué)無所成的讀者垂頭喪氣。
  我此前就說過,人都是從小長到大的,誰TM沒有幼稚過。當(dāng)你成為了技術(shù)牛人的時候,不應(yīng)該忘記自己當(dāng)年也是有過技術(shù)困惑,也是有過掙扎、努力、失敗的情況,體諒一下那些剛剛起步的小兄弟、理解一下他們的無知和淺薄為什么就不可以呢?他們中的有些人可能永遠(yuǎn)也無法成為技術(shù)牛人,但他們依然可以在自己的崗位上做出應(yīng)有的貢獻(xiàn)。你的文章如果打擊了一些人,可能就真的傷害了他們,反之,如果可以幫助到其中的一些人,其實也是你對社會的貢獻(xiàn),也是你的價值體現(xiàn)。
  其實我也知道,我的這段文字改變不了大牛的態(tài)度,他們該怎么寫還怎么寫。只不過我覺得上天給了他們140分的智慧,他們卻只做到了120分的成績,實在是非常可惜。也就是說,我本覺得他們可以做得更加好。不信?翻看一下曾經(jīng)的日記,是不是早已經(jīng)忘記了當(dāng)年那壯志豪情的理想了呢?
  OK,重申一下我的觀點:好的技術(shù)文章,是讓符合閱讀條件的讀者,在良好閱讀體驗的情況下,看懂學(xué)會甚至掌握文章要傳達(dá)的信息。我寫了一些注意的事項,都算不上新鮮內(nèi)容,也未必全面,只能算是拋磚引玉。總的說來,如果你的寫作是為了分享,那么一定要時刻考慮你的讀者,有了這樣的心態(tài),不愁寫不好技術(shù)文章。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容