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

摘要:在這個世界上有兩種程序員:Day Programmers(白班程序員)和Night Programmers(夜貓子程序員),你知道優秀程序員和一般程序員有哪些差別嗎?你又是哪一類型的呢?俗話說不想當CEO的程序員,不是好的產品經理。程序員們,加油吧!

還記得研發頻道此前發表過的一篇《白班程序員 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的程序員,不是好的產品經理”。程序員們,加油吧!


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450840.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450840.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450840.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

7. Oracle數據加載和卸載

在日常工作中;經常會遇到這樣的需求: Oracle 數據表跟文本或者文件格式進行交互;即將指定文件內容導入對應的 Oracle 數據表中;或者從 Oracle 數據表導出。其他數據庫中的表跟Oracle數據庫進行交互。若是少量數據;可選…

Navicat工具導出mySQL數據庫某個視圖結構的.sql腳本

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 用Navicat工具怎么都導不出來mySQL數據庫的某個視圖.sql腳本,即使導出來也只是包含視圖記錄,不包含視圖結構。經…

瞧瞧蘋果OS X如何干掉Linux

摘要:如果你去過Facebook或者其它一些創業類科技公司,你會發現隨處可見的Mac,無論是CEO還是開發者,都可能在使用Mac。而以往很受IT人士青睞的Linux好像在消失,這是真的嗎?蘋果OS X是如何干掉Linux的&#x…

超全十大經典排序算法及其分析

文章目錄0.算法概述0.1 算法分類0.2 算法復雜度0.3 相關概念1. 冒泡排序(Bubble Sort)1.1 算法描述:1.2 圖解演示1.3 代碼實現1.4 優化過程1.5 性能分析2. 選擇排序(Selection Sort)2.1 算法描述:2.2 圖解演…

eclipse安裝JAVA反編譯插件

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 前言:在實際的開發中幾乎都會使用到一些框架來輔助項目的開發工作,對于一些框架的代碼我們總懷有一些好奇之心&a…

noip2014生活大爆炸版石頭剪刀布

題目描述 石頭剪刀布是常見的猜拳游戲:石頭勝剪刀,剪刀勝布,布勝石頭。如果兩個人出拳一 樣,則不分勝負。在《生活大爆炸》第二季第8集中出現了一種石頭剪刀布的升級版游戲。 升級版游戲在傳統的石頭剪刀布游戲的基礎上,增加了兩個新手勢: 斯波克:《星際迷航》主角之…

初識react(二) 實現一個簡版的html+redux.js的demo

回顧 初識react(一) 揭開jsx語法和虛擬DOM面紗初識react(二) 實現一個簡版的htmlredux.js的demo初識react(三)在 react中使用redux來實現簡版計數器初識react(四) react中異步解決方案之 redux-saga初識react(五) 數據流終極解決方案 dva(零配置)前言 首先糾正個誤區&#xff0…

12個有趣的C語言面試題

摘要&#xff1a;12個C語言面試題&#xff0c;涉及指針、進程、運算、結構體、函數、內存&#xff0c;看看你能做出幾個&#xff01; 1.gets()函數 問&#xff1a;請找出下面代碼里的問題&#xff1a; #include<stdio.h> int main(void) { char buff[10]; memset…

超全Typora快速入門

文章目錄一.Typora快速入門1.代碼塊2.標題3.字體4.引用5.水平分割線6.圖片插入7.超鏈接8.列表9.表格10.任務列表11.數學表達式12.生成目錄13.表情符號14.定義腳注15.文件導出16.主題修改17.修改主題背景圖片18.設置背景透明度19.Typora 插入圖片調整大小20.字體和顏色21.頁內跳…

聊聊畢業設計系列 --- 系統實現

效果展示 github moment-server github地址 moment github地址 moment-manage github地址 articles 聊聊畢業設計系列 --- 項目介紹 聊聊畢業設計系列 --- 系統實現 前言 在上一篇文章中&#xff0c;主要是對項目做了介紹&#xff0c;并且對系統分析和系統設計做了大概的介紹。…

求職小記(持續更新)

自16年春正式工作以來也有兩年半了&#xff0c;也許是對現在leader的不滿。也許是想要折騰一下&#xff0c;也許還有也許&#xff0c;決定換一份工作&#xff0c;結束兩年零四個月的第一家it工作。從8月份的離職到十月底的offer經歷了很多&#xff0c;外面天慢慢的涼了&#xf…

js 實現用window.print()打印頁面中的部分內容,局部打印

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 如下方法&#xff1a; function printProof(){var printData document.getElementById("forPrint").innerHTML; // 只打印 f…

搞懂靜態變量static

文章目錄1.什么是static&#xff1f;2.static關鍵字的作用是什么&#xff1f;3.靜態變量和非靜態變量的區別&#xff1f;4.static可以修飾局部變量嗎&#xff1f;5.可以通過this訪問靜態變量嗎&#xff1f;6.靜態方法能否調用非靜態方法&#xff1f;7.靜態變量、普通變量、靜態…

神經網絡優化(二) - 滑動平均

1 滑動平均概述 滑動平均&#xff08;也稱為 影子值 &#xff09;&#xff1a;記錄了每一個參數一段時間內過往值的平均&#xff0c;增加了模型的泛化性。 滑動平均通常針對所有參數進行優化&#xff1a;W 和 b&#xff0c; 簡單地理解&#xff0c;滑動平均像是給參數加了一個影…

Docker完全自學手冊

阿里云大學免費課程&#xff1a;Docker完全自學手冊課程介紹&#xff1a;Docker 是 PaaS 提供商 dotCloud 開源的一個基于 LXC 的高級容器引擎&#xff0c;源代碼托管在 Github 上, 基于go語言并遵從Apache2.0協議開源。Docker 是一個開源的應用容器引擎&#xff0c;讓開發者可…

Spring 之注解事務 @Transactional

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 先讓我們看代碼吧&#xff01; 以下代碼為在“Spring3事務管理——基于tx/aop命名空間的配置”基礎上修改。首先修改applicationContext…

超級程序員神話

摘要&#xff1a;大部分的程序員在思想里都會某種程度的承認&#xff0c;承認自己只是一個普通的程序員&#xff0c;但這世界上確實有一些超級程序員&#xff0c;在一個為企業開發應用的程序員和一個為谷歌寫搜索算法的程序員之間&#xff0c;或和一個開發用來控制讀寫頭從磁盤…

HashMap30連問,徹底搞懂HashMap

文章目錄一、背景知識1、什么是Map&#xff1f;2、什么是Hash&#xff1f;3、什么是哈希表&#xff1f;4、什么是HashMap?5、如何使用HashMap&#xff1f;6、HashMap有哪些核心參數&#xff1f;7、HashMap與HashTable的對比&#xff1f;8、HashMap和HashSet的區別&#xff1f;…

博弈論的算法總結

開頭先啰嗦一句&#xff1a;想學好博弈&#xff0c;必然要花費很多的時間&#xff0c;深入學習&#xff0c;不要存在一知半解&#xff0c;應該是一看到題目&#xff0c;就想到博弈的類型。 以及&#xff0c;想不斷重復不斷重復&#xff0c;做大量各大oj網站的題目&#xff0c;最…

Slog55_lua面向對象之lua類

Slog55_lua面向對象之lua類 ArthurSlog SLog-55 Year1 GuangzhouChina Aug 30th 2018 微信掃描二維碼&#xff0c;關注我的公眾號GitHub 掘金主頁 簡書主頁 segmentfault 現實中的事情不是根據人的喜好而定的 比如長在你嘴里的智齒 大部分情況下 你會因為自己&#xff0…