意識到了自己沒有辦法成為 top 1% 的程序員,還應該選擇程序員的道路么?

研三即將畢業,在接觸了一些真正的程序員之後,深深的懷疑自己是否適合做程序員,希望在尋求一點幫助。

我仔細看了如何確定自己是否適合做程序員? 問題中的每一個答案
學習,運動,獨立,英文這些我都滿足,但是對編程的熱愛,我只能說我挺喜歡編程,但是不熱愛編程。

編程對我而言像英語,數學,寫作一樣,我挺喜歡的,但是全身心只做這個,會很痛苦。跑通演算法很開心,但是挑bug很痛苦,而連續幾天挑bug總是做不好的時候更是痛苦。

畢竟不是科班計算機畢業,涉及到操作系統,計算機網路的都不太熟悉,適應數據挖掘以外的任務比別人慢一些。

我喜歡分析數據,儘可能用最簡單方便的工具去完成自己的分析思路,從數據回想它產生的原因,或者有這些數據可以做什麼好玩的事兒。但不喜歡在分析數據的工具上花太多很多時間,不想造輪子……
我認為做數據挖掘最好能掌控整個流程,從產品形態到數據採集,從預處理到演算法判別到結果反饋。很多問題從整個數據流的角度解決會變的簡單。
我適應各種各樣的雜活,一會兒焊個電路,一會哄哄實驗動物,一會兒寫寫程序,一會兒看看文章,一會兒跟同學討論討論,這種生活挺亂但我挺開心的。

本科階段玩的比較好的朋友大都去做了產品經理,研究生階段的朋友大都去做了程序員。相比而言,自己性格更像本科階段的同學們。而我現在全天對著電腦,性格越來越內向,跟陌生人打交道都越來越生硬……

其實選擇做程序員主要是掙錢多,工作好找,自己不太排斥,但總覺得不是最適合自己的。

我應該一開始就不要選數據挖掘的工作(可以去做數據分析),還是先做幾年以後再看?

ps:看到很多人吐槽,我這裡最優秀指的是top1%的程序員,不是指最優秀的幾個程序員。我覺得自己努力可以做到top20%,想做的更好就要付出幾倍的辛苦。我目前的水平應該是業界平均水平都沒有達到……


推薦你看一個演講,這個演講是在PyCon2015,演講者是 Jacob Kaplan-Moss,Django的開發者之一。大家公認的牛人,絕對可以算是你說的優秀程序猿了。他在會上表示要揭示所謂的 The programming talent myth。但是一開場他卻出人意料的說:I dont deserve it. I"m just a mediocre programmer. (我不配,我只是一個平庸的程序員)。視頻封面Mediocre Programmer - Jacob Kaplan-Moss - Pycon 2015—在線播放—優酷網,視頻高清在線觀看視頻

Youtube 版(自備梯子)

沒有中文字幕,我大概闡述一下觀點:
程序員社區有一個很奇怪的觀念,一個程序員,要麼是牛掰的一塌糊塗,大神、膜拜、一個人干十個人的活,但是只拿三個人的工資。要麼就是傻 X,工作七八年的寫的代碼連自己本科的學弟都不如。在程序員的眼裡,似乎整個程序員群體的技術水平是這麼分布的:

一個人要麼厲害,要麼垃圾。你要是說一個程序員是平均水平,大家都會很奇怪:「平均水平是個什麼水平?」。但是無數的生活經驗告訴我們,在生活中所有可以通過練習習得技能都應該服從下邊這個正態曲線。傻逼和大神都是極少數,大部分人都是平均水準。寫代碼並不特殊,沒有任何理由不服從這個規律。

仔細想想,你的職業生涯中那些你認為牛掰的人,絕大多數你能夠說出來他牛掰在什麼地方嗎?大部分都是他在 XX 公司工作,XX 是個牛掰公司,XX 公司不太可能有傻逼,那他只能是大神。或者他參與過 XX 項目,XX 項目很牛掰,傻逼寫不出來,所以他只能是大神。以及大家公認這哥們兒是個大神,所以他是個大神。但是一旦具體到這個人到底哪裡牛掰,你自己也不知道。反之亦然。所以很顯然,我們的社區錯了。95%的程序員都是平均水準。你所接觸到的優秀程序員能夠做到的,你也可以做到。一輩子碰見兩三個天才就已經很多了。可是這樣的思想給我們帶來了很多問題,相信絕大數人都不會覺得自己是大神,那麼剩下的可能性只有一條,自己是個傻逼…這種巨大的落差很多時候會讓人感覺到挫敗,一如題主一樣。覺得世界上這麼多牛掰的程序員,我幹這一行還有什麼意義呢?可是整個 IT 界,乃至人類的軟體系統,絕大多數是由平庸的程序員們建成的,而不是人群中不到1%的天才們。所以應該選擇嗎?應該。因為這就是世界本來的樣子。In praise of mediocre programmer!


我的思考方式經常是反過來的,那就是我早早意識到自己是一個普通人,所以我事事只努力奮鬥,埋頭苦幹,萬一取得一點小成功那就為自己鼓掌,如果非常平庸那也是常態而已。

人最難是接受平庸的自我,也最難填滿那顆無底洞的內心,今天你會提問「意識到了自己沒有辦法成為 top 1% 的程序員,還應該選擇程序員的道路么?」明天你就會問「為什麼我技術那麼牛逼,賺的錢還是沒有雷軍那麼多?」,後天你也會問「為什麼你做的公司比特朗普牛多了,為什麼選不上美國總統?」。

所以喝下這碗雞湯,無論選擇做什麼擼起袖子埋頭苦幹,既然欲求不滿,那就爭取過幾年能夠為後面那幾個問題煩惱吧。


好好賺錢就行了,想這麼多幹什麼。中國人就是有一點不好,幹什麼都一定要做第一名。你看看我國排名靠前的國產碼農公司,有哪一個不是加班加到死。你想做1%,意思就是去加班加到死。當然了,總有一些人可以在1%裡面順利地找到進口公司過有work life balance的生活,但是進口公司畢竟招的人少,能不能進要看臉的。

根據統計,2015年,我國妓,哦不,計院和軟院的本科畢業生總數是13.5萬人。想想大學擴招已經有這麼多年了,然後把那些上了計算機的課而不做程序員的人,跟那些從別的行業因為沒錢培訓成碼農的人交換一下,可以想像我國程序員大約就是幾百萬人這麼個數量級了。現在看起來還沒有飽和的跡象。這說明了,你只要哪怕當個1.1%,日子都可以過得很好(逃

至少在下一次泡沫把一大片人都乾死之前,你不用擔心吃飯的問題,可以安心的去做不用加班的程序員。想向我國IT每一個領域的領頭羊都對員工這麼不好,我就很傷心,萬一川普把美國搞爛了,我豈不是也要回國加班了?

人活著是為了什麼,當然是為了開心。如果你為了多賺錢,付出的代價是失去了能夠開心的時間,那有什麼用?


幾年前,和霍矩一起吃飯,他很認真地和我說:周老師,今年我發現了兩位神人,太NB了!靜聽他推薦,原來,這兩位霍矩口中的神人,一個是劉未鵬,另一個是徐宥。


最近這個帖子比較火:

GitHub 中國區前 100 名到底是什麼樣的人?

劉未鵬的名字也出現在上面了呀,但前幾天,和未鵬在微信上隨意聊,他說自己論編程技術只是普通,只不過做事認真,愛思考。


在我眼裡,未鵬是獨一無二的。


未鵬寫過一篇博客:什麼才是你的不可替代性和核心競爭力

翻開任何一本經濟學的教材,或者直接翻開 wikipedia 的 economics 條目,都會看到物以稀為貴這條鐵律。人才作為資源的一種,也是同樣的道理。而稀缺性,換種說法也可以叫做不可替代性。一種資源越是稀缺,不可替代性就越強。再加上如果這種資源是一種具有實實在在使用價值的東西(而不是荷蘭的鬱金香泡沫),那麼其價格就會越高

題主的提問,或許就是未鵬在這篇博客中提出的問題——

如何構築你的個人知識體系,使得你的知識技能集儘可能成為不可替代的呢

未鵬在文中引用了孟岩的一段話:

那麼核心競爭力是什麼?我觀察圈子裡很多成功和不成功的技術人,提出一個觀點,那就是個人的核心競爭力是他獨特的個性知識經驗組合。這個行業里擁擠著上百萬聰明人,彼此之間真正的不同在哪裡?不在於你學的是什麼技術,學得多深,IQ多少,而在於你身上有別人沒有的獨特的個性、背景、知識和經驗的組合。如果這種組合,1,絕無僅有;2,在實踐中有價值,3,具有可持續發展性,那你就具備核心競爭力。因此,當設計自己的發展路線時,應當最大限度地加強和發揮自己獨特的組合,而不是尋求單項的超越。而構建自己獨特組合的方式,主要是通過實踐,其次是要有意識地構造。

針對孟岩的觀點,未鵬做了一番總結和分析,他認為——

我相信以下的知識技能組合是具有相當程度的不可替代性的
1.專業領域技能:成為一個專業領域的專家,你的專業技能越強,在這個領域的不可替代性就越高。這個自是不用多說的。
2.跨領域的技能:解決問題的能力,創新思維,判斷與決策能力,Critical-Thinking,表達溝通能力,Open Mind ,等等。
3.學習能力:嚴格來說,學習能力也屬於跨領域的技能,但由於實在太重要,並且跨任何領域,所以獨立出來。如何培養學習能力,到目前為止我所知道的最有效的辦法就是持續學習和思考新知識。
4.性格要素:嚴格來說這也屬於跨領域技能,理由同上。一些我相信很重要的性格要素包括:專註、持之以恆、自省(意識到自己的問題所在的能力,這是改進自身的大前提)、好奇心、自信、謙卑(自信和謙卑是不悖的,前者是相信別人能夠做到的自己也能夠做到,後者是不要總認為自己確信正確的就一定是正確的,Keep an open mind)等等。

一直和未鵬聊,覺得這篇博客很重要,但可惜並沒有展開來講。即便是上面列出的4點,光是抽象的概括,也是不夠的。我試著來從這4點談談我眼中的未鵬吧。

1.專業領域技能

微軟英庫拼音輸入法背後的技術和故事——劉未鵬譯(未鵬是這個產品團隊的骨幹)


另外,未鵬翻譯過的專業書籍口碑都很好,這是否也在一定程度上代表了他的專業領域技能水平:

1)修改代碼的藝術 (豆瓣)

2)Exceptional C++ Style中文版 (豆瓣)

3)C++編程剖析 (豆瓣)

4)Imperfect C++中文版 (豆瓣)

未鵬早期在CSDN上的博客:劉未鵬|C++的羅浮宮

2.跨領域的技能/3.學習能力/4.性格要素

不少讀者都很喜歡暗時間 的封面,而這個封面的誕生卻經歷了不少波折,前後差不多做了10多個封面直到後來找到在上海的一家荷蘭平面設計公司後,經過仔細溝通,這才確定了封面。這個過程令我感慨不已。因為我看到了並未從事出版業的未鵬,對封面設計卻有著直達本質的認識,令我這個做編輯的汗顏,幸好還能跟上他的腳步。


未鵬在給我的郵件中是這樣談及他對封面的認識的——

周老師,看到你這份郵件我很感動,也很開心!

雖然我不是學設計的,自己來肯定是做不好這行,但什麼樣的設計適合一本自己的書的核心理念,這個評價的能力還是具備的,而且不學設計的往往評價設計反而更客觀,我記得多年前,國內圖書的封面設計很多都相當花哨,用各種線條,圖片和顏色,喧賓奪主,不著重點,做設計這行和做任何行當都有個類似的地方,就是手頭有鎚子總忍不住不去使,恰好我們最近有個Demo項目的UI的intern designer也正是體現了這一點,在設計上他用足各種花哨的技巧,結果導致不僅UI偏離了大家習慣的風格,而且對讀者的注意力完全是一種分散,致使我們想要在UI上重點呈現的東西淹沒在色彩和線條的海洋中。

最近幾年也許因為一些設計方面的書籍引進,也許其他原因,不管是web設計還是平面設計方面,國內的水平和理念似乎也正在和國際接軌。less is more 的極簡主義設計風格開始流行,我在前面的郵件中提到的國外一系列暢銷科普書的封面設計就是我心目中成熟設計的一些典範,沒有冗餘的干擾讀者注意力的細節,才能真正把該凸顯的東西凸顯出來。此外,這些好的封面設計大多有一個共性,就是在最能吸引目光的位置有一個具有象徵意義的物體,雖然這個手法並不是最近出現的,但似乎正在變得越來越成熟,我還記得當年大量計算機書籍的封面都會有101010鋪滿了背景,當時就覺得很不優雅。

《編程之美》的封面設計不錯,封面物體的隱喻明確而經典,且沒有額外的分散注意力的細節。但《把時間當做朋友》封面上選取的物體就不好,我的理由很簡單,既然是象徵性的隱喻,既然是在封面上,那麼能否容易地讓讀者一下領悟其含義(但又不能太直白,要容讀者有一種自己領悟的愉悅感),發出會心的「哦」,才是評價的唯一標準,我記得當時我也參與了《把》的封面設計討論的,我的觀點就是雖然海螺的隱喻可以說出一二三來,但絕對算不上明顯,我猜90%以上的讀者連一重隱喻都想不到(我就想不到),別說3重了(但設計者自己往往會受到自己知識的偏見,認為隱喻是顯然的,這個經典的現象也被稱為 「知識的詛咒 curse of knowledge」,與之相關聯的一個心理學實驗就是讓一個人打拍子另一個人猜是什麼歌,打拍子的人總覺得對方能很容易猜出來(比如打的拍子是「生日快樂」),然而實際上聽的人幾乎總是毫無頭緒。

如果想不到,那麼這個物體就跟任何漂亮的圖片沒有區別。
所以我認為封面——讀者在買之前只會留意十幾秒——不應該包含多於1重隱喻,而且隱喻不能牽強,必須一目了然。我還是忍不住提一下Blink,Freakonomics和Rework的封面設計,他們就跟封面設計的教科書一樣,以簡潔而大氣的風格,具備一目了然的核心象徵意義的物體代表了現代設計的優秀理念。

之前T老師未離職的時候不便如此長的明說,畢竟人家也是學設計的,但現在想來還是應該早點說出來(在第一稿的設計我已經有此想法了),早點說出來也許能夠節省周老師出版社那邊來來回回討論和重構的很多精力。我記得周老師之前提過要做「諍友」的理念,我贊同。
T老師是化名。——周筠注

由於未鵬自己對封面有著清晰的思考,所以他一次次地否定自己不滿意的封面,但他並不是做簡單的否定,而是能一次次地耐心說明為什麼他不贊成那樣的設計,讓我們心服口服。當我們決定放棄與那位始終缺乏耐心來理解未鵬想法的設計師的合作,轉而找到上海一家荷蘭平面設計公司合作時,這家公司的設計師根據未鵬提出的封面素材構思(沙漏)很快便設計出封面原型,未鵬十分高興,但他並不因為已經初步達成自己的想法就開始馬虎了事,而是繼續一次次提出自己的優化建議,以下郵件是在荷蘭設計師給出封面設計第五稿時他給我的回復——

周老師您好:
不管是暖色還是冷色,書名左上還是左下,我都喜歡。都非常好。如果非要仔細分辨的話,個人感覺和周老師一樣,冷色+書名左下的方式似乎更酷更理性一些。

個人感覺書名左上和左下的區別應該是:左上是突出書名的設計,左下則是突出沙漏的設計。

由於左上角是人們視線最先和最重點停留的位置,所以在左上角放置書名方塊的意義是書名重於沙漏,並且由於左上角在視線中的權重高,所以雖然不管怎麼放占的地方都一樣大,但放在左上的色塊在主觀感覺上所佔據的空間更大。而放在左下則似乎給封面上沙漏留出了更多的空間,封面更大氣和廣闊,從而衝擊力更強一些。

不過究竟如何取捨我相信設計師的判斷和直覺,反正我都滿意:)

P.S. 這幾天忙於techfest和跟大夥到處跑,回郵件有延遲,望周老師見諒。

P.S. 我還注意到兩版設計的一個細微區別,冷色版的沙漏左右更寬,直達封面的左右側。暖色的沙漏寬度縮小了。不知道是我先入為主的印象還是什麼原因,感覺上似乎第一版沙漏更具張力?(因為不僅上下溢出,左右也是填滿的)

未鵬的細緻認真,得到了荷蘭設計公司上海分公司負責人Z老師的高度稱讚,他在郵件中回復——

未鵬果然厲害,能看出兩張圖片的細微差別,這一點不容易做到。

我們設計師在圖片鏈接時都搞錯了(因為當初找了很多圖片),我們已經在周五更正了,下周一在得到電子社logo的最小尺寸的說法後,我們會再試一下左下角的方式。

從未鵬身上,我們可以看到周老師合作的作者的素質,欣慰

我在這裡展示的只是一小部分未鵬和我們溝通《暗時間》封面的往來郵件,實際上,為了這個封面的最終確定,我們總共往來了幾十封郵件。為了整本書的出版,溝通的郵件就更多了,因為總有各種各樣的細節需要敲定,文字的,圖片的,其他。


我注意到題主在提問中講了這樣一句話——

跑通演算法很開心,但是挑bug很痛苦,而連續幾天挑bug總是做不好的時候更是痛苦

其實,上面講未鵬和我們溝通《暗時間》的封面,其中相當一部分,就是在挑bug,而未鵬之所以得到設計方的高度稱讚,是因為未鵬發現了他們的bug。

未鵬從南大畢業,進微軟亞洲研究院,在鄒欣老師的團隊。某次聊天中和鄒老師聊起未鵬,從不輕許人的鄒老師誇獎道:未鵬啊,做什麼都能做好


寫到這裡,我又想到未鵬的另一篇博客:不要過早退出循環

興趣遍地都是,專註和持之以恆才是真正稀缺的。

很多人看了書中的故事之後得出這樣的結論:興趣最重要。然而,我覺得區別他們和其他人的,並不是他們擁有超過常人的興趣,而是他們擁有超過常人的毅力。

其實人天生就對新事物懷有好奇心,難以找出誰沒有對任何事物或領域產生過興趣,然而不同的是,有些人的興趣只能持續幾天,當遇到第一個困難,第一道坎的時候,他們就熄滅了,然而另一些人的興趣火花會變成火苗,火苗會變成火種,一直穩定的燃燒很多年。區別他們的並不是興趣的有無,而是他們的性格裡面有沒有維持興趣的火種一直燃燒下去的燃料

一個人有專註和持之以恆的性格,即便在一個沒有多大興趣的領域也能成為專家(更何況,興趣的很大一類來源就是「我擅長做這件事情」);反之就算有興趣也很快會被一些冷水潑滅。

未鵬在這篇博客里很實在地給出自己的建議:

專業技能的成功是最具可複製性的
它需要的只是你在一個領域堅持不懈地專註下去,只需要選擇一個不算太不靠譜的方向,然後專心致志的專下去,最後必然能成為高手或者絕頂高手。世上有很多成功帶有偶然因素和運氣成分或出身環境,但至少這一樣,被無數人複製了無數遍,否則就不會存在學校和教育了。

無獨有偶,李笑來老師最近一篇流傳較廣的文章也在談這一點——

學習(磨練技能)永遠是創造驚喜的最根本手段

很多人其實是不相信自己會變得更好的 —— 本質的原因是他們各項技能在某個時間點開始徹底停止進步,而自己騙自己多少有些難度,於是已經接受自己「就是那樣了」的現狀…… 這樣的人,是沒有辦法相信自己會有好運的,只因為他們沒有辦法相信自己會變得更好。這樣的人,其實早已經不再有未來,也就更沒辦法對自己的未來自信 —— 只是他們自己意識不到,沒有能力想得這麼清楚而已。這樣的人,沒有壞事發生就已經該謝天謝地了,根本不可能有什麼驚喜。

在我看來,正是因為未鵬有著這種「做什麼都要做好」的認真勁頭,所以他能夠一邊認真做著手頭的事情,一邊尋找最能發揮自己獨特優勢的領域,一旦遇到了機會,以他長期修鍊(從不間斷)的專註和堅韌,便能牢牢抓住機會。——暗時間 的出版,便是很好的例證。當年,和未鵬一樣寫博客出名的同齡人有不少,但真正能把握住機會,把博客變成正式的圖書產品的,寥寥無幾。而且暗時間 在上市的五年里,連續印刷16次(最近又要重印了),豆瓣書評300+(豆瓣短評3000+)。

軟體工程的奠基人之一瓦茨·漢弗雷總結說,軟體領域可以分為兩個方面:一方面是技藝創新的大爆發;而另一方面是堅持不懈的工程工作,包括軟體的改善、維護和測試等,這一方面佔了90%—95%的比例。——我在鄒欣老師的微博上,一次次看到了這樣的堅持不懈——

倘若在自己所做的事情上,一次次地都忍受不了「挑bug的痛苦」,也許就只能是在消極地空等自己心儀的職業機會來臨——由於在等待的過程中,自己並沒有好好修鍊做任何事情(無論是有興趣還是興趣不大)都需要的心智(專註和持之以恆的能力),那麼機會對你來說,很有可能也就是竹籃打水一場空,稍縱即逝。

這種能夠持續挑bug的耐心和毅力,不光對於編程很重要,對於做任何事情,都是重要的。在我看來,這便是一個人的核心競爭力。有耐心給自己做的事情挑bug的人,是具備反思能力的人。以未鵬在不要過早退出循環里的這幾段話作為結尾:

反思是讓人得以改進自己的最重要的思維品質

很多人在成年之後甚至未及成年,性格就難以再發生大的變化。性格是這樣一種自我實現和強化的陷阱:如果你是不容易專註的人,你會發現生活中處處都是分散你注意力的東西,你的思維難以在一個事情上停留半小時,於是你的時間變得瑣碎,你很難在一個領域有長久的積累和深入的思考,這樣的現實可能會讓你感到沮喪,後者讓你更加無法專心,這樣的現實可能會讓你感到焦慮,為了避開焦慮你又會去尋求其他的刺激,結果是惡性循環。

反思是改變自己的第一步,我們常常容易發現別人的問題,別人的錯誤,卻難以發現自己思維中的問題,因為我們很少會把自己的思維當成目標去思考。

作為程序員,相信沒有人不知道能修改自身的程序,而能修改自身的程序的前提就是,首先這個程序必須有法子能夠指向自身

推薦:

警惕:那些對深入了解事物缺乏巨大興趣的人 - 虛晃一槍 - 知乎專欄

有哪些可以提高程序員技術檔次的書或博客?

作為一個帝都碼農,現在的處境很迷茫,不知道未來在哪裡,我該怎麼辦?


我通過公號的形式開通了『向我提問』,你可以在公號菜單上看到這個選項。

公號:七星灶八仙桌


不知道你怎麼想的。先不說你這個態度能不能當20%。

假如你只是不是1%的話,也就是程序員這種需求大,市場大,體力勞動多,最終產品和人員勞動關係緊密的行業最適合平凡的人了。

覺得自己做不好1%的話,搞CS反而是好的選擇。
想想別的行業,開心還來不及好么。

搞藝術的話,不是1%的演員可以養活自己么?盒飯都不能回回都有吧?
不是1%的歌手能正經發過一個單曲不?能去酒吧駐唱就不錯了。

要做到前多少萬分之一的運動員才能養活自己? 職業網球一共也就能養活200-300名男子運動員,可能只能養100個女子運動員,剩下的不管你打的再好也不能靠比賽養活自己。
籃球市場夠大吧,前1%,能進CBA不?CBA好多球員收入還不如碼農批發價呢。


咱換一些更常見的專業,
世界需要一個不是萬里挑一的做數學,物理,文學的人么?
要我說,理論數學可能世界上一百個人就足夠了。剩下的人教書就好了。

那咱再換個一樣掙錢多市場大的行業,金融。
你覺得不是金融的1%你能去幹啥?投行,證券,買方賣方,quant,HFT,有哪一個不是要求名校高GPA從頭到尾都是優秀到家的人?不是1%能找到金融行業的工作就不錯了。

最後再擦邊球的講一下公務員。一個地方那麼多公務員,一共能有幾個可以飛黃騰達?甚至退一步,不用天天看上級臉色的?當個平庸的公務員每天就在哪裡寫材料準備上級檢查然後看報紙吧。

講真,一個行業能被稱作是"X農「,證明它簡單,重複勞動多,差不多的人培訓好了就能幹。如果同時還能需求量大,薪水不錯,謝天謝地還來不及好么?


哪管他學問無盡,進一步有進一步的快樂


為什麼一定要成為最優秀的程序員呢?


上一張我的博客(Blog - Phodal )首頁的截圖(PS: 那張地圖是我博客的流量分布圖):

我喜歡那句: THE ONLY FAIR IS NOT FAIR,這個世界唯一公平的是它是不公平的。我也想努力成為1%的程序員,但是我發現現實不允許我那樣做。出生在教育分配不均的地方,就意味著你離名校非常遙遠。沒有足夠的家庭經濟基礎,就無法讓你支撐起足夠的夢想。 後來我發現:邊賺錢、邊分享、邊創造,這才是我追求的人生。

既然成為不了1%,那麼我們可以幫助別人成為1%。

既然成為不了1%,那麼我們可以幫助別人成為1%。

既然成為不了1%,那麼我們可以幫助別人成為1%。


我喜歡創造:編程的過程是無聊的,創造之後卻滿是成就感。

我從小開始寫代碼,雖然自認為基礎比較好。但是從來沒考慮過成為最優秀的程序員,想的是做一些有意思的事。也一直在做一些有意思的東西,每次我都可以分享一些有意思的東西~~~。

做一個有意思的總結技能樹

讀取自己手機(Nokia Lumia 920)拍的照片放在地圖上顯示

以及之前做的尋找GitHub大V應用,http://github.com/phodal/vmap

還有學習做遊戲地圖生成器

技術趨勢雷達

等等,更多見:GitHub - phodal/ideas: Phodal"s 孵化器

這個世界有太多的東西可以去探索,有太多的東西可以探索。
這個世界有太多的東西可以去探索,有太多的東西可以探索。
這個世界有太多的東西可以去探索,有太多的東西可以探索。

上面的內容都在我的GitHub上(phodal (Fengda Huang) · GitHub)~~。

上面的花花綠綠,其實只是想說明一點:編程需要刻意的學習和練習。
我喜歡分享

我的博客上已經有552篇博客。有一天,我用Hadoop + Jython + Pig分析自己網站的訪問日誌,做成了下圖:

我發現這滿滿是成就感,這就是分享的價值。

看到自己寫的電子書收穫了一個個star,也是一種享受。

成為1%的程序員,而不幫助這個世界變好,又有什麼意義呢?
成為1%的程序員,而不幫助這個世界變好,又有什麼意義呢?
成為1%的程序員,而不幫助這個世界變好,又有什麼意義呢?


99%的人都是進不了1%的,1%的人也要死,死後五百年也沒人記得,那又怎麼算。一切最終都湮滅在時間裡,但人活著的時候,做事的目的要比成為1%具體豐富,也現實得多。

即使你寫很多人看不上的HTML,CSS,也能寫出好的boiler plater或者好用的東西來。即使你不寫這些對所有人都好用的東西,你也可以寫對周圍這麼一兩個人有用的東西。我的意思是,技術本身最終能達到的深淺除了技術本身,還有程序員自己能做到的縱深。

價值是多元的,不是單一的,能把手頭工作做好,對得起自己良心,賺的薪水能養活一家人,就挺好。


不論幹什麼,
能夠認識到自己是普通人只能做些普通事,
延伸到這輩子只能過普通人的生活。
這不僅是需要不普通的自知之明,而且更需要智慧和心態。

大叔我快四十了,都還沒看透,因此經常感到不甘心,何況你們?


每個人在畢業的時候都會覺得迷茫,對自己產生懷疑,所以你有這樣的問題也是可以理解的。

你說你對編程的熱愛程度只是喜歡,但是你並不討厭呀,不討厭說明有繼續下去的意義。編程的過程中Debug的確會很痛苦,但是把bug解決之後的成就感也是無法言說的,即使是Top1%的程序員也會有難以解決的bug。

你說你喜歡分析數據,那麼你可以在這一方面多進行學習,術業有專攻,所謂工匠並不是精於所有,而是有自己的專長。我覺得喜歡就去鑽研,多學一點並不會有損失

所以,我覺得你可以先找到工作,等你真正上手了再來問這個問題,那時候你的心態可能會有不同。


看到題主的表述,我彷彿看到了我自己。我也是對很多事物感興趣,並不局限於寫程序。
我喜歡讀文學書籍,看電影,爬山,游泳等等。想要學的東西更多了,吉他,圍棋,廚藝等等。
為什麼想學這麼多的東西?因為覺得好有趣,能吸引我。
吉他隨便玩兩下,會幾個和弦,就能談個簡單的曲子;
隨便搜個菜譜,就能做出個差不多的菜來;
然後,我就會覺得我在這個方面也許有天賦(至少比痛苦挑bug那樣寫代碼有天賦),我再繼續學一學可能就會有更高的成就。
於是,我給自己定了計劃,每天1小時吉他,每周學個新菜...
過了一周,我自信滿滿,人生翻開了新篇章.
過了一個月,我已經學了不少新和弦了,說不定可以出去彈琴把妹了;
然後,把妹子請來家裡,再展示個廚藝什麼的...
過了三個月, 最近有點忙,彈琴沒進展,MD, 手好疼,還彈不好;做菜已經沒有了熱情,而且我最近在減肥,不能總做好吃的......
過了六個月, 咦,我的吉他都積了一層灰了,左手的老繭都沒了;平時做菜也開始重複了,不熱衷嘗試新鮮的菜品了;
過了十二個月,哎,我覺得滑板不錯,你看多酷,學會了就能每天踩著滑板在校園裡浪;我趕快網上下個單,找個教程學一下,一定比什麼練吉他,死宅家裡有意思多了....
......此處省略666個字......
後來,我的感悟是:對一件事情,僅僅是好奇,感興趣,入門不會太難。但是,你若想精通一件事情,做到專業,指這個技術賺錢,困難級別就完全不同了。
回到題主的問題,沒辦法成為最優秀的程序員,還該不該堅持做程序員?
這要看你想不想指著寫程序吃飯(即專業的)。如果想成為專業的程序員,就一定會很困難。
因為這樣才合理呀!只有這樣,專業的程序員才會有飯吃,否則人人都隨便寫寫程序,就能當程序員了,我們還怎麼吃飯?
而且,即使無法成為最優秀的程序員,你也可以成為比較優秀的程序員,因為最優秀的程序員往往只有頂尖的那一小撮人,大量的崗位是需要比較優秀的人就能勝任的。說白了,寫程序的能力就是一種手藝,你要每天完善,打磨自己的技藝,一點一滴地提高寫程序的能力。(此處,請自動腦補小野二郎的語調和面龐)。 插一句雞湯文:「不是因為我能成為最優秀的程序員,才想著去寫代碼;而是因為堅持不斷地寫程序,才有希望成為優秀的程序員。」
......1024步......
退1024步講,假使你不選擇當程序員,換了你喜歡的其他的工作,你又有多大把握成為最優秀的呢?


問個題外話,題主在什麼領域能做到top 1%了?

說白了就是不想干這行吧,還給自己找借口,呵呵噠。


意識到了自己做不了top1,不才最應該去做程序員么?


程序員,千萬不要自悲,facebook創始人只會也Php,hao123創始人只會排html,阿里巴巴創造人只會英語,無論你開發的是什麼產品,是什麼服務,關鍵要在這個金錢世界中找到轉化為金錢的方法,才是唯一通道,無論你是入股,打工,還是自行寫程序,不要迷信別人的成功光環,程序員用你的程序來抓住商業機會,只要有條件阿斗一樣的傻子都可以當皇帝,普通程序員只要有條件一樣可以做一個有錢的程序員,無論你寫的是html還是彙編,關鍵要把自已的技術商業化,才能得到社會的認可。

程序員,你缺少的只是一顆商業化頭腦,缺少可能是專利,軟體著作權,網站,app,服務,api,產品,桌面程序,運營能力,blog,培訓,開源,寫書。

練劍不是目的,練劍的目的是在這個利益化的江湖中最大化自已的合法利益。

世界如同一個分散式網路,你的加入是合法最大化自己的資源,做到局部最優,至於能不能達到全局最優,這個是系統進化問題不是你的問題,局部最優是遊戲規則。


題主,不是我打擊你,也不是僅針對你,其實無論選什麼道路,你都很難成為 Top 1%。


假如不能成為第一,去做還有何意義?
這話其實是基於比較而產生的,將自己的價值建立在比較之上,是不足取的。如果不是第一就不能活,那這世上就只剩一個人了,這個人又會寂寞而死。
你喜歡,也不一定會做到最牛,充其量各有所長罷了。所以最重要是找到自己的價值所在,假如做這件事,讓你感到自我有價值,讓你有歸屬感,讓你積極投入,讓你覺得人生有意義,那做不做得到top 1%,都是次要的。假如你覺得這件事沒有任何意義也體現不出自己的價值,即便你做到了top 1%,也仍舊沒有意義。


如果你做其他職業可以做到top1%,那當然趕緊去做能做top1%的職業啊,為什麼要糾結在程序員上面?

其實我是在說題設就有問題啦。職業的選擇,不是一個做 vs 不做的問題,而是一個做什麼的問題。所以像題目的這種如果xxx,我做還是不做程序員,問題就不是很恰當。因為你的時間有限,正職只能做一個,所以這些職業選擇之間是有競爭性關係的。
世上360行+1(不工作),比較對路的選擇方式是在裡面選擇最符合你的條件的(比如我能做到最前面的百分比,或者我最可能轉到盡量多的錢,或者我儘可能閑一點,等等)。先初篩快速把選項降低到5-10個左右,然後一個個仔細的去了解和嘗試。最後是一個好中取優的過程。


大多數回答都默認存在一個線性排序,能夠區分程序員的「品質/Quality」。我很好奇,大家所謂的 Top 1% 程序員是怎麼定義的呢?是按照 Top Coder 比賽來劃分的么?那我這種沒有參賽資格的是不是註定 Bottom 50% 呢?是按照收入來劃分的么?那要是 Linus Torvalds 辭職在家豈不是也混不進 Top 1% 呢?那麼 Emacs 異教的先知 Richard Stallman 托缽雲遊四海有資格問鼎 Top 1% 么?我大微軟帝國開國皇帝威廉三世是不是當之無愧的 Top 1 呢?

如果存在某個公認的線性排序,我們要如何對不同領域的程序員進行比較呢?John Carmack 和 Don Knuth 誰更厲害呢?Larry Wall 和 James Gosling 誰更厲害一些呢?(Knuth 得圖靈獎了不起了啊,能做出 Doom/Quake 這樣的遊戲么?而且,作為 Perl 前傳教士我得說 Larry Wall 的語言學造詣更勝一籌~

引用我自己的文章 Career Path - 知乎專欄

經過長達十年的觀察,我終於意識到大多數工程師想要的是一個完美的線性排序,或者說所謂的 Pecking Order。我的老闆們並不關心我寫的程序如何,他們只需要根據我的成果就能做出判斷,我的基本原則不過是「Get shit done」。但是我的下屬們的心態要微妙很多,不少人暗示或者明示我是一個合格的技術領導者——因為我會寫代碼。作為一個口無遮攔的段子手,我在某個小圈子裡面還是頗有一些聲望——雖然很多人壓根沒見過我一行代碼。

舉一個非常不恰當的例子,我的很多(前)下屬真誠地認為,哪怕我只會寫 Perl 腳本,只要能寫一手好代碼,不管市場有沒有需求,我走在市場上都是炙手可熱。如果我是牛人就應該拿高工資,否則我就是欺上瞞下的騙子。很顯然,這和獵頭、僱主們想的截然不同,否則我不可能囤積一大堆拒信。

我很早就有了類似的直覺,但是我一直沒辦法建立一個很好的概念模型。不過,這是社會心理學裡面研究爛了的題材。在社會動物中,這種心態是一種很簡單的適應性進化,畢竟 Pecking Order 就是最早研究鳥類啄食所歸納出來的。這個結論讓我覺得有些難以接受——我們互聯網工程師是技術時代的先鋒,怎麼可能被這些原始的社會性本能所左右?

知乎上充斥著類似的問題和回答,包括但不限於楊振寧在活著的物理學家裡面能排第幾、錢學森算不算大物理學家、PHP 是不是最好的語言。這些問題本身就預設了一個未定義,而且很可能並不存在的線性關係。一千個人就有一千個哈姆雷特,為什麼就不能承認現實的多樣性和非線性呢?

我不知道自己是不是 Top 1% 的程序員,在我被某大公司 IPO 之後,我的年薪大概在當年達到過中國的 Top 1%。先假設我成為了所謂的 Top 1%,如果我辭職在家帶娃寫專欄,我是不是就失去了 Top 1% 程序員的資格了呢?(因為辭職在家,我可能有更多的時間寫程序,以及寫好程序。)

我更喜歡用另一種方式回答(zuo)問題(guang gao)

即便我成為了所謂的 Top 1% 的程序員,我也可以放棄程序員相關的職業——這是我的自由。

這些觀點並不是我原創的,而是繼承自一些長者的人生經驗,例如

我得再次強調,認為得了優秀是因為自己聰明的想法並沒有任何錯。不過,哈佛學生沒有認識到的是他們沒有第三種選擇。當我指出這一點時,她十分震驚。我指出,真正的自尊意味著最初根本就不在乎成績是否優秀。真正的自尊意味著,儘管你在成長過程中的一切都在教導你要相信自己,但你所達到的成績,還有那些獎勵、成績、獎品、錄取通知書等所有這一切,都不能來定義你是誰。

譯言-【cenielyj版本】不要在不斷的優秀里走向平庸

對於一個普通人(例如我),同樣有第三個選擇。事實上,有無窮多個選擇。作為一個成年人,我們需要的並不是雞湯和成功學。我們需要的是做出選擇,並且接受這些選擇的副作用。

下面插播一條硬廣。柏拉圖的還原論理想僅僅存在於理想國,我們需要面對部分信息和不確定的未來。不難看出,我們需要利用概率來做出儘可能理性的判斷。少年,我這裡有一本先知留下的著述,對於你所關心的數據分析和人工智慧也有幫助——

我有一個專欄專門做這本書的廣告

Bayesian Gossip - 知乎專欄

BTW: 從宏觀經濟學的角度來說,Top 1% 收入或者 Top 1% 資產的定義相對清楚一些,但是它的定義並不是那麼簡單。我在自己的專欄裡面也討論過

On Top 1% - 知乎專欄

ENCORE

遺憾的是,有個別人不能理解我的敘述方式,熱衷於在評論區裡面展示優越感,或者糾結於職業發展問題。我需要強調一點,我在知乎回答問題和寫專欄主要是為了推銷 Bayesian Methodology,而不是為程序員們提供「Life Advice」。上面這個金字塔僅僅是個具有諷刺性的惡搞圖,並不具備現實意義。(我在上面這個金字塔中只達到過最底層,我在外企混吃等死的時候很喜歡公司發的 T-Shirt——主要因為它們都是免費的。)

我是一個非常純粹的現實主義者,所以我更關心物理學和生存問題,而不是自我實現。在電池和 Wi-Fi 之外,我更關心生存問題,而不是升職加薪什麼的。很顯然,成為經濟上的倖存者,比成為優秀的程序員(或者任何其他職業)重要得多。所以我會在文章中這樣寫:

偉大的修正主義者 Machiavelli 說過,帝國是不可能靠僱傭兵來保衛的。第三帝國深喑此道,所以才會有效忠於元首的衝鋒隊和黨衛軍。舊的帝國正在衰敗瓦解,新的帝國正在鞏固自己的勢力範圍。我很尊敬那些想要挑戰帝國秩序的自由鬥士,但是我更想做一個(經濟上的)倖存者。即便是在虛構的架空歷史中,銀河帝國也會付大價錢來僱傭 Jango Fett 這樣的賞金獵人。
惟利是圖是經濟學中的唯一美德,所以做一個 Mercenary 是理性的。
Career Path - 知乎專欄

雖然我是在做廣告,雖然我喜歡寫段子,但是我並不喜歡拿假大空忽悠人。雖然,我是一個寫過很多行代碼、工作經驗超過十年的「Old Coder」,但是我並不能在缺乏相關信息的情況下回答下述終極問題:

  1. 寫程序能不能養活自己
  2. 寫程序能不能成家立業
  3. 寫程序能不能光宗耀祖

對這些命題感興趣的可以看看這個問題 程序員真的干到35就干不動了嗎? - 互聯網 - 知乎

最重要的是,知乎是一個很好的交流信息的平台,但是沒有人能替提問者做出選擇。更具體的,如 William Deresiewicz 所說(粗體是我標註的)——

你看到這些觀點是多麼荒謬了嗎?這就是罩在你們身上的網,就是我說的需要勇氣的意思。而且這是永不停息的抗爭過程。在兩年前的哈佛事件中,有個學生談到我說的大學生需要重新思考人生決定的觀點,他說「我們已經做出了決定,我們早在中學時就已經決定成為能夠進入哈佛的高材生。」我在想,誰會打算按照他在12歲時做出的決定生活呢? 讓我換一種說法,誰願意讓一個12歲的孩子決定他們未來一輩子要做什麼呢?或者一個19歲的小毛孩兒?

或者,我應該按照量子力學的傳統,對任何沒有放棄寫程序的人提出平凡的建議:

Shut up and write some code.


世界這麼大,為啥非要爭著做第一?不過有點追求還是很有必要的,至少要讓自己在一小波人的眼裡看起來牛逼。例如你的老婆,你的家人,你的同事,你的領導(這個比較難233)


你自己都說了那麼多了,還有什麼可問的?

可以考慮踏踏實實具體做一做試試。太過浮躁有點不太好。


推薦閱讀:

有哪些比較好的機器學習、數據挖掘、計算機視覺的訂閱號、微博或者是論壇?
機器學習(machine learning)在經濟學領域是否有應用前景?
從事經濟、金融工作的人都是通過什麼渠道獲得數據資源,運用什麼軟體來分析行業狀態和經濟走勢的?
調參這事兒,為什麼越干越覺得像老中醫看病?
有什麼好的模型可以做高精度的時間序列預測呢?

TAG:程序員 | 數據挖掘 | 職業規劃 |