當一個生意很賺錢的時候,什麼亂七八糟的人都會想來作這個生意。這很正常。程序員
當一個職業薪水高的時候,什麼亂七八糟的人都會想從事這個職業。這也很正常。面試
程序員就是其中之一。算法
對其餘高收入的職業來講,存在一個門檻,就是從業資質。它能保證進入這個行業的人,能知足一個最低標準,以確保這個職業的產出質量。數據庫
程序員這個職業沒有實際的從業資質門檻。你幾乎憑一張嘴就能找工做。編程
先說說程序員三種來源,就是:培訓出來、計算機專科畢業、計算機本科及以上畢業。網絡
而真正的計算機教育,如今只存在於本科。本科一上來不學編程,而是先學兩門課:計算機原理和操做系統原理。數據結構
這兩門就好似中學化學:未來用不到,但起碼知道藥爲何能治病,木頭爲何會燃燒,看上去毫無關聯的現象其實都是共同的機制在起做用。框架
計算機原理和操做系統原理也是同樣,經過了解 CPU、系統總線、內存映射、磁盤分區、設備驅動,從而瞭解計算機的設計者們面對各種問題,他們都是經過何種思路來解決的。數據結構和算法
接下來是否是能夠學軟件開發了?沒有,接下來是數據結構和算法。這兩門課也是要仔仔細細的學,先學一點編程語言的語法,而後把這些數據結構和算法挨個都實現了,這纔算掌握。數據庫設計
那接下來是否是真的能夠學軟件開發了?沒有,接下來是網絡原理、圖像處理、多媒體原理、數據庫原理,在這些課程裏面要把圖像的灰度計算、網絡包的糾錯、非對稱加密、遵守範式的數據庫設計等等所有實踐一遍。到了這個程度,學生方纔具備了程序員應有的思惟方式。
除此以外還有三門課:彙編語言、專業英語和計算方法。前兩個好理解,而計算方法就是如何設計一套算法,在實現複雜的高等函數計算的同時,保持偏差最小化。由於計算機精度有限,通過幾十萬次加減乘除偏差會變得很大,因此像天氣預報、工業設計方面是不能簡單的套用函數去計算的。
這些課程在鍛鍊學生思惟方式的同時,也在開闊學生的眼界:計算機這個行業深不可測,增刪改查之類的,連根毛都算不上。
那接下來,是否是真的,真的能夠學軟件開發了?沒有,接下來是學校爲你準備的最後一步:軟件工程。就是讓學生在工做以前先對軟件開發的過程有個概念。
這是最後一門課程,接下來就畢業了。
媽的,軟件開發到底教沒教?開發工具呢?框架呢?
反正在我那時候,學校是一丁點都沒教。
全靠學生自學。
上面這些就是從大二開始,三年的專業課程要學的。學生把這些課程學懂了,其知識水平跟專科和培訓機構出來的徹底不是一個層次。
再看另一邊:培訓機構六個月(這時間還算長的)出來,是什麼樣子呢?
語言會,框架會,工具會,增刪改查會;但你要他設計一個鏈表,不會,要他查詢數據庫記錄而後組成一個樹結構,不會,要他寫一個簡單的的錘子剪刀布遊戲,不會。沒錯,不少人就是這樣,低能到這種程度還自覺得達到了程序員的標準,這在十三年前是不可想象的。
再好比用工具,沒問題的時候還好,一出了問題就抓耳撓腮不知因此,錯誤信息擺在面前也看不懂,不知道怎麼辦,我說你調試一下吧,只見一邊鼠標晃來晃去一邊咂嘴吧,不知道該在哪打斷點。
這種狀況下談什麼自學能力那都是扯淡的知道不。不少人覺得自學能力是個隱藏屬性,我想怎麼吹均可以。但實際上一我的的自學能力很容易就看得出來:自學能力強的人不會輕易求助別人。就這麼簡單。
因此之前針對計算機專業的程序員面試,有些是假設面試者已經懂的基礎上,不會提某些問題,但如今不同了,有些問題必須問了,好比什麼是進程?進程是如何啓動的?進程啓動失敗了會怎麼樣?這就比如問一個會計的求職者什麼是錢。
我曾經很天真,覺得入職的新同事雖然水平差,但只要對技術有熱情,我仍是能夠帶起來。最後發現不少人一離開培訓機構就徹底失去學習能力,覺得憑几個月學的那一點毛皮就能混吃到老。
曾幾什麼時候,從事程序員人都是對技術很是有興趣的。如今這樣的人愈來愈少了。只要這個行業無門檻的狀況繼續保持,狀況就不會中止惡化。
我不是但願把本科學歷當成程序員的最低標準,由於本科專業課程仍然是與市場脫節的,只教知識不教技能。我只但願有一個真正實用的軟件公司都認可的職業門檻,不達到這個門檻就不能從事程序員。這是一個成熟的行業必需具有的。
這就是我得出的結論。