誰跟你說編程就是高技術含量的事情了?

誰跟你說編程就是高技術含量的事情了?

“美國程序員行業高收入還能維持多久?”,提問者很擔心,因為現在在美國程序員的收入水平很高。而他覺得編程的門檻兒並不高,他怕這種狀態持續不久,畢竟他是一個程序員。

然而,這樣的問題馬上觸動了一些人敏感的神經,有人說,“至於編程不是什麼難事,這句話真的戳到我hhp了。如果編程不是什麼難事,其實世界上也沒有多少事算難事了。”。

還有人僅回覆了句,“何以見得“編程並不是什麼高技術含量”?”就獲得了高票,而且還引發了大量的討論。

那麼編程到底是不是有技術含量的東西呢?也是也不是。

如果我們看看全體程序員的技術能力分佈,我們可能可以得到以下的正態分佈:

誰跟你說編程就是高技術含量的事情了?

真正有技術含量的,鳳毛麟角。有一些還沒入門。最大多數的是自以為高科技的人群。

為什麼?

1、做程序員的門檻不高,但是做好程序員的門檻不低。

這年頭想做程序員難麼?我有篇有些人甚至可能不敢相信的大火的前妻文,裡面提到我前妻初中沒畢業,聽說程序員掙錢多,從理髮小妹改行做的程序員,這麼多年下來年薪已經40萬了。

我認識的程序員裡面有各種各樣神奇的來源。

我自己是學機械的,我當年的合夥人霍矩是學暖風工程的,當年的著名代碼網站Codephi的創始人,後來CSDN副總經理韓磊,是學越南語的。微博上大家知名的澳大利亞大別墅的主人靈感之源和Mac系統專家,前Java程序員iBuick都是學英語的。這行當裡面轉行過來的人,快趕上說相聲的了,啥人都有,門檻還不低麼?

其實,我初中的時候,在完全沒有大人指導的前提下,一臺學習機,一本附帶的Basic說明書,我就學會怎麼寫程序了,那時候,自己寫過一個橫版的類馬里奧遊戲,高中的時候,用這個學習機我還自己寫過一個logo語言的解釋器。

其實編程有啥難的?不就是跟電腦說話麼?跟人說話那麼難,你都會,跟電腦說話有多難?

電腦是個聰明的傻子,你讓它幹啥,只要它能做到,它就會毫不猶豫的去做,多好打交道。

這個世界有那麼多Geek,就是因為他們覺得電腦簡單單純好溝通,反之,跟人類打交道太難了,怎麼學都學不會。

如果你跟一個人說,算n = n + 1算1萬次,人會跟你說,你有病吧,老子才懶得算呢。但是你這麼告訴電腦,電腦會毫不猶豫的算1萬次,然後在你還沒察覺到任何變化之前,把答案給你。

但是,做一個好程序員是很難的。

這也是因為電腦是一個聰明的傻子。它的腦子完全一根筋。它不會自己解決任何問題。現在任何一臺電腦你讓它算1萬次n = n + 1就是秒出結果。但是,算法再複雜一點呢?一個稍微複雜一點的算法,可以讓一臺現在最好的個人電腦,秒變計算器。那怎麼辦?還不是要靠人?

其實這年頭,大多數時候,不需要你開發任何新的算法,很多時候用各種語言的類庫,容器和算法庫就已經可以解決很多問題了。問題是,就連選對這些容器和算法也不是一件簡單的事情。沒有簡單易行,放之四海的標準。有很多人在這個問題上其實也是隻知其然不知其所以然。

2、行業在發展曾經有技術含量的東西,慢慢的變成大路貨技術

08年,我和霍矩剛開始做技術諮詢的時候,國內一般網站普遍還沒有反向代理的知識,剛剛有一些文章介紹,有一些大網站用起來了。那時候,我們遇到一個客戶,用JAVA搭了一個網站,可能做得比較重,當每天5萬PV的時候性能就很好。但是推廣的得力,流量翻了三倍,服務器就無法支撐,直接掛掉。我們當時跟他們討論,從代碼上去做大的性能改進根本來不及。我們就幫助他們設計了一套架構,用Squid做反向代理,扛住重複的訪問。結果很快,這個網站流量上漲到100-200萬,性能都沒有出過大問題。在那個時間點,你還可以覺得懂的怎麼架Squid算是有點技術含量的東西。

那現在有個網站可以撐200萬流量算是什麼大事兒麼?完全不是。

為啥?一來,各種反向代理技術、內存緩存技術等等在web後端開發裡面早就是平常事情了;二來,硬件有了長足的進步,CPU比當年強大多了,更重要的是SSD的使用,讓磁盤IO帶來的性能的壓力越來越小;還有就是現在雲計算大行其道,隨時隨地隨地增減服務器改變部署變得非常容易。

題外話,所以這次馮大輝和丁香園撕逼事件裡,那篇抹黑大輝的文章裡面說,大輝作為一個CTO,不寫Code,不參與架構設計,不Review代碼。我非常不以為然。因為從Alex和一些其他的渠道你可以查到,丁香園網站的整體負載並不大,也就是200-300萬以內,這還是很多產品,而不是單一產品的承壓。簡單的說,在當今的技術水平下,搭丁香園這麼一個網站,難度都在產品和運營上,技術上沒啥可談的,咋做都不會出太大的問題。

07年,我的好友錢宏武老師,在SD大會上,做了一個演講“如何設計高併發體系架構”,當時,我去會場聽他的演講,發現人都站到會場外了,完全擠不進去。他介紹的是他當時在搜狐設計社會論壇,日訪問量6000萬的經驗,那是當時的動態網頁日訪問量世界紀錄。

現在呢?現在這樣的網站已經不算什麼了。新浪微博日活躍用戶在2015年都過億了。

3、一些行業牛人和開源軟件改變了世界

Google在很長一段時間裡都是技術圈內的頂尖技術的代名詞。外界也不清楚Google是怎麼完成一些不可能完成的任務的。當年,大家光是想象Google怎麼保存那些海量的索引,是怎麼做到的都不知道。所以大家想象Google裡面每個工程師都是百年一遇的大神吧。

直到後來,Jeff Dean的三篇論文Google File System,MapReduce和BigTable一發布,大家才注意到,原來Google有個Systems and Infrastructure Group,有個Jeff Dean大神。原來他們把處理海量數據的方法,寫成了內部系統,Google的工程師,不需要是神,只要學會這套工具,就可以操縱海量的數據了。

但是,可惜的是,Jeff Dean和Google只開放了他們的思想,但是沒開放內部工具出來。這時候,一個叫做Doug Cutting的大神站了出來。

Doug Cutting是Lucene的作者,他當年曾在多家公司做搜索,還曾經在Apple做過搜索,他覺得業界缺乏一個開源的好用的搜索引擎內核。他就寫了Lucene,Lucene是現在廣泛使用的Elastic Search的內核。可以說,現在你在全世界的很多網站內點搜索,都是Lucene在支撐。僅當年我們創業的時候,因為我們在用Lucene,所以,我們的客戶跑在Lucene上的搜索量就有幾千萬。

Doug Cutting把Jeff Dean的思想實現了出來,做了一個開源軟件叫做Hadoop。Hadoop興起後,其實分析處理海量數據,就變成了一個人人都可以做的事情(買得起機器就可以),從而產生了一場大數據的革命。

我舉這個例子什麼意思?就是Google很牛逼,Google在04-5年就有能力非常高效的分析處理海量數據。在那個時間點,能做Google量級的事情的人沒有幾個,這是非常有技術含量的。但是Jeff Dean一公佈具體思想,這個技術含量就驟減。但是,仍舊是很有技術含量的。等到Doug Cutting把Hadoop做出來,分析處理海量數據的門檻實際上就降低到了會編譯和搭建這個Java開源項目就可以了。

當然,有一些領域內的東西,即使有了開源軟件,由於你對領域知識的匱乏,你仍舊很難高效的開發。比如Lucene,非常好用,但是Lucene是一個底層引擎,如果你對倒排索引的各種細節不夠清楚,你直接用Lucene開發出好用的搜索是很難得。所以,當時我做了一個Cypress系統,用XML/HTTP請求把Lucene完全封裝起來,用戶不用懂倒排索引的任何細節就可以用好搜索了。後來流行的Elastic Search,跟我的設計思路如出一轍,唯一的區別是,他用JSON來做數據傳輸的格式,我用XML。一般團隊使用Lucene,可能需要幾個月才能做一個可用的搜索,用Cypress或者Elastic Search,一天就夠了。

在這些牛人和開源工具的作用下,很多原來無比高大上,也沒有幾個人可以做的領域,很快就變成了隨便一個工程師都可以學會的東西。

4、企業的需求核心還是滿足業務需求並不是高大上

實際上,中國的大多數技術公司,核心還是業務,而不是技術,技術的價值在於良好的保障業務。公司真正賺錢是靠業務。美國呢,大公司裡面技術比重更高的公司要多一些。但是,也有大量的公司,核心業務並不是技術本身。

在這樣公司裡面實現業務邏輯的工程師是主流。他們雖然非常重要,但是他們做的事情,價值不是技術含量,而是能不能完美的滿足業務需求。

舉個例子,一個表單放幾個按鈕最合適,有啥技術含量可談?但是,放好了,用戶體驗好,效果好,公司的收益就會更好。

已經扯得很遠了,我翻回來說,如果你想做一個有技術含量的程序員,其實也不難:

1、你可以在某一個領域扎深

新浪微博的兩個要點就是產品和性能。因為微博是國內日活最大的幾個網站之一,性能不好,就別玩了。產品體驗不好呢,也會造成很大的損失(這個我們就不談了)。

那新浪的Timyang一路支撐新浪的流量越來越大,他和他的team一直都在關注怎麼支撐巨大的流量,成為這個領域首屈一指的專家,當然是有技術含量的。

美國最大的PHP應用是Facebook,中國是新浪微博,大多數PHP網站都不會認為PHP的性能成為了一個大問題,但是他們都太大了,PHP不夠快都影響體驗了。所以Facebook搞了把PHP編譯成C++的項目,而原來在新浪的鳥哥怎直接改造PHP,讓PHP7性能達到了跟編譯成C++相當的水平。

我們當年做搜索的時候,我的Cypress系統,一天可以支撐10萬次搜索,後來客戶的搜索到了30萬,我就改進系統,讓它可以支撐到100萬。再後來客戶的搜索到了200萬,我就改進系統,讓它可以支撐到300萬。後來,有個客戶日搜索2000萬,用6臺服務器,說如果我們可以用更少服務器,就採用我們的服務。於是我優化系統,花了整個兩個星期,自己打造了測試工具,性能監控工具,最後優化到一臺服務器日搜索2000萬。在當時技術含量還可以。

這些都是你在一個領域扎深的例子。

2、你也可以在廣度上去搞

我個人愛好廣泛。所以在做搜索的同時,iOS SDK出來了,我也在自學iOS開發。等到有道詞典,想趁市場熱潮,迅速做一個iOS版本的時候,他們發現自己人沒有會的。那時候市場上也很難找到外包人才懂iOS的。於是,他們輾轉找到我。

後來,我進盛大創新院的時候,我問副院長,說我既可以繼續做搜索,也可以做iOS開發,創新院更需要哪種?他說,兩樣都非常歡迎,兩種人才都很缺。

但是不管怎麼說,你安於現狀,安於解決了老闆提出的當前問題就好的話,你只能是一個庸庸碌碌的程序員,你不會有技術含量的。


分享到:


相關文章: