1. 程式人生 > >左耳朵耗子 | 程序員如何用技術變現?

左耳朵耗子 | 程序員如何用技術變現?

img 的人 導讀 軟件測試 ++ 很好 阿裏 推薦 幫助

導讀:從事編程這個事可以做到,完全靠自己的手藝、不依賴任何人或公司去生活的。但道理我都懂,怎麽做才是關鍵。本文摘自陳皓(左耳朵耗子)在極客時間 App 開設的付費專欄“左耳聽風”。

正文

技術分享圖片

1 寫在前面

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

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

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

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

2 學生時代

  我是 1994 年上的大學,計算機科學軟件專業。在 1996 年上大二的時候,因為五筆學得好打字很快,我應征到教務處幫忙,把一些文檔錄入到電腦裏。打了三個月的字,學校按照每千字 10 元,給了我 1000 元錢。

  由於我的五筆越打越快,還會用 CCED 和 WPS 排版,於是引起了別人的註意,叫我幫忙去他的打字工作室,一個月收入 400 元錢。我的大學在昆明,這相當於當地收入的中上水平了。

  後來,1997 年的時候,我幫一個開公司的老師寫一些 MIS 軟件,用 Delphi 和 PowerBuilder 寫一些辦公自動化和酒店管理的軟件。一年後,老師給了我 2000 元錢。

  因為動手能力比較強,當時系上的老師要幹個什麽事都讓我幫忙。而且,因為當時的計算機人才太少太少了,所以一些社會上的人需要開發軟件或是解決技術問題也都會到大學來。基本上老師們也都推薦給我。

  還記得 1997 年老師推薦一個人來找我,問會不會做網頁?5 個靜態頁,10000 元錢。當時學校沒教怎樣做網頁,我去書店找書看,結果發現書店裏一本講 HTML 的書都沒有,只好回絕說“不會做”。一年後,我才發現原來這事簡單得要命。

3 初入職場

  到了 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 歲是每個人最寶貴的時光,應該用在刀刃上

4 職業上升期

  因為有了這些經歷,我感受到了一個人知識和技能的價值。我開始把我的時間投在一些主流、高級和比較有挑戰性的技術上,這可以讓我保持兩件事兒:一個是技術和技能的領先,二是對技術本質和趨勢的敏感度。

  因此,我有強烈的意願去前沿的公司經歷和學習這些東西。比如,我在湯森路透學到了人員團隊管理上的各種知識和技巧,而亞馬遜是讓我提升最快的公司。雖說,亞馬遜也有很多不好的東西,但是它的一些理念,的確讓我的思維方式和思考問題的角度有了質的飛躍。

  我開始對外輸出的不僅僅是技術了,還有一些技術價值觀上的東西。而從亞馬遜到阿裏巴巴是我在互聯網行業的工作經歷,這兩段經歷讓我對這兩家看似類似但內部完全不同的成功大公司,有了更為全面的了解和看法。

  這兩種完全不一樣甚至有些矛盾的玩法讓我時常在思考著,大腦裏就像兩個小人在扳手腕一樣,這可能是我從小被灌輸的“標準答案”的思維方式所致。其實,這個世界本來就沒什麽標準答案,或是說,一個題目本來就可以有若幹個正確答案,而且這些“正確答案”還很矛盾。

  於是,在我把一些價值觀和思考記錄下來的同時,我自然又被很多人關註到了,還吸引很多不同的思路在其中交織討論。而從另外一方面來說,這對我來說是一個很好的補充,無論別人罵我也好,還是教育我,都對我有幫助,大大地豐富了我思考問題的角度。

  這些經歷從質上改善了我的思考方式,讓我思考技術問題的角度都隨之有了一個比較大的轉變。而這個轉變讓我有了更高的思維高度和更為開闊的視野。

  可能是因為我有一些“獨特”的想法,而且經歷比較豐富,基礎也比較紮實,使得我對技術人的認識和理解會更為透徹和深入。所以,也有了一些小名氣。來找我做咨詢和幫助解決問題的人越來越多,而我也開始收費收得越來越貴了。這裏需要註意的是,我完全是被動收費高的。

  因為父親的身體原因,我沒有辦法全職,所以成了一個自由人。而也正因如此,我才得以有機會可以為好多公司解決技術問題。2015 年,有家公司的後端系統一推廣就掛,性能不足,請我去看。

  我花了兩天時間跟他們的工程師一起簡單處理了一下,直接在生產線上重構,性能翻了 10 倍。雖然這麽做有點 low,但當時完全是為了救急。公司老板很高興,覺得他投的幾百萬推廣費用有救了,一下給了我 10 萬元。我說不用這麽多的,1 萬元就好了,結果他說就是這麽多。我欣然接受了,當時心裏有一種技術被尊重的感動。

  2016 年,某個公司需要做一個高並發方案,大概需要 2000 萬 TPS,我給他們做了一個。但是他們只能實現到 1200 萬 TPS 左右,又把我請去了。

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

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

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

  這裏,我想說的是,並不是社會不尊重程序員,只要你能幫上大忙,就一定會贏得別人的尊重。

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

  我不算是聰明的人,經歷也不算特別成功,但一步一步走來,我認為,我能做到的,你一定也能做到,而且應該還能做得比我更好。

5 如何讓自己的技能變現

  還是那句話,本質上來說,程序員是手藝人,有手藝的人就能做出別人做不出來的東西,而付費也是一件很自然的事了。那麽,這個問題就成了,如何讓自己的“手藝”更為值錢的問題了。

  第一,千裏之行,積於跬步。任何一件成功的大事,都是通過一個一個的小成功達到的。所以,你得確保你有一個一個的小成功。

  具體說來,首先,你得讓自己身邊的人有求於你,或是向別人推薦你。這就需要你能夠掌握大多數人不能掌握的技能或技術,需要你更多地學習,並要有更多的別人沒有的經驗和經歷。

  一旦你身邊的人開始有求於你,或是向別人推薦你,你就會被外部的人註意到,於是其他人就會付費來獲取你的幫助。而一旦你的幫忙有效果的話,就會產生效益,無論是經濟效益還是社會效益,都會為你開拓更大的空間。

  你也會因為這樣的正向反饋而鼓勵自己去學習和鉆研更多的東西,從而得到一個正向的循環。而且這個正向循環,一旦開始就停不下來了。

  第二,關註有價值的東西。什麽是有價值的東西?價值其實是受供需關系影響的,供大於求,就沒什麽價值,供不應求,就有價值。這意味著你不僅要看到市場,還要看到技術的趨勢,能夠分辨出什麽是主流技術,什麽是過渡式的技術。當你比別人有更好的嗅覺時,你就能起動得更快,也就比別人有先發優勢。

  • 關於市場需求。要看清市場,就需要看看各個公司在做什麽,他們的難題是什麽。簡單來說,現在的每家公司無論大小都缺人。是真的缺人嗎?中國是人口大國,不缺寫代碼搬磚的,真正缺的是有能力能夠解決技術難題的人,能夠提高團隊人效的人。所以,從這些方面思考,你會知道哪些技能才是真正的“供不應求”,這樣可以讓你更有價值。

  • 關於技術趨勢。要看清技術趨勢,你需要了解歷史,就像一個球運動一樣,你要知道這個球未來運動的地方,是需要觀察球的已經完成運動的軌跡才知道的。因此,了解技術發展軌跡是一件很重要的事。要看一個新的技術是否順應技術發展趨勢,你需要將一些老技術的本質吃得很透。

因此,在學習技術的過程一定要多問自己兩個問題:“1. 這個技術解決什麽問題?為什麽別的同類技術做不到?2. 為什麽是這樣解決的?有沒有更好的方式?”另外,還有一個簡單的判斷方法,如果一個新的技術順應技術發展趨勢,那麽在這個新的技術出現時,後面一定會有大型的商業公司支持,這類公司支持得越多,就說明你越需要關註。

  第三,找到能體現價值的地方。在一家高速發展的公司中,技術人員的價值可以達到最大化。

  試想,在一家大公司中,技術架構和業務已經定型,基本上沒有什麽太多的事可以做的。而且對於已經發展起來的大公司來說,往往穩定的重要性超過了創新。此外,大公司的高級技術人員很多,多你一個不多,少你一個不少,所以你的價值很難被體現出來。

  而剛起步的公司,業務還沒有跑順,公司的主要精力會放在業務拓展上,這個時候也不太需要高精尖的技術,所以,技術人員的價值也體現不出來。

  只有那些在高速發展的公司,技術人員的價值才能被最大化地體現出來。比較好的成長路徑是,先進入大公司學習大公司的技術和成功的經驗方法,然後找到高速成長的公司,可以實現自己更多的價值。當然,這裏並不排除在大公司中找到高速發展的地方。

  第四,動手能力很重要。成為一個手藝人,動手能力是很重要的,因為在解決任何一個具體問題的時候,有沒有動手能力就成為了關鍵。這也是我一直在寫代碼的原因,代碼裏全是細節,細節是魔鬼,只有了解了細節,你才能提出更好或是更靠譜的並可以落地的解決方案。而不是一些籠統和模糊的東西。這太重要了。

  第五,關註技術付費點。技術付費點基本體現在兩個地方,一個是,能幫別人“掙錢”的地方;另一個是,能幫別人“省錢”的地方。也就是說,能夠幫助別人更流暢地掙錢,或是能夠幫助別人提高效率,能節省更多的成本,越直接越好。而且這個技術或解決方案最好還是大多數人做不到的。

  第六,提升自己的能力和經歷。付費的前提是信任,只有你提升自己的能力和經歷後,別人才會對你有一定的信任,才會覺得你靠譜,才會給你機會。而這個信任需要用你的能力和經歷來填補。比如,你是一個很知名的開源軟件的核心開發人員,或是你是某知名公司核心項目的核心開發人員,等等。

  第七,找到有價值的信息源。信息社會,如果你比別人有更好的信息源,那麽你就可以比別人成長得更快。對於技術人員來說,我們知道,幾乎所有的技術都源自西方世界,所以,你應該走到信息的源頭去。

  如果你的信息來自朋友圈、微博、知乎、百度或是今日頭條,那麽你完蛋了。因為這些渠道有價值的信息不多,有營養的可能只有 1%,而為了這 1%,你需要讀完 99% 的信息,太不劃算了。

  那麽如何找到這些信息源呢?用好 Google 就是一個關鍵,比如你在 Google 搜索引擎裏輸入“XXX Best Practice”,或是“Best programming resource”……你就會找到很多。而用好這個更好的信息源需要你的英文能力,因此不斷提升英文能力很關鍵。

  第八,輸出觀點和價值觀。真正偉大的公司或是產品都是要輸出價值觀的。只有輸出了更先進的價值觀,才會獲得真正的影響力。但是,你要能輸出觀點和價值觀,並不是一件容易的事,這需要你的積累和經歷,而不是一朝之功,需要長期積累。因此,如果想要讓你的技能變現,這本質上是一個厚積薄發的過程。

  第九,朋友圈很重要。一個人的朋友圈很重要,你在什麽樣的朋友圈,就會被什麽樣的朋友圈所影響。如果你的朋友圈比較優質,那麽給你介紹過來的事兒和活兒也會好一些。優質的朋友圈基本上都有這樣的特性。

  • 這些人都比較有想法、有觀點,經驗也比較豐富;

  • 這些人涉獵的面比較廣;

  • 這些人都有或多或少的成功;

  • 這些人都是喜歡折騰喜歡搞事的人;

  • 這些人都對現狀有些不滿,並想做一些改變;

  • 這些人都有一定的影響力。

最後有個關鍵的問題是,物以類聚,人以群分。如果你不做到這些,你怎麽進入到這樣的朋友圈?

  總之,就一句話,會掙錢的人一定是會投資的人。我一直認為,最寶貴的財富並不是錢,而是你的時間,時間比錢更寶貴,因為錢你不用還在那裏,而時間你不用就浪費掉了。你把你的時間投資在哪些地方,就意味著你未來會走什麽樣的路。所以,利用好你的時間,投到一些有意義的地方吧

  我的經歷有限,只能看到這些,還希望大家一起來討論,分享你的經驗和心得,也讓我可以學習和提高。

技術分享圖片

左耳朵耗子 | 程序員如何用技術變現?