1. 程式人生 > >分享一個程式設計師20 年經歷和心得

分享一個程式設計師20 年經歷和心得


程式設計師用自己的技術變現,其實是一件天經地義的事兒。寫程式是一門“手藝活兒”,那麼作為手藝人,程式設計師當然可以做到靠自己的手藝和技能養活自己。

然而,現在很多手藝人程式設計師卻說自己是“碼農”,編碼的農民工,在工作上被各種使喚,各種加班,累得像個牲口。在職業發展上各種迷茫和彷徨,完全看不到未來的希望,更別說可以成為一個手藝人用自己的技能變現了。

從大學時代幫人打字掙點零花錢,到逐漸通過自己的技能幫助別人,由此獲得相對豐厚的收入,我在很早就意識到,從事程式設計這個事可以做到,完全靠自己的手藝、不依賴任何人或公司去生活的。

這對於程式設計師來說,本就應該是件天經地義的事,只是好像並不是所有的程式設計師都能意識到自己的價值。這裡,我想結合我的一些經歷來跟你聊聊。當然,我的經歷有限,也不一定全對,只希望能給你一個參考。

學生時代

我是 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》。可能因為這個軟體是收費的,用的人不多,這篇文章的讀者反響不大。

但是,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 萬 QPS,我給他們做了一個。但是他們只能實現到 1200 萬 QPS 左右,又把我請去了。

我花了兩天時間做調研,分析效能原因,然後一天寫了 700 多行程式碼。因為不想進入業務,所以我主要是優化了網路資料傳輸,讓資料包儘量小,確保一個請求的響應在一個 MTU 內就傳完。

測試的時候,達到了 2500 萬 QPS。於是老闆給了我 20 萬。

這樣的例子還有很多。上面的例子,我連錢都沒談就去做了,本來想著,也就最多 1 萬元左右,沒想到給我的酬勞大大超出了我的期望。

這裡,我想說的是,並不是社會不尊重程式設計師,只要你能幫上大忙,就一定會贏得別人的尊重。

所以,我和一些人開玩笑說,我們可能都是在寫一樣的 for(int i=0; i<n; i++) 語句,但是,你寫在那個地方一文不值,而我寫在這個地方,這行程式碼就值 2000 元。不要誤會,我只是想用這種“鮮明的方式”來加強我的觀點。


 

 

最後給程式設計師朋友們送一波福利:

關注我的公眾號,有我自己整理的一些視訊教程。

公眾號也會持續輸出高質量文章,和大家共同進步。