0x00 廢話
想起上一次寫起隨筆已經(jīng)過去了數(shù)個月之久,主要原因有二,一是有些想說的事情放在公開場合有些欠妥,當然更大的原因是當我這兩年接觸了形形色色的人,經(jīng)過了這些那些的事情之后,卻變得更不想多說。所以說,今天寫下這段文字恐怕是處于偶然,或者說,這篇文章卻無太多邏輯,不過是我突然想講幾個故事,講給尚未睡下的諸位以及剛起床的各位,祝你們有一個愉快的一天。至于你相不相信這些故事是真實也好,相不相信是我所經(jīng)歷的也好,我不想多做影射,?各位不要見得風(fēng)就是雨,接收到這些信息,你們讀者自己也要判斷。
0x01 一只坐井觀天的蛤
寫代碼的人,每天打交道最多的便是電腦,其次那便是其他寫代碼的人。在互聯(lián)網(wǎng)行業(yè)快速發(fā)展,人才缺口巨大的今天,寫代碼大多不問出身,你行你上。程序行業(yè)的主體通常不是科班出身,卻也不是自學(xué)成才。如果你今天在網(wǎng)上發(fā)布一個 iOS 程序員的招聘,收到了 200 份簡歷。稍加篩選發(fā)現(xiàn),有 190 人的項目經(jīng)歷極其類似,那就是某培訓(xùn)班最近結(jié)業(yè)沒跑了。我們和培訓(xùn)班的程序員交上手也不是一兩次了,面試上有兩個點是很容易篩選出這部分人的。一點是基礎(chǔ)知識,以后端為例,從簡述 HTTP 協(xié)議的設(shè)計,到比較 epoll 模型和 select 模型,這些人基本上沒有辦法憋出一個字出來。另一點是對一個現(xiàn)成技術(shù)的理解的考察,比如簡述面向?qū)ο缶幊痰睦斫?。這些問題分分鐘過濾出大多數(shù)培訓(xùn)班程序員。
但今天我不想多說這部分人,畢竟他們學(xué)習(xí)程序也許只有 3 個月,認識成這樣并不奇怪。然而真正讓我奇怪的是這些人中入行數(shù)年的老人。我認識一些寫 PHP 數(shù)年的培訓(xùn)班老程序員,最近的觀察讓我大跌眼鏡。我從未想過他們能保持 10 年前對 PHP 的淺薄認識至今,?使用的技術(shù)也沒有絲毫的變化。這些年里他們都做了些什么?我不知道。但我看到他們憋出幾萬又幾萬行的垃圾代碼的時候,我都不好意思讀下這補丁上補丁的代碼,他們即使能依靠其維生,活得也是累得不行,難怪未過 35 歲,便嚷嚷著要急著退休。
究其原因,他們從來不關(guān)心他們工作以外的任何事,編程對他們來說只是獲得財富的一種手段而已。只要這種手段還能賺到錢,便不會學(xué)習(xí)任何其他。他們對程序的理解只需要停留在基本語法上就可以,不需要任何進步,也沒有打算有過任何進步。你要是問起來,他們一定會告訴你,他們的技術(shù)「夠用」了,夠用就行了。殊不知今天的技術(shù)發(fā)展早已翻天覆地地變化過了,他們幾萬行滿是漏洞的錯誤代碼,只需要幾千行就能寫得很好了。但他們不關(guān)心。
就在前幾天,我們學(xué)校的一個學(xué)長認為我學(xué)了這個又學(xué)了那個,學(xué)得太多,必然掌握非常淺薄。我十分承認這一點,但我也試探性地問了一個問題,問問他專精于什么。他告訴我他專精于 .net 和 MongoDB 的應(yīng)用。我便順勢問了一個簡單的問題,也是我們面試中常問的問題「BSON 中對數(shù)組對象是如何存儲的,對性能有什么影響?」沒想到,他竟突然生氣了起來,把我批判了一番,表示 MongoDB 本身性能就已經(jīng)很好了,無需關(guān)心其底層是如何實現(xiàn)的,深究這其中的問題是裝逼的行為,他所掌握的 MongoDB 已經(jīng)「夠用」了。
我又不是 na?ve 的香港記者,我已知道,現(xiàn)在的我就算多說一句,都是無力的了。
0x02 葉公子高好龍
之前聊得是踏入行業(yè)的這些人,當然還有一些人,也很有意思。嚴格來說,他們只踏入行業(yè)半只腳,或者半只腳都沒有踏入,便早已暴露出了問題。他們是程序界的第一大投機分子,是最大的偽君子。他們看看知乎就決定要去學(xué)編程,看看新聞便開起了自己的科技公司。
這樣的人,我是身經(jīng)百戰(zhàn),見得多了。那些哭著喊著要學(xué)編程的,有一半以上都是這樣的人。我原來還以為他們是受了《黑客與畫家》的鼓動,但看他們無一想學(xué) Lisp,我便只好猜測他們大概多是受了知乎的鼓動。然而學(xué)什么都是三分鐘熱度,最多學(xué)了個基礎(chǔ)語法就這不好那不好的早早放棄,最后什么都沒有學(xué)會學(xué)好。這也想學(xué),那也想學(xué),卻沒有一個真正的開始。
我認識這樣一名創(chuàng)業(yè)公司老板。我至今印象都很深的事情便是他書柜里放著全新的《算法導(dǎo)論》、放著全新的《Nginx 高性能 Web 服務(wù)器詳解》,放著無數(shù)我垂涎已久的 O'Reilly 的書籍。當然,都是全新的,一頁也沒有看過,一個字也沒有。畢竟連算法導(dǎo)論外面的塑料紙都沒有撕掉。若是說《算法導(dǎo)論》太難,初學(xué)看不懂,我大可理解,但連塑料紙都沒有撕過顯然買回來就沒有打算看。后來一天他給了我看 40 行他 Python 實現(xiàn)的爬蟲,至少他認為 Python 是極其簡單的語言,我一看這是嚇得我傻了眼,40 行里面竟寫出了 60 個錯誤。我認識的很多初中生 Python 寫得都比這坨東西好上幾百倍。
許多要學(xué)著要學(xué)那的人都是如此,等真的有機會學(xué)的時候,卻根本不做任何嘗試,亦或者是淺嘗輒止。他們只不過是好著學(xué)這學(xué)那的名號,從一開始就沒有打算學(xué)過。這些人比從培訓(xùn)班出來的更糟糕。隨便聽了兩句就決定學(xué)習(xí)個新技術(shù),數(shù)天后亦或是數(shù)小時后卻又失去了興趣。一門語言還沒掌握個入門,便以為已經(jīng)精通了這門語言設(shè)計的精髓。遇到問題不說 Google、StackOverFlow,連百度都不肯查上一下。最后編譯器也沒跑通,Hello World 都沒寫出,竟還能開始評價工具鏈的優(yōu)劣。別人寫得代碼還沒讀懂竟插手亂改別人代碼。我想這種人多半是知乎故事看多了,就覺得自己隨隨便便也能寫一手好代碼。這基本上就是糟踐自己的智商,能寫到培訓(xùn)班水平也算是人生頂峰了。
0x03 葉公子蛤好坐井觀天
四大天王有五個,兩大愚昧有三個,這是常識。
上面這兩就已經(jīng)可怕得很了,然而卻還有一種人,他們結(jié)合了兩者的全部之愚昧。此類人最無法打交道。他們嘴上說著什么都學(xué),什么都學(xué)了一些皮毛,這本身沒有問題,問題是不自知,還給自己扣上「實用主義」的帽子,也就是,這項技術(shù)學(xué)到這里就足夠用了,比我學(xué)得好的就是在浪費時間鉆牛角尖。
其實什么語言都去學(xué)個基本語法是很容易的,卻也是沒有任何意義的。一門語言的語法是小事,一門語言、一個框架的設(shè)計思路才是大事。句讀之不知,惑之不解,或師焉,或不焉。小學(xué)而大遺,吾未見其明也。我所見過所有學(xué)習(xí)編程而不以編程本身的快樂為原因的,都無法堅持學(xué)到一個好的水平。畢竟這門手藝是枯燥的,如果不是解決一個問題本身能給自己帶來快樂的話,是無法堅持自己做這么枯燥的事情的。
至于上面這三種人,我有沒有什么良方?就目前我的經(jīng)驗來看,恐怕是沒有,至少我做過的嘗試都失敗了。
愿他們自生自滅吧。
世界和平。