寫在前面程序員用自己的技術變現,其實是一件天經地義的事兒。寫程序是一門“手藝活兒”,那么作為手藝人,程序員當然可以做到靠自己的手藝和技能養活自己。
然而,現在很多手藝人程序員卻說自己是“碼農”,編碼的農民工,在工作上被各種使喚,各種加班,累得像個牲口。在職業發展上各種迷茫和彷徨,完全看不到未來的希望,更別說可以成為一個手藝人用自己的技能變現了。
從大學時代幫人打字掙點零花錢,到逐漸通過自己的技能幫助別人,由此獲得相對豐厚的收入,我在很早就意識到,從事編程這個事可以做到,完全靠自己的手藝、不依賴任何人或公司去生活的。
這對于程序員來說,本就應該是件天經地義的事,只是好像并不是所有的程序員都能意識到自己的價值。這里,我想結合我的一些經歷來跟你聊聊。當然,我的經歷有限,也不一定全對,只希望能給你一個參考。
學生時代我是 1994 年上的大學,計算機科學軟件專業。在 1996 年上大二的時候,因為五筆學得好打字很快,我應征到教務處幫忙,把一些文檔錄入到電腦里。打了三個月的字,學校按照每千字 10 元,給了我 1000 元錢。
由于我的五筆越打越快,還會用 CCED 和 WPS 排版,于是引起了別人的注意,叫我幫忙去他的打字工作室,一個月收入 400 元錢。我的大學在昆明,這相當于當地收入的中上水平了。
后來,1997 年的時候,我幫一個開公司的老師寫一些 MIS 軟件,用 Delphi 和 PowerBuilder 寫一些辦公自動化和酒店管理的軟件。一年后,老師給了我 2000 元錢。
因為動手能力比較強,當時系上的老師要干個什么事都讓我幫忙。而且,因為當時的計算機人才太少太少了,所以一些社會上的人需要開發軟件或是解決技術問題也都會到大學來。基本上老師們也都推薦給我。
還記得 1997 年老師推薦一個人來找我,問會不會做網頁?5 個靜態頁,10000 元錢。當時學校沒教怎樣做網頁,我去書店找書看,結果發現書店里一本講 HTML 的書都沒有,只好回絕說“不會做”。一年后,我才發現原來這事簡單得要命。
初入職場到了 1998 年,我畢業參加工作,在工商銀行網絡科。由于可以撥號上網,于是我做了一個個人主頁,那時超級流行個人主頁或個人網站。我一邊收集網上的一些知識,一邊學著做些花哨的東西,比如網頁上的菜單什么的。
在 2000 年時,被《電腦報》的編輯看上了,寫來郵件約我投稿。我就寫了一些如何在網頁上做菜單之類的小技術文章,每個月寫個兩三篇,每個月有個 300 元左右的稿費,當時我的月工資 600 元。
現在通過文章標題還能找到一兩篇,比如《抽屜式菜單的設計》,已經是亂碼一堆了。大學時代被人請去做事的經歷對我影響很大,甚至在潛意識里完全影響了我如何規劃自己的人生。雖然當時我還說不清楚,只是一種強烈的感覺——我完全可以靠自己的手藝、不依賴任何人或公司去生活。
我想這種感覺,我現在可以說清楚了,這種潛意識就是——我完全沒有必要通過打工聽人安排而活著,而是反過來通過在公司工作提高自己的技能,讓自己可以更為獨立和自由地生活。
因而,在工作當中,對于那些沒什么技術含量的工作,我基本上就像是在學生時代那樣交作業就好了。我想盡一切方法提高交作業的效率,比如,提高代碼的重用度,能自動化的就自動化,和需求人員談需求,簡化掉需求,這樣我就可以少干一些活了……
這樣一來,我就可以有更多的時間,去研究公司里外那些更為核心更為有技術含量的技術。
在工作中,我總是能被別人和領導注意到,總是有比別人更多的時間去讀書,去玩一些高技術含量的技術。當然,這種被“注意”,也不全然是一種好事。
2002 年,我被外包到銀行里做業務開發時,因為我完成項目的速度太快,所以,沒事干,整天在用戶那邊看書,寫別的代碼練手,而被用戶投訴“不務正業”。我當然對這樣的投訴置之不理,還是我行我素,因為我的作業已交了,用戶也就是說說罷了。
同年,我到了一家新的很有技術含量的公司,他們在用 C 語言寫一個可以把一堆 PC 機組成一個超級計算機,進行并行計算的公司項目。
當我做完第一個項目時,有個公司里的牛人和我說,你用 Purify 測試一下你的代碼有沒有內存問題。Purify 是以前一個叫 Rational 的公司(后來被 IBM 收購)做的一個神器,有點像 Linux 開源的 Valgrind。
用完以后,我覺得 Purify 太厲害了,于是把它的英文技術文檔通讀了一遍。經理看我很喜歡這個東西,就讓我給公司里的人做個分享。我認真地準備了個 PPT,結果只來了一個 QA。我在一個大會議室就對著她一個人講了一個半小時。這個 QA 對我說,“你的分享做得真好,條理性很強,也很很楚,我學到了很多東西”。
有了這個正向反饋,我就把關于 Purify 的文章分享到了我的 CSDN 博客上,標題為《C/C++ 內存問題檢查利器—Purify》(登錄極客時間 App 看外鏈)。可能因為這個軟件是收費的,用的人不多,這篇文章的讀者反響不大。
但是,2003 年的一天我很意外地接到了一個電話,是一個公司請我幫忙去給客戶培訓 Purify 這個軟件。IBM 的培訓太貴了,所以代理這個軟件的公司為了成本問題,想找一個便宜的講師。
他們搜遍完整個中國的互聯網,只看到我的這篇文章,便通過 CSDN 找到我的聯系方式,給我打了電話。最終,兩天的培訓價格稅后一共 10000 元錢,而我當時的月薪只有 6000 元錢,還是稅前。
這件事兒讓我在入行的時候就明白了一些道理。
要去經歷大多數人經歷不到的,要把學習時間花在那些比較難的地方。
要寫文章就要寫沒有人寫過的,或是別人寫過,但我能寫得更好的。
更重要的是,技術和知識完全是可以變現的。
現在回想一下,技術和知識變現這件事兒,在 15 年前我就明白了,哈哈。
隨后,我在 CSDN 博客上發表了很多文章,有談 C 語言編程修養的文章,也有一些 makefile/gdb 手冊性的文章,還有在工作中遇到的各種坑。
因為我分享的東西比較系統,也是獨一份,所以,搜索引擎自然是最優化的(最好的 SEO 就是獨一份)。我的文章經常因為訪問量大被推到 CSDN 首頁。因此,引來了各種培訓公司和出版社,還有一些別的公司主動發來的招聘,以及其他一些程序員想伙同創業的各種信息。了解到,出書作者收入太低(作者的收入有兩種:一種是稿費,一頁 30 元;一種是版稅,也就 5% 左右),而培訓公司的投入產出比明顯高很多后,我開始接一些培訓的事(頻率不高),一年有個七八次。當時需求比較強的培訓主要是在這幾個技術方面,C/C++/Java、Unix 系統編程、多層軟件架構、軟件測試、軟件工程等。
我喜歡做企業內訓,還有一個主要原因是,可以走到內部去了解各個企業在做的事和他們遇到的技術痛點,以及身在其中的工程師的想法。這極大地增加了我對社會的了解和認識,這對我來說是非常重要的。而同時,讓我這個原本不善表達的技術人員,在語言組織和表達方面有了極大的提升。
其間也有一些軟件開發的私活兒,但我基本全部拒絕了。最主要的原因是,這些軟件開發基本上都是功能性的開發,我從中無法得到成長。而且后期會有很多維護工作,雖然一個小項目可以掙十幾萬,但為此花費的時間都是我人生中最寶貴的時光,得不償失。
25~35 歲是每個人最寶貴的時光,應該用在刀刃上。
職業上升期因為有了這些經歷,我感受到了一個人知識和技能的價值。我開始把我的時間投在一些主流、高級和比較有挑戰性的技術上,這可以讓我保持兩件事兒:一個是技術和技能的領先,二是對技術本質和趨勢的敏感度。
因此,我有強烈的意愿去前沿的公司經歷和學習這些東西。比如,我在湯森路透學到了人員團隊管理上的各種知識和技巧,而亞馬遜是讓我提升最快的公司。雖說,亞馬遜也有很多不好的東西,但是它的一些理念,的確讓我的思維方式和思考問題的角度有了質的飛躍。
我開始對外輸出的不僅僅是技術了,還有一些技術價值觀上的東西。
而從亞馬遜到阿里巴巴是我在互聯網行業的工作經歷,這兩段經歷讓我對這兩家看似類似但內部完全不同的成功大公司,有了更為全面的了解和看法。
這兩種完全不一樣甚至有些矛盾的玩法讓我時常在思考著,大腦里就像兩個小人在扳手腕一樣,這可能是我從小被灌輸的“標準答案”的思維方式所致。其實,這個世界本來就沒什么標準答案,或是說,一個題目本來就可以有若干個正確答案,而且這些“正確答案”還很矛盾。
于是,在我把一些價值觀和思考記錄下來的同時,我自然又被很多人關注到了,還吸引很多不同的思路在其中交織討論。而從另外一方面來說,這對我來說是一個很好的補充,無論別人罵我也好,還是教育我,都對我有幫助,大大地豐富了我思考問題的角度。
這些經歷從質上改善了我的思考方式,讓我思考技術問題的角度都隨之有了一個比較大的轉變。而這個轉變讓我有了更高的思維高度和更為開闊的視野。
可能是因為我有一些“獨特”的想法,而且經歷比較豐富,基礎也比較扎實,使得我對技術人的認識和理解會更為透徹和深入。所以,也有了一些小名氣。來找我做咨詢和幫助解決問題的人越來越多,而我也開始收費收得越來越貴了。這里需要注意的是,我完全是被動收費高的。
因為父親的身體原因,我沒有辦法全職,所以成了一個自由人。而也正因如此,我才得以有機會可以為好多公司解決技術問題。2015 年,有家公司的后端系統一推廣就掛,性能不足,請我去看。
我花了兩天時間跟他們的工程師一起簡單處理了一下,直接在生產線上重構,性能翻了 10 倍。雖然這么做有點 low,但當時完全是為了救急。公司老板很高興,覺得他投的幾百萬推廣費用有救了,一下給了我 10 萬元。我說不用這么多的,1 萬元就好了,結果他說就是這么多。我欣然接受了,當時心里有一種技術被尊重的感動。
2016 年,某個公司需要做一個高并發方案,大概需要 2000 萬 TPS,我給他們做了一個。但是他們只能實現到 1200 萬 TPS 左右,又把我請去了。
我花了兩天時間做調研,分析性能原因,然后一天寫了 700 多行代碼。因為不想進入業務,所以我主要是優化了網絡數據傳輸,讓數據包盡量小,確保一個請求的響應在一個 MTU 內就傳完。
測試的時候,達到了 2500 萬 TPS。于是老板給了我 20 萬。
這樣的例子還有很多。上面的例子,我連錢都沒談就去做了,本來想著,也就最多 1 萬元左右,沒想到給我的酬勞大大超出了我的期望。
這里,我想說的是,并不是社會不尊重程序員,只要你能幫上大忙,就一定會贏得別人的尊重。
所以,我和一些人開玩笑說,我們可能都是在寫一樣的 for(int i=0; i
上面就是我這 20 年來的經歷。
作者|陳皓