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