1. 程式人生 > >學會思考技術背後的那些思想和本質

學會思考技術背後的那些思想和本質

如果你有裝修過,或者家裡造房子的經歷,你會發現,大多數“技術工人”都是半瓶水,讓你滿意的人實在是鳳毛麟角。就算你要找一個很有責任感的,不需要你去監督,做事情精益求精的人都基本上是沒有的。

你或許在裝修,並正在抱怨那樣的技術工人。但是,你的老闆或許也同樣的在抱怨你:只有半瓶水,還吹牛吹的不行。當沒有人監督,沒有專案任務的時候,你就開小差,偷懶。做事情,也都是在趕進度,湊合,矇混過關就行。

我想,這或許就是技術工人吧,我們的工作實際上沒有什麼創造性。所以,當我們工作很多年,也就不再有激情了,變成江湖小混混了。你可以學會N種程式語言,學會怎麼更好的組織程式碼,學會如何在unix上寫程式碼,只要花出時間,功夫,你就能成為一個優秀的程式設計師。技術,說白了,就是熟能生巧。不管,你掛了什麼架構師的頭銜,還是你在搞什麼雲端計算,聽上去在弄一些別人不知道的技術,其實學習這些技術不需要一個人多少悟性,多少創造性,只要花下時間這些東西你都能很精通。像處理大資料,正如我一個在淘寶的朋友說的,大多數覺得這個神祕,是因為平時工作的時候接觸不到,實際上,如果每天都接觸,也就是這樣一回事,這就是技術。我想,每個人,當它學了很多技術了之後,肯定就會發現這樣的一個問題,我學了這樣多,情況也就是這樣,可能水平比別人好一點,但是也搞不出多少檔次,難道我這輩子就這樣學下去了嗎?於是,慢慢的,我們就會變成正常的“技術工人”了。

在我研究高效能服務的時候,我研究了很長時間的 IOCP ,linux 上的 aio,libev,並讀了一遍nodejs的原始碼。我突然發現,我學的是比別人多一點,但是僅僅是這樣而已,因為一門技術,公開的技術,每個人都可以搞清每一個細節,然後就可以實現一個很高效能的伺服器。所以,本質上,我們沒有什麼競爭力。也不能為我們這個世界做出突出貢獻。

我經常會聽到某人某人技術有多牛,我就會很崇拜,我一直很羨慕一些人,懂得很多東西,為什麼他們有這樣多的時間去學這樣多的東西。去年,我認識一個人,他會寫編譯器,我羨慕不已,於是我也學了半年,最後,我也會寫編譯器了,但是,會寫了之後,我發現我並沒有什麼昇華,而只是又會了一樣東西而已,而且,也只是學了半瓶水,比如,其實,要真正編寫一門語言,必須要學會編譯器優化,而這個實際上很難,要學會又要很長的時間才能會。世界上,一直不缺少這樣的人,只要給他時間,他就能學會一樣東西。但是,就算懂的再多,也只是懂了一個東西,怎麼樣用出來,解決一些別人還沒有解決的問題才是關鍵。

Node.js 可以說是一個個人作品,但是,卻成為了一個平臺。為什麼其他人沒有想到這樣一個想法呢?我想,只要你要想到 Javascript 和非同步IO 結合起來,你也能寫出這樣一個作品。這背後的想法是關鍵。

最近有一本書很流行,黑客與畫家,裡面有一個垃圾郵件過濾的章節。在2002年前,沒有人想到用很成熟的貝葉斯公式來實現,而當被人一語點破之後,我想世界上有一半的程式設計師都能解決這個問題了。

有一個好想法,比你會一百門技術還有意義,技術可以在你有了想法之後再學,但是,你會100門技術,不見得就能一語驚人。在我以後的程式生涯裡面,我想我不應該再完全沉浸在學一門又一門的技術,而是,要學會思考,學會思考那些技術背後的思想和本質,期待,自己也能創造一門技術,而不再是每天學習別人的。