當前位置:
首頁 > 知識 > 編程到底是不是有技術含量的東西呢?也是也不是

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

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



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

郝培強,iOS開發者,Tiny4cocoa創始人


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


然而,這樣的問題馬上觸動了一些人敏感的神經,有人說,「至於編程不是什麼難事,這句話真的戳到我 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 帶來的性能的壓力越來越小;還有就是現在雲計算大行其道,隨時隨地隨地增減伺服器改變部署變得非常容易。


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 開發。等到一款詞典 App,想趁市場熱潮,迅速做一個 iOS 版本的時候,他們發現自己人沒有會的。那時候市場上也很難找到外包人才懂 iOS 的。於是,他們輾轉找到我。


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


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


請您繼續閱讀更多來自 知乎日報 的精彩文章:

如果把磁鐵磨成球形,磁極會跑到哪裡去?
一個人的旅行,什麼樣的地方最適合?
老師:你作業沒意義 學生:喏,憲法修正案被我推著改掉了
超市把牛奶擺在最裡面,真的是為了讓顧客多逛逛?

TAG:知乎日報 |

您可能感興趣

職場不是技術活,更不是歡樂頌,不在乎眼淚,要做到心三不!
面試官是個技術活兒,不是誰都能幹的!
王者榮耀:上不了磚石你欠缺的不是技術,而是這些?
化妝不僅僅是一門技術,更可貴的是她有重塑人格的魅力
男票拍的照片永遠比你自拍丑,有可能真的不是技術問題
摳圖是深情還是寡意,技術說了不算
不靠技術科幻電影是怎樣煉成的,驚喜一樣都不少
男人不能說不行,是時候展示你真正的技術了!
你不可不知的秘密!測血糖也是個技術活,做好了能減少疼痛!
只有想不到沒有做不到,十項最接近成真的科幻技術
當枚吃貨,也得有技術含量啊,這些吃飯不良習慣你都有嗎?
這幾款新型的技術,你是否想擁有呢?
清朝和明朝的差距,不是技術問題,而是思想落後
真正的太極不是分筋錯骨秒殺對手的一種技術,而是包容一切的道
懟人並不難,只是你沒有他的技術高而已
嫁接一棵扶桑花,雖說是個技術活,可卻沒有想像的那麼難
上演紅毯「摔」,也需要技術,不是摔了就能紅!還有封殺的呢!
頭次見沒吊頂照樣也能裝修得很好看,這技術真是絕活了
孩子頭上長了一個國寶知道不,這技術也是不錯呢