碼農是如何煉成的 Vol.3

logo

做爲若干個中小型公司的產品技術負責人,我也面試過很多應屆大學生,篩選簡歷的時候我並不care他是什麼大學的(固然221工程的通常也不多會來投),我只看他掌握了什麼,參與了什麼,而後會在面試的時候問他在開發中學習了什麼。固然那些標註X鳥培訓的一概不要。php

我對國內大部分大學計算機系的教學都不滿意,學校會教學生使用C,使用sql,使用java,甚至也有教PHP、Ruby等,但我想問問,有哪一個學校真正把爲何要作軟件,軟件主要解決什麼問題,什麼樣的軟件纔是合格的軟件講清楚的?java

我面試過的學生裏,沒有一個能說明白這個事。能夠想像,作一件事,連這件事的目標,作事的方法都不甚明瞭的話,光去學習若是使用工具又有什麼意義?程序員

另外就是對軟件工程的輕視,若是說開發語言是解決軟件的零件問題,那軟件工程就是如何把這些零件給拼裝起來的流水線,它設計的好壞直接決定了最後拼裝的速度與效果。大學雖然都會開這門課,但實際做用實在是不敢恭維,有些老師本身都不理解也講不清楚。面試

可是這些的重要性甚至超過了數據結構,編譯原理等課程,同時這也形成了一些很是奇怪的現象,好比這幾年移動互聯網火熱,移動端的工程師工資水漲船高,比以前作B/S的貴好多,但實際上移動端的技術含量真的有那麼高嗎?sql

一個B/S的碼農,若是先後端都作的話,相似我這樣的,須要掌握的技術至少有:
一門高級語言(C#、java、php等),SQL,XML,WebService/WCF,Javascript(JQuery),CSS,HTML,還不算可能使用的大量第三方框架,JS框架和瀏覽器兼容性等附加問題。我想大部分作移動端開發的工程師都不具有上述技能吧。編程

回過頭來講說軟件設計,會寫代碼的並不必定就會設計,世界上可能有天才,只寫個半年程序就能作系統架構,但我確定不是這一類的,相信大部分人也不達不到這樣,系統架構不只是技術級的,更重要的是業務級的,軟件設計至少要具有:segmentfault

  1. 對業務有強大的理解與整合能力,能深入把握需求文字中的重點與非重點,對其中類似的業務進行抽象與剝離,對流程中的敏感點(如權限)有很強的把握能力。後端

  2. 對技術有充分的認知與儲備。認知我就不說了看悟性,說下儲備,世界上技術太多,誰也不可能把全部技術學完,因此在遇到新技術時適當接觸一下,當某一天可能須要時,大腦裏有個印象,能夠再刨出來仔細研究。瀏覽器

  3. 強大的編程功底。不得不說中國的軟件開發模式很悲哀,常常見到項目負責人被下面的程序員忽悠到死的事。你要求他兩天內完成,對方非要說得作一週,你若是不懂,真是一點脾氣都沒有,但更重要的做用在設計系統數據結構與接口時更好地對工做量進行預估。數據結構

但事實上大部分人即使知道這些也最終沒能去作架構設計,緣由很簡單,大部分人受不了寫代碼的枯燥,作一段時間就跳槽換崗或者混日子。最終只有少部分人是認真用心的寫代碼,幾年下來,天然就掌握了不少設計思路。

雖然被人稱做碼農,但別真把本身當埋頭碼代碼的農民,用心寫代碼和用手寫代碼不是一回事。

相關文章
相關標籤/搜索