有很多人,包括我也困惑的一個問題,就是如何成為一個很厲害的工程師。類似的問題也有很多,如何成為一個很厲害的營運,如何成為一個很厲害的産品,或者跨行業的,如何成為一個很厲害的醫生,如何成為一個很厲害的作家等等。
如何成為一個很厲害的工程師,我想是我的畢生追求,至少目前是。
榜樣的力量
一個很好的方式,就是以業界成功或者知名的人來作為目标。從阿裡來說,就有很多很厲害的人物,比如多隆,“他從阿裡的第一位程式員,做到了阿裡的合夥人,是神一樣的人物”、“阿裡掃地僧”、“一群工程師幾天無法排查的問題,多隆一眼定位問題根源”。
比如吳翰清,“輕松癱瘓阿裡内網,防禦16億次黑客攻擊”、“20 歲入職阿裡,馬雲 500 萬聘請的天才少年”。類似這樣的阿裡人,多如牛毛,以上兩個已經在網際網路順手拈來的神話般的人物。從阿裡内部看,可能就更多了,無數的P10和P11都有各自的神話故事,也是每個技術人榜樣。
不可複制的神話
在學校起,就湧現了很多網際網路的天才人物,10歲的黑客,百萬年薪的阿裡星天才等。讓人的感覺,此類人物天賦異禀,是常人無法企及的。比如多隆,一眼能看出的問題,我等屌絲程式員首先,要拿出電腦,列印錯誤日志上下文,拉上上下遊同學,DEBUG一個星期,可能勉強才能定位:這尼瑪,原來少傳了一個入參。
是以除了望洋興歎,我不知道自己能做什麼。
不可複制的年代機遇
有些神話可能注定是神話,成功的人很多,但是沒有一個成功是可以被複制的。成功不僅自身天賦很重要,也需要同時具備天時地利人和。
在網際網路野蠻生長的十年,湧現了很多技術牛人,但是到了如今網際網路紅利吃緊的時代,缺沒有新的技術大牛嶄露頭角,在如今,想成為技術大牛,卻變得如此艱難。
從業前,
求伯君寫出了WPS第一行代碼,那時候我剛出生
馬雲去美國的時候,中國沒有網際網路。
馬化騰QQ使用者50萬的時候,我還在高中的破網吧裡,着急向網吧老闆2塊錢買個QQ号。
新浪微網誌走紅的時候,我還在研究所學生期間寫論文。
從業後,
人手必備的迅雷已無人問津
紅極一時的暴風影音關門大吉
而今,
大大小小的公司紛紛裁員。
年代已不在,當初的網際網路有多火,現在可能就有多悲傷
于是乎,大多數人這麼做
沒有天賦,沒有時代的紅利,如何成為一個厲害的工程師,變成了一種奢望和工匠般的追求。
大多數人,開始了搶灘逃難,有去考公務員的,有去國企的,有去開店的,當然,還有去送外賣的。
但是更多的,是在潮水褪去,光着身子,站在沙灘上,無所适從。于是,“摸魚”成為了一個程式員最佳的選擇。“摸魚”成為了一種态度,也成為了一種工作方式。
無戰略,無戰術,從以前的指哪打哪,變成了打哪指哪。
撸碼随心所欲,跑起來是檢驗系統成功上線的唯一标準。
編碼狂放不羁,半年内不出問題是編碼的唯一标準。
“可維護”,搞笑吧,半年後我可能跑路了,維護不維護跟我有啥關系;
“可擴充”,逗我玩吧,業務半年後也要挂了,擴充啥玩意;
“高可用”,瞎扯了,就幾十個幾百個人通路,挂了幾天也無所謂。
當石匠喝完酒來建别墅,當奔馳在索馬裡創辦工廠,當當紅小生來主演曆史劇,可想而知,我們理想中要的精緻和現實中的粗糙會有多大的反差。
此時,一本《論演員的自我修養》應該給演員一個大大的耳光。同樣的,一本《論程式員的自我修養》也應該擺在大多數有追求的程式員面前。
至少,此時我,還想有一些追求,追求設計出優雅結構的系統、落地快速發展的業務、追求成為一名優秀的工程師。
如何成為一個厲害的工程師
從知乎上一個經典的理論,“以大多數人的努力程度之低,根本輪不到拼天賦”,即大部分對于自己夢想付出的努力,還遠遠不到拼天賦的地步。換句話說,每個人隻要真正努力,就可以超越大部分人。
保持學習
前兩天跟公司的一位P9溝通,他說,我至少幾個月要保持學習一門新語言,從學習新語言裡學習新的思考方式。對于普通程式員來說,不僅要保持學習的态度,更要保持學習的深度,學習是唯一不落後的最佳管道。
我在項目裡,就學習java8的文法,用新文法來嘗試新業務,效果出奇。而且據我觀察,往往有追求的大佬和新同學,都對新技術渴求和渴望。
即為明顯的一個例子,我根據多年的交易經驗,設計了一套輕量級業務隔離架構,一個P9大佬,在我做完技術彙報後,硬是單獨拉着我,咨詢我架構是如何實作,并且直接閱讀我寫的源代碼,一直到問懂了才恍然大悟。
學習,可以是學習書本知識,可以學習當下的知識付費,可以學習跨界思維,還可以學習人,學習大師,學習身邊的同僚。
REVIEW
學而思,學和思本來就是互相補充的關系,而REVIEW在網際網路界,有着更深的含義,有CODE REVIEW、故障REVIEW、項目REVIEW、技術方案REVIEW等等。網際網路變得很快,有時候快是第一要素,先行搶占市場,搶占使用者才能勝者為王。但是快,往往也會忽視很多問題,忽略方案上的漏洞、忽略代碼上的缺陷、忽略團隊上的管理和溝通,此時要停下來,REVIEW自身和項目,繼續做到每日精進。
借勢和借力
前幾周末,跟CTO做技術REVIEW,我彙報的主題是交易系統架構。談到跨部門的合作問題和難點,CTO一句話讓我醍醐灌頂,如何推動項目。他說,做業務,要懂得借勢和借力。借勢指的是兩者目标一樣,自然能促進業務發展和跨團隊合作,借力是指複用已有的産品能力、技術架構。兩者合二為一,驅動業務發展自然水到渠成。
總結和抽象
我一直認為,從低層次往高層次走,最重要的一個特性,就是“總結和抽象”。這是一種能力,也是一種思考方式。
前兩天看到有很多同行在脈脈吐槽阿裡的中台,“徒有其表”、“炒作概念”、“無需中台”的評論。為什麼從中台哺育了整個阿裡經濟體技術架構的中台,在這些人裡一文不名?我想除了不懂阿裡内情、視角不同外,很多人缺少“總結和抽象”的能力。
總結,是把一篇文章,用一句話概括;能從下筆千言裡,找到最重要的一句話;能把做了半年的系統,用一個序列圖完美釋義。資訊泛濫的網際網路,總結變成了一種非常重要的能力,能剔除垃圾資訊,找到最重要的值得付費的一句話。
總結是精煉,類似咖啡萃取,将最精華的部分提煉出來,可以了解成量變,隻不過是将大的化小,化繁為簡;而抽象是質變,将一個業務和一個系統,抽象到更高的層次,抽象成更為通用的了解方式。抽象,用哲學來說,是還原一個事務最本質的面目。在JAVA面向對象程式設計裡,一個非常重要的特性,就是接口定義,接口就是對業務具體邏輯實作的抽象,抽象出一個子產品具有的能力。
舉個例子來說,釘釘有很多功能,IM聊天會話、審批、打卡等,抽象起來,這個能力叫:辦公協同。
抽象可以讓使用者在更高層次上去思考,拓寬業務和系統邊界。這也是為什麼老闆一句話,屬下做一年。正是老闆在更高程度的抽象,而實際落地,卻是需要補充無數的血肉,才能真正落地一個業務。
之是以老闆可以高瞻遠矚,而我等屌絲隻能一線撸碼,相信也是總結和抽象能力讓我等望其項背。
最後
讀一本書,不會成為很厲害的人,但是想成為很厲害的人,可以讀一下《如何成為一個很厲害的人》,知乎推薦書目。