當前位置:
首頁 > 最新 > 怎樣讓一般程序員成為一名優秀的程序員?

怎樣讓一般程序員成為一名優秀的程序員?

在我平時所見到的程序員中,如果純以編碼能力來看,個人覺得可以分為五類。

一、拷貝型

拷貝型選手就是傳說中的「代碼拷貝員」了,他們對實現功能幾乎沒有思路,所作的事情就是從網上或是之前其他團隊成員寫的代碼中拷貝出片段,然後放到項目中,如果運行項目出現了期望結果,則表示任務完成。

這類人只會改代碼,卻不會寫代碼。他們大多對編程毫無興趣,只是希望以此糊口;又或是加入了平庸的團隊,無法感受到技術的魅力。

二、新手型

當產品有功能需求時,由於經驗有限,程序員並不完全知道要如何實現這個功能,需要通過學習、尋找資料等方式來解決問題。

這種情況下的編碼過程,程序員的主要目標是「完成功能」,那麼很難有多餘的心思去考慮邊界條件、性能、可讀性、可擴展性、編碼規範等問題,因此代碼bug可能較多,穩定性不高。常常會發生開發花費1個月,改bug卻要改上好幾個月的事情。

三、學習型

這類程序員對所在領域的語言已經比較了解,對於一般功能可以有較為清晰的實現思路,給出需求時可以通過自己的思路來實現,並且會一定程度上考慮邊界條件和性能問題。但僅此而已,他們對可讀性和可擴展性考慮很少,也沒有項目級別的考慮,主要是希望通過實現代碼來練手或是學習。

這類程序員最大的表現在於喜歡「創造代碼」,即使有現成的實現,他們也希望自己來實現一套,以達到「學習」的目的。他們不喜歡復用別人的代碼,看見項目中別人實現了相類似的功能,他們會以「需求不同」的借口來自己重新實現一套。這類人一般來說對技術有著較為濃厚的興趣,希望能夠通過項目來進行學習。

從項目的角度來說,這種做法最大的麻煩在於開發周期可能較長(相比直接使用現成的實現),並且會使得項目代碼膨脹,影響未來的維護。但這類程序員由於有興趣,如果好好培養或許會成為明天的牛人。

四、實現型

這類程序員一般有較為豐富的經驗,由於寫得太多,因此不再追求「創造代碼」來進行學習,同時對所在領域可能涉及的很多第三方框架或是工具都比較熟悉,當接受到產品需求時,對功能實現方案已經瞭然於胸,因此他們可以快速的實現需求,並且對邊界、性能都有一定程度的考慮。因為能夠快速實現需求功能,經常會被團隊評價為「牛人」。但他們一般僅僅停留在「完成功能」級別上,對代碼的可讀性、可擴展性、編碼規範等考慮較少,對項目總體把握也較少(例如控制項目膨脹、方便部署等架構級別的東西)。

這類程序員最大的表現在於喜歡「開發項目」,卻不喜歡「維護項目」。他們產出的代碼最大的問題就是維護較為困難,可能過上幾個月回頭看自己的代碼都會暈頭轉向。因此即使是自己寫的代碼,仍然不願意維護,一般會苦了後來人。

因為介面設計的缺乏,當需求變更時,發現代碼要改的東西太多,然後抱怨需求變化,卻很少認為是自己的代碼問題。這樣的項目如果經過長時間的變更維護,最終會變得難以維護(一般表現在需求變更響應時間越來越長)甚至無法維護,最終要麼是半死不活,要麼是被推倒重來。

五、架構型

這類程序員比實現型更進一步,他們經驗豐富,對相關框架和工具等都很熟悉,「完成功能」「穩定性」「性能」這些已經不再是他們的追求,更優美的代碼、更合理的架構才是目標。

這類程序員介面設計大多建立在對需求變更的預測上

靈活又不過度設計——可擴展性好;

代碼細節也盡量多的考慮邊界情況、性能——穩定高效;

代碼命名、注釋及邏輯分離都恰到好處,語義豐滿——可讀性較高;

在開發過程中他們會不斷重構,對代碼做減法——保證項目可持續發展。

但由於考慮問題較多,單從「實現功能」階段來看,完成速度不一定會比「實現型」要快。只是到了項目中後期優勢才會慢慢體現出來。

也許還有更優秀的程序員我沒有見過,歡迎大家補充

扣丁學堂公眾號最新活動


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 扣丁學堂 的精彩文章:

程序員學歷真的重要嗎?
想從事IT互聯網之類的,零基礎怎麼辦?
論壇上程序員辣么多,都是真實的嘛?
利用PHP找工作,你需要了解哪些內容
自學成才的程序員通常缺少哪些技能?

TAG:扣丁學堂 |