當前位置: 華文問答 > 數碼

怎麽看待程式設計師普遍缺乏數據結構和演算法的知識?

2016-01-31數碼

這就是我們所謂的「高科技」企業只能電信詐騙、聯手莆田系做局以及拿錢砸小販的原因了。

就這點水你還能指望他們搞別的什麽?對這些本質上不過小販水平的家夥,什麽高科技不是神話?

演算法有沒有用?

當你做局詐騙賣白菜時,那是真沒用。

但只要你稍微有點追求,稍微脫離菜販子這樣的底層眼光,你就會知道,真有用。

比如:電腦基礎知識對程式設計師來說有多重要?

在這個案例裏,起初我壓根就沒意識到自己化用了樹、連結串列、遞迴等諸多「演算法」——註意是化用,只會刷題死路一條——遠比很多據說完全是「鉆無用的牛角尖」的hard級演算法題目難得多。

但最終做了個什麽?僅僅是一個不侵入編譯過程的、簡化版的protobuf而已。

就這麽個入門級的、低水平的庫,你就得有這麽多的技術儲備。

效果也是立竿見影的。上百號人天天996寫出幾十萬行程式碼搞兩年滿是bug還沒搞定的東西,換這個,一個人,955,三周不到,800行程式碼,一勞永逸的搞定,0bug。

業界那些詐騙做局賣白菜之外的專案,這類「高級程式設計師效率高過一般水平的程式設計師十倍」的案例比比皆是;甚至同是程式設計師,強者效率百倍於弱者都是司空見慣——尤其是,就不用多高了,就protobuf這種糙貨,水平不夠的程式設計師熬到下輩子都寫不出來。

問題在哪?

其一,應試教育,教出來的絕大多數人只會做題不會做事。能熬夜加班google百度到處抄、把很簡單的東西湊合出來已經很不容易了——大多數人還沒這水平呢——你還想他巧做、有創意的做、做成基礎性支柱性的庫、提供精巧高效穩定的API、支持未來幾十年裏的所有同類需求?做夢都不敢想。

其二,普遍的低水平、普遍的價格戰、普遍的壟斷壓制了「向上突圍」的可能,只能「下沈」下去,和小商販們打價格戰、和民間騙子攜手共進——這樣才能來錢啊。

你做別的,一個是普遍水平偏低,導致「向上看」的專案絕大多數只能招一些南郭先生混你的錢然後可恥的失敗;另一個是,你好不容易做成功了,「能人」就出來了,又是反編譯又是源碼泄密或者帶專案跳槽的,手裏大把票子的大鱷輕松把你抄死——抄死你別人都不知道是你先搞出來的。人家有錢砸輿論,你呢?還指望靠這個好不容易成功的專案回本呢,哪來的底氣和人家拼燒錢。

你看,低水平的現狀使得想搞「高水平專案」的公司舉步維艱、使得任何「技術突圍」成功者馬上就被「商業殲滅」,重新陷入低水平競爭;低水平競爭的現狀又限制了需求,反過來強化了「程式設計師不需要懂演算法反正都是CRUD」的風氣;這種風氣回過頭來再次限制了那些試圖「向上走」的公司、也把學有所成的程式設計師拖死在996的泥潭裏——於是就「候選人答對比例差不多不到兩成,工齡越長,比例越低」:反正都在CRUD,996那麽多年,那點繞口令能不忘嗎?

這就是所謂的內卷。

怎麽辦?

還是那句陳詞濫調:盡量往上學,提高自己的技術水平;拒絕996,尋找更能體現自己價值的工作——你有能耐比普通程式設計師效率高幾倍,何必和他們一切吊死在一棵樹上呢——哪怕不得不996,那也要相伴磨洋工、騰出時間提高自己,等待質變的那一刻。

畢竟,國家已經布局,在中小學就引入編程了;將來高水平的程式設計師會多起來的。當時機成熟、有了足夠的人才儲備、整個行業可以往高處走時,您是想「像被用破了的抹布一樣被丟掉」呢,還是想「像久經磨礪的寶石那樣顯露光華」呢?

對公司來說也一樣:為什麽要考演算法?明明我們只是在賣白菜!

答案很簡單:技術精湛的程式設計師效率更高、更不容易搞出錯誤——賣白菜你們的伺服器都更穩定、更能應對沖擊、更不容易丟單;尤其是,將來市場風向變了、需要往上走時,公司不至於抓瞎:「俺們公司裏都是些小販……你突然說要玩高科技……俺們牙齒還沒刷呢」。