我從事技術寫作的時間其實不長,開始寫作的時間就是我掘金賬號註冊的時間:
到今天(2021年2月23日)也就是一年零一個月,這一年的收穫是超過我的預期的:
- 產出博文四十多篇,總共數十萬字
- 掘金優秀作者,掘金年度人氣作者No.27
- 思否2020年度"Top Writer",萬粉專欄作者
- 開源中國優秀源創作者,源創計劃年度活躍博主 Top20
本文想對這個歷程做一個回顧,並分享一下我總結的寫作技巧以及推廣策略。
為什麼寫作
在寫作之前想清楚為什麼寫作非常重要!因為你最初的想法會決定你往哪個方向去寫,寫出的內容的質量怎麼樣。
我寫作的原因很簡單,就是我前端做了幾年了,大部分時間都在寫業務程式碼,技術上一直沒有太大的突破,最多也就是換個框架,換個UI庫,換來換去始終感覺似曾相識。為了不讓幾年工作經驗成為“第一年工作經驗的複製品”,我決定再深入,系統的學習下前端知識。所以對於我來說,寫作是我的學習方法,我的首要目的是學習知識,寫作帶來的社群聲望只是附帶的,有了當然好,沒有也沒必要刻意去刷。
“為學習而寫”與“為刷聲望而寫”
根據我的觀察,社群上的作者寫作目的主要分為兩種:“為學習而寫”與“為刷聲望而寫”。
大部分厲害的大佬其實都是“為學習而寫”,就是他們看到什麼好玩的,新奇的技術,去學習了,自然而然的總結出文章。或者覺得某個知識點大家很容易搞錯,想輸出自己的觀點,幫大家避坑,就將自己的見解寫成文章,這個過程作者雖然更多的是在輸出內容,但是寫作的過程其實也會強化作者自己的理解,其實也是一個學習方法。我個人認為“為學習而寫”寫出的文章才是正道,是社群良性發展的方向。
當然也有少部分作者想在短時間內獲取更多關注而刻意的去迎合讀者口味,也就是“為刷聲望而寫”。比較典型的一個例子就是,掘金曾經在某段時期被大量的面試題彙總佔據。大家出去面試了回來分享下心得其實是好事,但是刻意的去搜集面試題,相似的內容發了一遍又一遍,裡面的答案甚至還是錯的,會導致社群越來越功利,低質量面試題霸版,高質量技術文章反而沒機會展示,從而造成劣幣驅逐良幣的現象。我記得那會兒有個作者靠反覆發麵試題,短時間就刷了三四千掘力值,眼看就要到“優秀作者”了,結果被一個社群大佬懟了,然後就沒怎麼露面了。這樣,前面刷的幾千聲望不是都白費了嗎?後來掘金官方也整治了低質量的面試題文章,現在的情況已經好多了。
所以我說,寫作前想清楚“為學習而寫”與“為刷聲望而寫”很重要,如果是“為學習而寫”,那就可以寫出自己的心得體會,寫出高質量文章,如果單純是“為刷聲望而寫”,可能短期會有點收益,但是也有可能會被大佬懟,被官方整治,前功盡棄。
寫什麼
在這個“系統學習計劃”開始之前,我其實沒怎麼寫過技術文章,甚至都沒怎麼逛過技術社群。平時如果需要學習一個東西,比如學習React
,那我會直接去它的官方網站,把它的文件全部讀一遍,現在這些流行庫的文件都寫的很好,看一遍基本就能上手了。如果看完了還是不太知道怎麼用,那就去公司看看有沒有專案用過,公司沒用過,就去GitHub上找找,然後抄抄改改就能上手了。這個過程一般也就幾天,複雜的庫最多也就一兩週就能上手。使用的時候遇到問題就用Google搜,基本都會找到Stack Overflow上,答案拿過來一用就行。
前面幾年我的工作模式基本都是這樣的,這樣應付工作也沒啥問題,但是第一年是這樣,第二年是這樣,第n年還是這樣。。。就成了“一年工作經驗複用n年”,成了名副其實的“API工程師”,做專案沒問題,問原理似曾相識,但是卻說不太清楚。如果一直這樣,技術就會一直原地踏步,在現單位很容易被替代,出去找工作也可能會四處碰壁,或者找來找去找到的始終跟當前的差不多,很難實現大的突破。
我感到,我碰到瓶頸了。我想突破這個瓶頸,但是我不知道怎麼做!在沒有具體方向的時候,就看看手上能做啥吧,從簡單的,可見的開始做。於是,我決定,我要重頭整理自己的知識框架,把那些只是似曾相似的技術,原理全部吃透,於是我從網上找了一份“前端知識架構圖譜”,決定按照裡面的提綱,全部重新學習一遍。只是我再次學習不能是簡單的看看書,看看部落格,看看視訊就行了,這種事情我以前幹過了,作為一個有幾年工作經驗的前端,我對自己有更高的要求:所有學過的知識點,必須自己全部寫成文章進行鞏固;所有框架的學習,必須學到原理或者原始碼層面!
所以,“寫什麼”這個問題的答案已經有了:學習前端知識架構,將學習過程寫成文章。
怎麼寫
上面說了,我其實並沒有什麼寫作經驗,我最近一次寫作是大學論文,再往前就是高中作文了,寫作水平其實不咋地。但是技術寫作跟普通作文不一樣,一般不需要華麗的辭藻,更重要的是要把問題講清楚,看技術文章的讀者需要的是學習技術知識,而不是看風花雪月,所以技術文章的邏輯,層級遞進,由淺入深,好理解其實更重要。我剛開始時也不知道怎麼寫,也是在不斷寫作工程中,一邊寫,一邊總結,整體來說,我自己的文章其實都分了好幾個階段:
- 就是記個筆記
- 有自己理解的知識點解析
- 深入原始碼,探究原理
- 從工作中總結
就是記個筆記
從小學開始,老師就會讓大家記筆記,大家應該都會,這也是最簡單的切入點。我剛開始的時候,不會寫文章,寫的基本都是筆記,比如各種CSS居中方案,這就是我在其他地方學的,然後把他記錄下來,也就是個筆記而已。對於“CSS居中”這種問題來說,面試問爛了,網上資料也是一大堆,這篇文章也沒什麼出彩的地方,所以關注的人不多。其實對於“筆記型”來說,獲取關注少是很容易理解的,因為你寫的東西是筆記,也就是說你也是從其他地方學來的,整個文章的思路其實也是人家的,如果自己記筆記的水平不高,可能寫出來的效果還不如原文章。
有自己理解的知識點解析
在寫了一些“筆記型”文章後,我發現效果不好,不僅僅是沒什麼人關注,甚至對自己幫助也不大。經常是寫了沒多久就忘了,需要的時候還要回過頭來看看筆記,我開始意識到,這個現象的本質是,你寫的東西是筆記,核心思想都是人家的,或者是自己東拼西湊的,整篇文章沒有自己的邏輯,沒有自己的見解。於是,我開始嘗試在文章中加入自己的見解,當時正好組內有小夥伴對“JS原型鏈”理解的不是很透徹,網上雖然有很多類似文章,但是很多都是從表面來解釋“原型鏈是什麼”,畫的圖也很複雜,不是很好理解。於是我嘗試自己寫一篇原型鏈的文章,因為我知道他可以實現“物件導向”的特徵,這是很多其他文章都沒怎麼提的,但卻是設計者最初可能想要實現的效果,於是我類比Java的物件導向,從物件導向的角度講述了原型鏈的作用以及他存在的意義,就是這個:輕鬆理解JS中的物件導向,順便搞懂prototype和__proto__。這篇文章上了掘金首頁推薦,最終獲得了兩百多贊,一萬多閱讀,這讓我開始意識到,“有自己理解的知識點解析”在掘金可能更受歡迎。
在這之後,我開始有意識的在整理知識架構時加入自己的見解。那對於一個知識點,怎麼產生自己的見解呢?這需要在學習時多問自己幾個問題!比如,學習HTTPS時,除了跟大家一樣搞清楚HTTPS的加解密流程,握手過程外,我問了自己一個問題:“HTTPS有沒有可能被破解?假如我是個黑客,如果我想破解HTTPS,有哪些方法和途徑?”帶著這個問題,我從“破解HTTPS”的角度講述了HTTPS的原理,這篇文章也上了推薦,獲得了一百多贊和好幾千閱讀:RSA初探,聊聊怎麼破解HTTPS。
嚐到點甜頭後,我更加註意在學習中反問自己問題,加入自己理解了。有時候在學習別人的東西時,我發現了別人沒發現的一些點,也可以從這個角度加入自己的獨到見解,寫成自己的文章,比如某視訊課程在講述JS的事件迴圈時說:“setImmediate
比setTimeout
先執行”。聽到這句話,我敏銳的感覺不太對,因為我曾經遇到過setTimeout
比setImmediate
先執行的情況,但是具體是啥情況我一時想不起來。於是我花了點時間把這個問題和原理徹底弄清楚了,並寫成了自己的文章:setTimeout和setImmediate到底誰先執行,本文讓你徹底理解Event Loop。這篇文章最終也獲得了一百多贊,大幾千閱讀~
深入原始碼,探究原理
JS知識體系雖然龐大,但是終究是有限的,很快我就寫了十幾篇JS的文章,內容包含了記憶體管理,深淺拷貝,物件導向(原型鏈),this
指向,事件迴圈,變數型別,作用域等等。這些已經囊括了JS的主要知識點,JS上我已經很難找到新的寫文章的點了。
於是我的文章內容開始轉向我使用的框架,這幾年我主要使用的React
技術棧。於是我準備重新整理學習React
技術棧,當然不是學習他的用法了,畢竟我用了幾年了,用法早就熟悉了,這次我要學的是他們的原始碼和原理。原始碼和原理相對於JS知識和框架使用方法來說要難得多,受眾也小的多,對於讀者來說也很難產生直接的收益。因為讀者可能看個JS知識點,出去面試就能應付大部分的JS面試了,除了些大廠外,也不是每個公司面試都會問原始碼,而且這些受歡迎的開源庫是各位大牛努力寫作的成果,裡面匯聚了各種JS的高階用法,各種高階程式設計思想和設計模式,所以即使我儘量寫得深入淺出,層層遞進,相較於其他文章來說仍然會顯得更加晦澀難讀。所以這類文章在掘金獲得的贊和閱讀並不可觀,我大量的原始碼解析都只有三四十個贊,這裡面還有一半左右是我厚臉求朋友同事們點的(這點我後面在講推廣的時候會說)。
對於作者來說,寫原始碼類文章需要去讀框架原始碼,也會很花時間。我寫一個JS知識點的文章,因為東西都是我熟悉的,可能幾天就搞定了,寫完了還會有上百的贊。但是一個複雜框架的原始碼解析,比如Express.js
,我需要一點點的去讀,去除錯原始碼,成文可能需要兩三週,寫完後可能仍然只有三四十個贊。從社群聲望增長這個角度來說,價效比極低!但是我一直沒有放棄這類文章,甚至現在成了我主要的寫作方向。為什麼?因為人總要突破自己的舒適區,探索未知的領域,最終才能學習到東西,獲得成長!這其實回到了文章開頭就提出的問題:“你為什麼要寫技術文章?”對於我來說,這是我學習的途徑,所以如果這個過程我能夠學到東西,能夠感受到成長,我就會堅持去做,即使他在其他方面價效比很低!另外我的原始碼類文章雖然在掘金反響不是很好,但是在其他平臺,比如思否,還可以,所以其實也是有回報的。
好了,說了這麼多為什麼要寫原始碼解析,現在來談談怎麼寫原始碼解析。前面說了,在我從事技術寫作之前,我基本不懂原始碼,是名副其實的“API工程師”,那會兒我也是一提到原始碼就心慌,完全不知道從何下手。後來我忐忑的打破自己的心理障礙,多次嘗試之後找到了一個看原始碼的套路。其實再?的框架或庫本質也是JS程式碼,所以我們可以用一種簡單質樸的方法去讀,這其實也是大家經常在用的方法。想象這樣一個場景,你們公司一個執行很久的專案出了點問題,你領導讓你去調查下。由於這個專案你之前沒有參與,現在貿然叫你去解決BUG,你是不是要先反覆復現問題,然後找到相關的程式碼塊,除錯這些程式碼並找到BUG原因,然後將它修復。看原始碼的時候我們完全可以用類似的思路去看,先縮小範圍,只看這個庫的核心程式碼。比如Koa.js
核心用法其實只有這麼點:
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(3000);
你就把它當成你現在需要接手的老專案,為了弄懂他的執行邏輯,看看這段程式碼裡面他暴露了哪些API,然後一個一個去除錯下就行了。就上面這幾行程式碼而言,其實只有三個API:
Koa
類app.use
例項方法app.listen
例項方法
花點時間去原始碼裡面找到這三個API,並看看他們是怎麼實現的,在看的時候,把主要邏輯剝離出來,自己實現一遍,同時把整個過程記錄下來。等你把這三個API實現都看懂了,其實一篇原始碼解析的文章也就出來了,同時還可以產出一個迷你版Koa
:手寫Koa.js原始碼。
從工作中總結
其實很多公司都不是技術驅動的,技術只是實現業務的一個手段而已,這就造成很多公司的一個專案都是從另一個專案抄抄改改就能用,很多人(包括我)在這種環境下待久了,慢慢就成了“API工程師”,最熟悉的其實是CV大法。但是每個公司的業務其實在某方面都有自己一定的獨到性,不然也活不下來,在實現這些比較複雜的業務時,有時候我們也會用一些比較有意思的方法,有時候我們可能花了很多時間去實現他,但是過後又慢慢淡忘了。其實對於這些有一定技術含量的工作,我們也可以總結下,然後寫成文章,慢慢沉澱下來成為自己的技術。我就從工作中總結了三篇文章,有的反響還不錯:
推廣
有句俗話說:“酒香不怕巷子深”。但是這個並不適用於現在的網際網路時代,網際網路時代是資訊爆炸的時代,如果沒有適度的推廣,即使你的內容很好,最終也會淹沒在資訊的洪流裡面。好內容的推廣對於社群,讀者和作者來說其實是三贏的。
對於社群來說,如果有大量優質內容提供給讀者,口碑就會很好,讀者會願意長期待在這個社群學習,並可能會主動推薦給朋友。所以很多社群的編輯很大一部分工作就是主動發掘好的內容,並推送給更多的使用者。
對於讀者來說,好內容的推廣可以學習到更多東西,而不是整天被一些低質量內容霸屏。
對於作者來說,好內容的推廣可以獲得更多關注,更多的社群聲望,激發創作熱情,從而形成正向激勵,產出更多高質量內容。
但是推廣有一個很大的前提:推廣的內容一定要是高質量的內容,不然會起反效果。
所以我的技術寫作,我也嘗試了多種推廣方式和渠道,不同的方式效果不一樣,我用過的方式主要有:
- 各種QQ群,微信群分享
- 找朋友,同事幫忙點贊
- 找社群編輯幫忙推薦
- 多平臺釋出
- 文章相互引用
- 運營微信公眾號
下面就這些詳細講述下:
推廣的前提是高質量
在推廣之前,一定要確保你推廣的內容的質量,至少要是你用心寫的,也許你現在只是一個初學者,寫不出高深內容,但是你寫的內容一定要是你用心寫的,要讓讀者感受到你的誠意。如果只是簡單的面試題拼湊,甚至裡面的答案都是錯的,你還拼命去推廣,你推廣的越多,只會讓更多人知道你寫的東西不好,沒誠意,可能還會被很多人留言懟。就像開頭提到的那個例子,如果一味的為了“刷聲望”而去拼湊內容,大量推廣,你聲望可能會漲得很快,但是,同時也會讓大量的人知道,你寫的東西不行,沒誠意,甚至可能被大佬懟到不敢露面。
QQ群,微信群分享
我開始寫文章時喜歡寫完了就分享到一些QQ群和微信群,但是效果並不好。經常是分享到一個幾百人的群,過一會兒去看,閱讀量漲了幾百,但是贊一個沒有。。。當然也可能是我早期的“筆記型”文章質量不高,所以獲贊不多,比如前面提到過的各種CSS居中方案,我就分享到過很多群,最終有三千多閱讀,但是贊只有三十來個。。。所以我現在已經基本不亂分享了,收益太低,還可能被當成打廣告的遭嫌棄。
找朋友,同事幫忙點贊
這條主要是針對掘金平臺的,因為掘金的贊多了可以升級,升到4級就是“優秀作者”,可以自動上首頁。所以我在掘金髮布後,會分享給關係好的同事和同學,因為關係很好,他們基本都會幫忙點個?。但是這部分老鐵人不多,總共也就十幾個。
找社群編輯推薦
這其實是效果最好的一個推廣渠道,可以聯絡社群編輯,將寫好的文章連結發給他,編輯在稽核後,覺得可以的會推薦到社群首頁,這會大大提高曝光量。以掘金為例,一般我上首頁推薦的文章,至少都會有十來個贊,閱讀少說幾百上千。加上前面朋友點的贊,我一篇文章最少會有三十來個贊,加上閱讀量轉換的掘力值,一篇文章至少會有四五十的掘力值。有一段時間,我就以這個為基準在那裡算:我再寫一百篇就可以升4級了,哈哈? 當然如果出了爆品,某篇文章獲得了成百上千的贊,會大大加速這個程式。
其他社群,比如思否,開源中國,找編輯推薦效果也是非常好的,他們有作者推薦群,可以聯絡編輯加群,有好的內容就可以發到群裡求推薦。
多平臺釋出
中文社群其實還是挺多的,我最開始是在掘金寫文章,但是粉絲最多的平臺卻是思否,個人粉絲將近兩千,專欄粉絲一萬多。所以你文章寫好後,可以釋出到多個平臺,也許這個平臺不火的文章在另一個平臺卻火了。目前對於我來說效果還不錯的平臺有:掘金,思否,開源中國和部落格園,下面我就這幾個平臺的特點來細說下:
掘金
掘金最大的特色是等級制度,等級到4級可以解鎖成就:掘金優秀作者,然後釋出的文章可以自動上首頁,可以大大提高曝光量。另外編輯也很負責,會主動尋找優質內容推薦到首頁,所以如果你持續輸出優質內容,篇篇被推薦也是有可能的。
思否
思否最大的特點是漲粉很快,因為新使用者在註冊思否時會推薦一些專欄和作者給他關注,如果你足夠活躍,就可以進這個推薦列表。思否每年還會評定“Top Writer”,每年15人,因為名額少,所以比掘金的“優秀作者”還難點,如果被評上了“Top Writer”,會有一段時間的流量支援,漲粉更快,我評上後最多的一天漲粉上千。另外思否的技術團隊也很負責,有什麼問題在群裡反饋了很快就能得到回答,有時候CEO還會親自回覆?。
開源中國
開源中國流量也不錯,如果被推薦上首頁,至少會有一兩千的閱讀。另外在他的部落格站點首頁還有個“精彩部落格”欄目,如果出現在這裡,可以掛很長時間,下圖中這篇文章:速度提高几百倍,記一次資料結構在實際工作中的運用是我1月6號釋出的,到今天,2月23號,一個多月了還排在這個欄目第一,單篇閱讀一直在漲,已經有4.7萬了。
而同樣一篇文章我也釋出到過掘金,只有三十來個贊,效果很一般,所以多平臺釋出還是有好處的,這個平臺不火,另一個平臺說不定就火了。
部落格園
部落格園最大的特色是在釋出時可以自己選擇上首頁,當然如果你質量不好,還是可能會被編輯撤下來的,我以前就被撤下來過。因為可以自己決定上首頁,所以部落格園的首頁重新整理很快,一會兒就被淹沒了,所以單篇閱讀量不高,可能只有一兩百。但是如果你能獲得編輯的特別推薦,出現在這個位置,流量還是可以的:
我有兩篇獲得過編輯推薦,最多的一篇有近萬閱讀,少的也有三四千,這個位置只能待一天,所以其實還是不錯了。
另外,我還試過CSDN,知乎,騰訊雲社群等,因為效果不是很好,已經沒怎麼運營了。大家早期時可以儘量多釋出幾個平臺,然後看看哪個平臺效果好就重點關注,效果不好的就可以放棄了,因為運營平臺過多也會耗費大量精力,選價效比高的弄就行。
文章內相互引用
因為我寫的東西成體系,所以一篇文章B可能會用到以前寫的文章A的知識,那我就會在文章B裡面引用文章A,這樣讀者可能就順著去看文章A了。這樣有一定的效果,有時候很久前寫的文章會被點贊,就是這麼來的。
運營微信公眾號
我寫了一段時間後,會有朋友給我留言,希望轉載到微信公眾號,這種情況遇到幾次後,我就在想,我為啥不自己弄個公眾號,於是我就開通了一個公眾號進擊的大前端。聽說微信公眾號還能賺錢,說不定我還能賺點外快,到目前為止確實有一點點收入:
- 獲得讚賞收入7元,其中5元是我老婆給的
- 獲得廣告收入1.84元
這個收入還真是一點點?,主要是因為我運營比較佛系,發的內容主要是原創,粉絲不多,新增粉絲主要是文章後面的廣告和其他號主轉發帶來的。廣告我也只放了文末廣告,文中廣告都沒放,怕影響使用者體驗。
有一段時間我也想過要不要大力運營,每天轉發更新內容,但是每天發內容需要尋找稿子,稽核稿子,也需要不少時間。而我目前的主要精力在學習和原創內容上,就沒弄了,先佛系運營著吧。
總結
本文總結和分享了我這一年從事技術寫作的心得體會,對這一年進行了回顧,同時也希望給想往這方面發展的朋友提供一個參考。下面再對內容進行一個簡短總結:
- 從事技術寫作的目的最好是學習和分享,而不是單純的刷聲望。
- 寫作內容可以是:
- 簡單的學習筆記:因為是簡單的記錄別人的內容,效果可能不是很好
- 有自己理解的知識點解析:有自己見解,也有一定難度,但又不至於晦澀難懂,受眾廣,在社群容易受歡迎。
- 原理和原始碼解析:內容較難,受眾略小,在社群不一定受歡迎,但是對於自己的成長非常有用。
- 從工作中總結:注意總結工作中有價值的技術內容,而不是做單純的“API工程師”,在工作中完成技術沉澱,一舉兩得。
- 適度的推廣是社群,讀者和作者的三贏,但是推廣的內容一定要是高質量的,不然可能會起反效果,一般推廣手段有:
- 各種群分享:效果不好,經常是閱讀量漲幾百,贊一個沒有
- 分享給朋友,同事:早期有用,可以保底有幾個贊,但是數量畢竟有限。
- 社群編輯推薦:最有用的方式,可以大幅提高曝光量,但是質量一定要過關才行。
- 多平臺釋出:寫了文章後可以嘗試發到多個平臺,也許這個平臺不火的另一個平臺火了。
- 文章內相互引用:有一點效果,可以讓很久前寫的文章仍然獲得少量曝光。
- 運營微信公眾號:據說能賺錢,但是我佛系運營,目前總收入不到10塊。
最後感謝各位讀者的閱讀,點贊!
感謝各位公眾號號主的轉發!
感謝掘金,思否,開源中國,部落格園等平臺的大力支援!
你們的支援一直是我持續創作的動力!
歡迎關注我的公眾號進擊的大前端第一時間獲取高質量原創~
“前端進階知識”系列文章:https://juejin.im/post/5e3ffc85518825494e2772fd
“前端進階知識”系列文章原始碼GitHub地址: https://github.com/dennis-jiang/Front-End-Knowledges
歡迎關注我的公眾號進擊的大前端第一時間獲取高質量原創~
“前端進階知識”系列文章:https://juejin.im/post/5e3ffc85518825494e2772fd
“前端進階知識”系列文章原始碼GitHub地址: https://github.com/dennis-jiang/Front-End-Knowledges