閱讀時長約10分鐘,統計2604個字。
這是一篇插隊的文章。
本來我是有備稿,準備在下週一的時候釋出,結果就在上週二,發生了一件事情。這件事情讓我產生很多啟發,我在這裡把它分享給你,希望對你也有所啟發。
週二下午,有位老兄加我微信,備註來自部落格。這也不足為奇,最近更新比較頻繁,加了很多人。這位老兄一上來先是肯定了我的文章,隨後指出了文中的錯誤。坦率地講,自從復活部落格之後,這還是第一位指出我錯誤的朋友,一下子我就來了興趣。
在本系列文集的《序》中,我原文是這樣寫的:
我一直奉行一句話:“有道無術,尚可求也;有術無道,則止於術”。這句話出自老子的《道德經》,而且很好理解。
他指出《道德經》裡其實沒有這句話。但是呢,本著對讀者負責的態度,我在寫文章的時候確實去查了一下。程式設計師這個職業大家都懂,比較較真,至少我是這樣的。於是我就找到了一些依據,來證明我說的是對的。但很快便發現事實其實不是這樣,這位老兄所言非虛,我引的這句話確實並不出自《道德經》。所以,我要在這裡向所有讀過我上篇文章的朋友道個歉。澄清一下:“有道無術,尚可求也;有術無道,則止於術”,儘管這句話有幾分道理,但真的不是《道德經》原文。
好了,故事就到這裡結束了。說到這,大家應該也能理解我為什麼要把這篇文章拿來插隊。一方面趁熱打鐵,有錯誤及時宣告,另一方面這個故事對我有新的啟發。
這位老兄,名為張鴻羽。稍加細聊後,我得知鴻羽兄是有背過原文的,而我沒有。我只是看到大部分都這樣說,便信以為真,然後也跟著這樣說。顯然,我成為了大多數人中的一份子。而鴻羽兄是少數派中的一份子。有時候,真理真的掌握在少數人手中。
回想過去幾年的工作歷程,特別是剛開始工作的那幾年,我做的很多工作都是“探索型”的。所謂“探索型”,就是對新技術,或者說是公司的研發部門未曾使用過的技術進行嘗試摸索。當然,嘗試新技術之前,要能發現新技術。而一項新技術的誕生,總會伴隨著官方的宣傳,以及一些支援它、擁護它的人高聲叫好。但只有真正嘗試過,特別是用新技術來實現較為複雜系統的時候,才會知道這項新技術到底優勢在哪,劣勢又在哪。
誠然,如果讓我來總結我嘗試新技術、新框架的經驗,我會說:大部分新技術或是框架確實彌補了已有框架的不足,但其彌補的程度往往並不是質變的,只是小步最佳化。甚至有些新興技術在彌補的同時,還引入了其它的問題。這對於使用它的開發者來說,的確是個壞訊息。
但話說回來,沒嘗試用過,又怎能知道答案呢?技術的發展本就是這樣一步一個坎,有時候走一步還退兩步的呀。
這或許就是我等軟體開發者的宿命,對於現存的技術框架,總是有這樣或那樣的不滿意,覺得用著不順手。期盼著某一天,某個技術大佬,或者團體,發明瞭一種新的框架,甚至是新的程式語言。或是直接起義,自己創造一款新的技術框架,能真正地解決那些令我們不滿的問題,讓軟體開發程式設計成為真正的享受。
但現實是,很多新的技術框架的誕生,都伴隨著類似的口號。也總會有勇敢的開發者嚐鮮,也總會經歷被坑,然後不斷填坑的過程。而這些敢於嚐鮮的開發者,就是那些最終會成為“少數派”的人。他們知道在各種美好的宣傳背後,隱藏著多深的坑。對於這些坑,又該用什麼方法去填。
“少數派”或許才是那些頭腦最清醒的那一小撮人群。
但是,成為“少數派”不僅意味著失敗的嘗試,還有大多數人的不理解。甚至更嚴重一些,就是詆譭,百口莫辯。這需要一顆強大的內心,和與時間做朋友的勇氣以及態度。
不過,我為什麼鼓勵程式設計師要做“少數派”,而不是成為“大多數”呢?還有另外一個原因,那就是由行業特徵決定的。我相信程式設計師大多都活躍在網際網路行業,這個行業是贏家通吃的指數型結構。有點類似財富分配,大部分的財富掌握在少數人的手裡。而且無論如何數學建模,或是提高那些窮人的初始資金,最終推演的結局依然如此。
如今,在中國,乃至全世界,所謂“網際網路大廠”無非就是那幾家,而剩下的呢?數字上遠遠超過我們熟知的那些大廠,但擁有的財富值卻位於指數圖表中的長尾之中。這就是指數型的行業的特徵,也是程式設計師這個群體的特徵。
如果大家有查相關的資料,可以發現優秀程式設計師的工作效率往往是普通程式設計師的好幾倍,儘管薪水上的差距不是這樣。而大多數都是普通程式設計師,優秀程式設計師只屬於“少數派”。優秀程式設計師,拿到需求,會做足夠的分析,到了動手的時候,則像個流水線的工人;普通程式設計師,拿到需求就想趕快動手,面臨的有可能是回爐重造。優秀程式設計師,會充分考慮到使用場景,採用防禦式程式設計來規避可能帶來的缺陷;普通程式設計師,想的只是實現需求,把程式健壯性扔給測試人員。優秀程式設計師,會考慮程式碼的可讀性,為程式碼新增合適的註釋、每個方法或函式的功能單一、清晰;普通程式設計師,急於求成,不注重程式碼規範,導致日後維護困難……
但是,追求效率和追求質量,大多數公司都會選擇前者。但做多和做好,結果往往相差甚遠。
大部分人傾向於做多、擴張、追求規模化。但殊不知做大的後果往往是成本的上升,利潤卻不一定變高。但做好卻不一樣,它追求的是平衡收支,而不是盲目追求利潤。更好的做法其實是在做好之前,不要做大。要相信好產品,自然會帶來口碑。過分追求大規模,反倒會使高利潤遠去。而把事情做好的心態,看似發展得慢,實則是條捷徑。
回顧我創作的歷程,之前的我總想著多寫,多寫就是擴張,意味著規模。但這種心態往往做不出好書,因為這是效率當先,質量次之的做法。但我身邊也有的人,創作很用心,不著急讓書早日面試,很認真地創作,比我的速度慢一些。這便是把事情做好的心態。你猜結果如何?人家一年十幾萬的稿酬,我卻只有可憐的幾萬塊。
所以,上面那套理論並不是我胡亂寫的,或是從哪本書裡看到,就抄過來的。而是真的付出了血和淚,總結出的道理。在此,我勸你做個“清醒”的人。追求效率沒錯,一旦做得過火,則會適得其反。
另一方面,如果只想成為大多數,可不可以呢?當然也可以,只不過網際網路行業或許不再適合。那些符合正態分佈的行業才是想成為大多數的那類人的理想去處。
比如,餐飲行業。現在,大家可以想一想,有沒有那家餐館,或是哪個餐飲品牌,能做到贏家通吃?似乎沒有,如果也去查這方面的資料,就會發現餐飲行業其實並不是指數分佈,而是呈正態分佈的。只要能做到普通中位數的水平,就OK了。
真正的高手一般都是“少數派”。他們不僅能力拔群,思考問題時的方法、對世界的認知和一般人都有區別。若要成為軟體開發工程師中的“高手”,必須成為“少數派”,成為戰場上的傳說。