如何才能寫出一篇好的技術文章

文章來源于 @justjavac在知乎上的邀請,要寫在知乎上的回答。因為有原創,所以先首發,免得被偽原創。每天有大把的時間刷GitHub,寫博客。從我大二的時候,大概六年前開始寫技術博客,到現在已經有540+了,大概每年會寫一百篇左右。

這個答案由四部分組成:

  1. 博客的流量來源
  2. 不同文章類型的寫作要點
  3. 如何寫博客
  4. 如何收集寫作的靈感

流量來源

首先,我將技術博客分為下面幾種類型:

  1. 技術細節型。頻率: 每天幾次,15~30分鐘可以寫完。
  2. 干貨型。頻率: 每月幾次,1~2小時可以搞定。
  3. 實踐總結型。頻率: 每周1~2次,2+小時以上的時間。
  4. 雜談與雞湯型。頻率: 每季度幾次,少則幾小時,動則上月。

接著,奉獻上一章我的博客的用戶來源圖,分析完大概如下:

traffic-source.png
traffic-source.png

前三者可以帶來很多的流量,后者可以帶來大量的評論啦。

前三者可以讓你在Google上有一個好位置~~,后者可以讓你在用戶心中有個好位置。

通過社交媒體可以讓第四種類型的文章,有大量的評論和轉載。

干貨型和實踐總結型的文章通過聚合網站來傳播的效果最好。

在Google中有個好位置意味著——第一的位置會有50%以上的用戶訪問,這一點很重要哦~~。再放出神圖:

google.png
google.png

首先作為一個專業的程序員,我們會用某個關鍵詞去搜索,如“InsecurePlatformWarning: A true SSLContext object is not available.” :如果這時你的標題就是《Python 解決 InsecurePlatformWarning: A true SSLContext object is not available》,那么你就找到了你的用戶了。

這是我之前用了5分鐘不到的文章寫的一篇文章,它在半年的時間里帶來了6,599個訪問量。它在Google的搜索結果中排第一:

google-search-python-issue.jpg
google-search-python-issue.jpg

雖然很不情愿地被排名第二的文章抄襲了——但是我還是第一,這該死的偽原創。

而用戶不會只訪問你的一個頁面的:

user-behavior.jpg
user-behavior.jpg

一般來說,前三種類型的用戶獲取到他們想要的信息就走了,不會留下評論。至于第四種類型,沒有大V的光環,偶爾文章被轉企業V轉轉也能多個幾十個粉絲。所以我沒有第四種類型的文章太多的經驗哈。

不同文章類型的寫作要點

接著, 讓我們再看看上面的幾種類型:

技術細節型

在我的博客里很大一部分文章都是這一類,主要是原自早先對SEO的研究。對于先這種沒有光環的人來說,這是我博客的主要流量來源。這也是讓我堅持下去的動力,每天有大概三百個用戶來自搜索引擎。

這種類型主要來自于日常工作,但是好像寫這一類的人不多。每天我們都會遇到不同的技術問題——如某個第三庫更新,某個瀏覽器bug,如何使用某個技術。因此,我們就會用這樣的關鍵字和詞去搜索,反正大部分教程序員使用Google的文章就是這么寫的。

既然你想要這樣的搜索,那我就直接把搜索結果放前面好了,如:

  1. Mac OS Laravel 安裝
  2. Homebrew versions安裝特定版本軟件
  3. brew versions gradle安裝指定版本gradle

如果你也擅長用Google的話,我想你就懂了奧秘。標題的前半部分是關鍵字,后半部分指名意圖。

接著,就是貼解決方案和代碼咯~~。在這時候需要注意幾點:

  • 試著去表達一些技術上的細節,也會省去一些技術上的細節。
  • 以自己學習的角度去想怎樣寫可以一步步下來。
  • 加入一點點自己的情感,博客和文檔是不一樣的。(詳細見下文)
  • 編寫更簡潔的內容,因為技術博客與此文不同的是,技術博客是面向尋找信息的人。

干貨型

一般來說,這種類型的文章更類似于GitHub上的那些Awesome類型的Repo。說說幾個標題,大概可能就會有點感覺了:

  • 每個程序員必知之SEO
  • 作為一個前端工程師你了解你的小伙伴么 - chrome
  • App 上架相關事宜、解決技巧
  • 20 個非常有用的 Java 程序片段
  • Java 開發者不容錯過的 12 種高效工具

通常來說,這一類型的文章都是作者一段時間對于某一個東西的總結,非常有收藏價值。故而,這種類型的文章會在GitHub或者聚合網站上比較受歡迎。所以,它也更容易傳播。

但是寫起來的難度比較大,這依賴于你的使用經驗。所以,也不是一天、兩天就能搞定的。

實踐總結型

看看標題,可能大家都知道這一類文章要怎么寫了:

這通常是一系列的文章,而這一系列的文章一般是連續寫出來的。也因此,我們可以發現很大的書都是由這一類的文章衍生出來的。

這一類的文章更像是干貨型和技術細節型的結合,面向特定領域的技術,也屬于干貨。對于這種類型的文章來說,更依賴于代碼——讀者需要依據代碼一步步往下深入。

所以在這一類型的文章中代碼往往比較重要。

雜談與雞湯型

來幾一些標題:

  1. 為什么整個互聯網行業都缺前端工程師?
  2. 程序員職業生涯中應該思考的10個問題
  3. 怎么減少編程中的 bug?
  4. 為什么大公司看起來都那么糟糕?

BlaBla,簡單地來說這一類文章基本上是沒有技術的,都是一些以理論為主的概括。同時,寫這一類文章的時候,也意料著可能在某一領域有一定的水平——寫出來才會有人看。而由于偏向理論,這一類文章看的人往往會更多,因為它并不傾向于使用領域特定的技術。

所以這種類型是受眾很廣的文章,并且也像雞湯一樣容易傳播。同時,這種類型的文章,更依賴于社區媒體及聚合網站的傳播。因為大部分情況下,用戶不會這么去搜索文章的。

如何寫博客

對于博客的內容來說,下面幾點很重要哦:

  1. 標題、小標題。一個好的標題會帶來更多的流量的。
  2. 內容。以代碼為例的文章,最好有代碼。代碼可以放在GitHub上,一舉兩得。
  3. 圖 —— 一圖勝千言,如本文第一節中的框架圖。,一個框架圖可以省去你的很多話語。
  4. 排版,又可稱為UI設計?;镜恼Z法高亮要有,容易閱讀也要有。最簡單就是白底黑字。

下面有我之前在《招聘筆桿子——成為筆桿子》一文中說到的一些要點:

標題——必須重要,類名

對于寫博文的人來說,重點的是如何清楚的去表達他們的想法,標題算是其中之一,這個也就是為什么標題黨成為了標題黨,而《設計模式》成為了經典。剛開始學編程的時候,更吸引你注意力的可能是《72小時學會Javascript》,而不是《Javascript 權威指南》,興許讓你買前者的原因是因為你能看懂前者,而后者不僅看不懂,而且價格更貴。只是一年以后,《72 小時學會Javascript》被你扔到了垃圾箱,而《Javascript 權威指南》卻放在了原來放那本書的位置上。你定義的類難道僅僅應該是class class1么?

小標題——地圖,method

小標題有點類似于sitemap.xml,只是他就是站點地圖,一點就到了相應的地方。他應該直接了解的說這是開始菜單,標題欄,菜單欄,而不應該是簡簡單單的第一章,如果你真是那樣寫的話,你寫的函數想必是

def fun1
end

如果你寫的是get_data那么,我想你的函數名應該和你的文章一樣,告訴人們,你要的是get_data。所以不要吝嗇你鼠標的一下,它可以承受上百萬字的點擊。如果因為那樣壞了,你可以告訴我,我可以幫你免費換一個歐姆龍的微動,前提是你的鼠標可以換。如果是HTML那么應該是h2 h3,markdown也就是用得比較多的github上的README.md的##或者是###

內容——函數體

這里可不是讓你用一個讓人難以理解的Magic Number,你寫得越復雜,別人看的時間就越久,通俗易懂,就是一個很好的開始。你可以把一個個復雜的方法分解出來,或者提煉函數,或者重命名。當你相信你看不懂你的文章,正如你看不懂你寫的hello,world我想你是時候去重構你的函數了。

復雜的部分,就用段落來解決,一個函數如同一個段落只應該表達一個思想,太長了就如同這篇文章一樣沒有多少人會認真去看。你需要給你寫的一個精美的代碼加一個注釋,所以你也需要給你復雜的地方加上個(PS)。

在編寫內容的時候需要注意下面的幾點:

  • 代碼。必要的時候貼出代碼,會是一種快速有效的方法,工作的時候是為了完成某個任務。
  • 列表。列表可以簡明扼要的說明你想要表達的內容。
  • 圖表。一張流程圖可以說明程序的步驟,一個表格可以作好一個對比。
  • 標題。標題的好處,可以讓用戶快速定位,讓用戶找到想要的內容。
  • 鏈接。一個好的URL對于使用英文的人來說,可以利于SEO,對于中文,使用的人可以判斷出文章的專業與否。

引言——README

我想都會去看的,無論是在破解軟件的時候,還是github上面的項目。簡單的說說,這篇文章是干什么的,這個程序是干什么的。大家都會,不是么?

沒有什么好寫的?
說說你是怎么開始編程吧,然后寫在你的博客上,你會發現你會愛不釋手的。

如何收集寫作的靈感

下面是我最近在做的,感覺很不錯,推薦一下咯:

一般是先有個論點,然后再論據,最后才寫。

第一步,在平時把想到的一些能寫的文章用TODO的形式列出來,如我用的是“奇妙清單”。下面就是我最近想寫的一些文章的一些標題:

wunderlist
wunderlist

但是有一些還沒靈感,只是想到了個大概——所以有的是只是一個標題。這些文章大部分都屬于雜談型的,想到什么就說點什么,但是會有個核心。

第二步,在平時偶然會有點靈感的時候,就用Google Keep創建一個新的記事,稍微寫幾句,提醒一下自己咯。在這一步,相當于就是找一些論據來支撐自己的觀點,等到這些觀點差不多的時候就可以寫了。

Google Keep
Google Keep

第三步,便是寫。寫的時候其實沒有啥感覺,就如同我之前在《編程同寫作,寫代碼只是在碼字》一文中所說的。不得不再說說這個標題,一看就知道要寫什么了~~。

真正的想法都在腦子里,而不在紙上,或者IDE里。

所以,其實寫代碼的時間很短,真實長的是想出怎么寫,文章也是如此。

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

推薦閱讀更多精彩內容