程序員從初級到高級的蛻變

程序員從初級到高級的蛻變
軟件開發是一個奇怪的行業,市場遠遠供不該求。這是一個已經存在多年的問題,並且隨着時間的流逝,愈演愈烈。
咱們嚴重缺少可以知足需求的人才。這個行業至關年輕。大多數軟件項目是失敗的。幾乎全部的項目都會超出預算。咱們解決問題的最佳指導方針能夠歸結爲——「用一些通用方法去解決問題,固然這些方法經常無論用,因而,惟一能作的就是不斷地嘗試,逐個看看是否奏效」。
如今咱們把淫浸代碼時間超過3年的開發人員稱爲「高級開發人員」。這些人一般把持領導崗位,最終作出來的東西,你懂的——很是糟糕。
軟件開發人員的成長階段
做爲程序員,咱們生活在複雜的系統和變量世界中。能夠這麼說,即便是執行一個簡單的,定義明確的,重點突出的任務,都使人難以置信的難,尤爲是若是你對你手頭的工具,或者是你正在工做的代碼庫不是那麼有經驗的話。
1、 初級程序員
初級開發人員是這樣的,剛從學校出來,就像坐井觀天中的青蛙同樣,自認爲何都會。忽然間,你發現本身面對的問題,靠學校中的那點知識是遠遠不夠的。問題要更復雜,更凌亂,沒有理論上說的那麼純粹。你正處於放棄仍是堅持的分叉路口,你不知道該怎麼辦。
對策就是專心致志,專心致志地不遺餘力學習。初級開發人員須要大量的指導、監督和輔導,不然他們將會在這一階段呆上很長一段時間。所以,實際上你也能夠將這一階段視爲策略和平常技術的吸取消化時期。
初級開發人員關注代碼,而不注重開發,他們不明白二者之間的區別。若是一個程序員表示「要是代碼不須要面向全部用戶,那他們會更喜歡編碼」,那麼我能夠判斷這是一個初級開發人員。
一個優秀的初級開發人員給定一個已知任務以後,就可以迅速良好地執行。
中級開發人員逐漸可以意識到失敗(一般是他們本身的失敗)模式,並認識到比起實際構建匆匆忙忙去作重點任務其實所須要的時間和精力更多,而且也不會由於有人說要改一改而一會兒垂頭喪氣。他們也經歷過自覺得寫出了引覺得豪的內容,實際上證實是垃圾的悲慘遭遇。
2、 中級程序員
中級開發人員尋尋覓覓於用正確的方法去構建,去解決問題,他們會經過實驗、文獻和與其餘程序員的討論去發現這些正確的方法。這實際上已是學習軟件架構的水準,而再也不是構建代碼(咱們在學校裏學的就是這個)水平。
沒有受到監督的中級開發人員構建的系統之因此失敗的緣由和初級開發人員的失敗緣由大相徑庭。初級開發人員會構建一堆稍微有點用的算法。而優秀的中級開發人員會跳出《Design Patterns》和《Domain Driven Design》的禁錮。雖然這些都是學習構建大型OO系統的好書,可是直接應用理論只會致使死板的設計結果,不重要的地方靈活多變,重要的地方卻又死板沒法更改。
你能夠信任中級開發人員構建的系統,他們的系統毫無疑問比初級開發人員作的要好,可是時間久了,依然會有各類問題出現,成爲攔路虎。一個可悲的事實是,絕大多數高級開發人員,甚至團隊領導者其實都還只是——中級開發人員。固然,大多數人都沒有這樣的自我覺悟,緣由是他們根本沒有和更高水平的人一塊兒工做過。
一個優秀的中級開發人員應該懂得使用代碼來解決問題只是一種手段而不是目的。然而,他們仍然深愛着純粹的設計,仍然渴望尋求所謂「正確的方式」來構建軟件。
優秀的中級開發人員依然須要少許的監管。毫無疑問,他們可以提高代碼設計,並在設計討論中發揮重要做用。他們是開發團隊中的主力。可是,對於他們,進一步的指導和更高層次的監管依然相當重要。
3、 高級程序員
高級開發人員熟悉失敗。他們已經經歷過編寫的代碼在低於設計和超越設計的狀況下都失敗的狀況。他們深思熟慮,在面對問題時,可以心智成熟地評估成功與失敗。高級開發人員已經跳出了中級開發人員深愛的複雜性,開始沉迷於簡單。
高級開發人員悉知本身的長處和短處,力爭儘量地揚長避短。
高級開發人員深知理論聯繫實際的重要。他們明白,世上沒有所謂的構建軟件的「正確方式」,創建良好軟件的惟一途徑是要將理論適應客戶、代碼庫、團隊、工具和組織的需求。
高級開發人員理解並權衡領域涉及的一切,同時會思考如何去支持設計模式、庫、框架和流程。
高級開發人員不只僅瞭解自我,還知曉組織和客戶的工做方式和價值觀,以及對於組織和客戶而言成功相關的重要和不重要的因素。一旦出現問題,高級開發人員會千方百計地去解決。「這不是個人工做」——他們永遠,永遠也不會說這樣的話語。
高級開發人員內心明白,他們的工做應該是提供解決問題的辦法,而不是寫代碼。
不像中級開發人員辛苦耕耘於枯燥的平常工做,高級開發人員會退一步,去思考是什麼致使了這些無聊的工做。他們會評估修復根本問題的成本,要麼直接解決這些問題,要麼研究起來以便於最終完全解決。
高級開發人員明白,單槍匹馬是搞不定項目的。他們的主要做用是幫助團隊變得更好,同時爭取我的共同進步。
高級開發人員深入理解,領導一職表明的不是權力,而是受權,不是方向,而是服務。
若是你的團隊中一個高級開發人員都沒有起到領導做用,那麼你的項目是註定要失敗的。一隊偉大的中級開發人員當然能讓你走得很遠,可是他們構建的軟件的好日子倒是屈指可數的,其最終結果要麼是關門大吉,要麼是高風險高成本的重寫。高級開發人員纔是惟一能勝任選擇技術和平臺的人。
簡單粗暴的分類方法
我很是討厭如今流行的根據工做經驗年限來給程序員劃分檔次的方法。多年的經驗的確能讓你增長見識,但這都是一些幾乎毫無心義的背景信息。
更重要的是,咱們的行業須要剛從大學畢業活力四射的年輕人,也須要那些有着15—20年工做經驗的老程序員。咱們應該從團隊和企業的角度來思考人才組成。程序員

原文來自IT藍豹:http://www.itlanbao.com/  算法

相關文章
相關標籤/搜索