優秀程序員和一般程序員差別在哪?

還記得研發頻道此前發表過的一篇《白班程序員 VS. 夜貓子程序員》嗎?在這個世界上有兩種程序員,我們稱之爲:Day Programmers(白班程序員)和Night Programmers(夜貓子程序員)。本文我們將探討優秀程序員和一般程序員有哪些差別,看看您是屬於那一種?來自知乎網上的大牛們各抒己見,一起來看下他們是如何區分的。

創業者 郭凜:如果純以編碼能力來看,可分爲五類

1. 拷貝型

拷貝型選手就是傳說中的“代碼拷貝員”了,他們對實現功能幾乎沒有思路,所作的事情就是從網上或是之前其他團隊成員寫的代碼中拷貝出片段,然後放到項目中,如果運行項目出現了期望結果,則表示任務完成。這類人只會改代碼,卻不會寫代碼。他們大多對編程毫無興趣,只是希望以此餬口而已。

2. 新手型

當產品有功能需求時,由於經驗有限,程序員並不完全知道要如何實現這個功能,需要通過學習、尋找資料等方式來解決問題。這種情況下的編碼過程,程序員的主要目標是“完成功能”,那麼很難有多餘的心思去考慮邊界條件、性能、可讀性、可擴展性、編碼規範等問題,因此代碼bug可能較多,穩定性不高,常常會發生開發花費1個月,改bug卻要改上好幾個月的事情。

3. 學習型

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

這類程序員最大的表現在於喜歡“創造代碼”,即使有現成的實現,他們也希望自己來實現一套,以達到“學習”的目的。他們不喜歡複用別人的代碼,看見項目中別人實現了相類似的功能,他們會以“需求不同”的藉口來自己重新實現一套。這類人一般來說對技術有着較爲濃厚的興趣,希望能夠通過項目來進行學習。從項目的角度來說,這種做法最大的麻煩在於開發週期可能較長(相比直接使用現成的實現),並且會使得項目代碼膨脹,影響未來的維護。但這類程序員由於有興趣,如果好好培養或許會成爲明天的牛人。

4. 實現型

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

這類程序員最大的表現在於喜歡“開發項目”,卻不喜歡“維護項目”。他們產出的代碼最大的問題就是維護較爲困難,可能過上幾個月回頭看自己的代碼都會暈頭轉向。因此即使是自己寫的代碼,仍然不願意維護,一般會苦了後來人。因爲接口設計的缺乏,當需求變更時,發現代碼要改的東西太多,然後抱怨需求變化,卻很少認爲是自己的代碼問題。這樣的項目如果經過長時間的變更維護,最終會變得難以維護(一般表現在需求變更響應時間越來越長)甚至無法維護,最終要麼是半死不活,要麼是被推倒重來。

5. 架構型

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

這類程序員代碼設計大多建立在對需求的詳細瞭解和對需求變更的預測上——可擴展性較好;代碼細節也儘量多的考慮邊界情況、性能——穩定高效;代碼命名和註釋都恰到好處——可讀性較高;同時在開發過程中他們會不斷重構,對代碼做減法——保證項目可持續發展等等,但由於考慮問題較多,單從“實現功能”階段來看,完成速度不一定會比“實現型”要快。只是到了項目中後期優勢纔會慢慢體現出來。

知乎刪代碼工程師 安江澤:創造型、管家型、學院派、鐘錶型、折騰型

1. 創造型/創新型

以創造/創新爲樂的程序員。以新的方法解決現有問題,發明方法解決尚未解決的問題。問題本身並不限於技術領域。硅谷很多技術創始人具備這類的品質。雖然他們創業後都不再全職寫代碼,但他們這種品質貢獻了他們事業的第一步。

2. 管家型

以管系統演化爲樂的程序員。有潔癖,有強迫症,容不得系統有一點的瑕疵。如果你招聘了一個程序員/架構師,2-3年後你的互聯網產品再也沒有在可見/可擴展性上遇到瓶頸,他多半是這種程序員。

3. 學院派型

通常在CS某一領域擁有博士學位,或者深受他們的影響的人。對該該領域興趣濃厚,通常參與企業核心競爭力相關的研發工作。當然,也有一部分也具備第一種特質,中途去改變世界去了。

4. 經驗型

在行內具有多年豐富的經驗,可承擔責任,考慮全面。團隊擁有了這種人,通常會少走很多彎路。但面對新的挑戰還是要和其他人站在同一起跑線上的。

5. 鐘錶匠型

喜歡並擅長把一個系統從裏到外研究通透的人。分享出來都是從裏到外讓人垂涎欲滴的乾貨。很多後端工程師都是這種類型。

6. 折騰型

擅長“折騰”,方案沒有最好的,只有最難的。興趣廣泛動手能力強,通過折騰留下很多技術積累。想用哪一塊的新技術?先問問他把,8成他很久前就已經玩過了。

7. 肉盾型

哥甲高血條長,加班如同切菜一般,逼急了不睡覺也行。只伸手要過兩件東西:原型和咖啡。適合打閃電戰。當然,可能事後要打打後勤重構下代碼。

iApp4Me創始人、iOS開發者郝培強:七大標準 邏輯思維很重要

優秀程序員的標準:

  1. 要懂邏輯,這點其實挺難達到,很多很不錯的程序員其實邏輯能力不行,所以我覺得限制了他們更深一層次的發展,或者說限制了他們解決特別複雜問題的能力。
  2. 要有分析能力。這也是解決複雜問題不可或缺的能力。
  3. 要會自學,技術發展速度很快,如果沒有自學能力會被淘汰的。所以在中國英語要好,不然看不懂最新的技術走向。
  4. 要有良好的時間管理習慣和意識。
  5. 要有耐心,肯於付出。
  6. 要有良好的工作習慣。
  7. 會看且勤於看文檔。

產品管理、IT項目管理 何明璐:優秀程序員具有較明顯的自戀和偏執特徵

  1. 對編程有濃厚的興趣,由興趣能驅動自己的探索和鑽研精神,優秀程序員一般喜歡用業餘時間探索和自己琢磨點東西,研究點開源框架和源代碼,關注新技術,喜歡研究和探索算法,邏輯方面的內容。
  2. 優秀程序員一般比較懶於做重複的事情,對於重複事情有獨有的程序員思維,即通過程序或其它自動化方式解決重複問題,而留更多時間去思考。
  3. 優秀程序員更多的會從簡單功能實現,花哨的界面轉移到對安全,性能,可擴展等底層架構的關注。
  4. 優秀程序員一般有較明顯的自戀和偏執特徵,有較爲希望獨自工作的特徵,比較難於被非技術背景管理者駕馭,高度強調自我能力價值的被認可,而且很多優秀程序員並不是好教練。
  5. 優秀程序員一般有較爲紮實的算法,數據結構等理論知識的基礎。這些讓他們在迅速進入新領域的時候快人一籌。

總結:

不管是優秀程序員還是一般程序員,小編認爲只要你喜歡思考,愛學習,對編碼有興趣,那麼你就是最好的。當然掌握技術纔是硬道理,套用別人的一句話“不想當CEO的程序員,不是好的產品經理”。程序員們,加油吧!

發佈了11 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章