优秀程序员和一般程序员差别在哪?
還記得研發(fā)頻道此前發(fā)表過的一篇《白班程序員 VS. 夜貓子程序員》嗎?在這個(gè)世界上有兩種程序員,我們稱之為:Day Programmers(白班程序員)和Night Programmers(夜貓子程序員)。本文我們將探討優(yōu)秀程序員和一般程序員有哪些差別,看看您是屬于那一種?來自知乎網(wǎng)上的大牛們各抒己見,一起來看下他們是如何區(qū)分的。
創(chuàng)業(yè)者 郭凜:如果純以編碼能力來看,可分為五類
1. 拷貝型
拷貝型選手就是傳說中的“代碼拷貝員”了,他們對(duì)實(shí)現(xiàn)功能幾乎沒有思路,所作的事情就是從網(wǎng)上或是之前其他團(tuán)隊(duì)成員寫的代碼中拷貝出片段,然后放到項(xiàng)目中,如果運(yùn)行項(xiàng)目出現(xiàn)了期望結(jié)果,則表示任務(wù)完成。這類人只會(huì)改代碼,卻不會(huì)寫代碼。他們大多對(duì)編程毫無興趣,只是希望以此糊口而已。
2. 新手型
當(dāng)產(chǎn)品有功能需求時(shí),由于經(jīng)驗(yàn)有限,程序員并不完全知道要如何實(shí)現(xiàn)這個(gè)功能,需要通過學(xué)習(xí)、尋找資料等方式來解決問題。這種情況下的編碼過程,程序員的主要目標(biāo)是“完成功能”,那么很難有多余的心思去考慮邊界條件、性能、可讀性、可擴(kuò)展性、編碼規(guī)范等問題,因此代碼bug可能較多,穩(wěn)定性不高,常常會(huì)發(fā)生開發(fā)花費(fèi)1個(gè)月,改bug卻要改上好幾個(gè)月的事情。
3. 學(xué)習(xí)型
這類程序員對(duì)所在領(lǐng)域的語言已經(jīng)比較了解,對(duì)于一般功能可以有較為清晰的實(shí)現(xiàn)思路,給出需求時(shí)可以通過自己的思路來實(shí)現(xiàn),并且會(huì)一定程度上考慮邊界條件和性能問題。但僅此而已,他們對(duì)可讀性和可擴(kuò)展性考慮很少,也沒有項(xiàng)目級(jí)別的考慮,主要是希望通過實(shí)現(xiàn)代碼來練手或是學(xué)習(xí)。
這類程序員最大的表現(xiàn)在于喜歡“創(chuàng)造代碼”,即使有現(xiàn)成的實(shí)現(xiàn),他們也希望自己來實(shí)現(xiàn)一套,以達(dá)到“學(xué)習(xí)”的目的。他們不喜歡復(fù)用別人的代碼,看見項(xiàng)目中別人實(shí)現(xiàn)了相類似的功能,他們會(huì)以“需求不同”的借口來自己重新實(shí)現(xiàn)一套。這類人一般來說對(duì)技術(shù)有著較為濃厚的興趣,希望能夠通過項(xiàng)目來進(jìn)行學(xué)習(xí)。從項(xiàng)目的角度來說,這種做法最大的麻煩在于開發(fā)周期可能較長(相比直接使用現(xiàn)成的實(shí)現(xiàn)),并且會(huì)使得項(xiàng)目代碼膨脹,影響未來的維護(hù)。但這類程序員由于有興趣,如果好好培養(yǎng)或許會(huì)成為明天的牛人。
4. 實(shí)現(xiàn)型
這類程序員一般有較為豐富的經(jīng)驗(yàn),由于寫得太多,因此不再追求“創(chuàng)造代碼”來進(jìn)行學(xué)習(xí),同時(shí)對(duì)所在領(lǐng)域可能涉及的很多第三方框架或是工具都比較熟悉,當(dāng)接受到產(chǎn)品需求時(shí),對(duì)功能實(shí)現(xiàn)方案已經(jīng)了然于胸,因此他們可以快速的實(shí)現(xiàn)需求,并且對(duì)邊界、性能都有一定程度的考慮。因?yàn)槟軌蚩焖賹?shí)現(xiàn)需求功能,經(jīng)常會(huì)被團(tuán)隊(duì)評(píng)價(jià)為“牛人”。但他們一般僅僅停留在“完成功能”級(jí)別上,對(duì)代碼的可讀性、可擴(kuò)展性、編碼規(guī)范等考慮較少,對(duì)項(xiàng)目總體把握也較少(例如控制項(xiàng)目膨脹、方便部署等架構(gòu)級(jí)別的東西)。
這類程序員最大的表現(xiàn)在于喜歡“開發(fā)項(xiàng)目”,卻不喜歡“維護(hù)項(xiàng)目”。他們產(chǎn)出的代碼最大的問題就是維護(hù)較為困難,可能過上幾個(gè)月回頭看自己的代碼都會(huì)暈頭轉(zhuǎn)向。因此即使是自己寫的代碼,仍然不愿意維護(hù),一般會(huì)苦了后來人。因?yàn)榻涌谠O(shè)計(jì)的缺乏,當(dāng)需求變更時(shí),發(fā)現(xiàn)代碼要改的東西太多,然后抱怨需求變化,卻很少認(rèn)為是自己的代碼問題。這樣的項(xiàng)目如果經(jīng)過長時(shí)間的變更維護(hù),最終會(huì)變得難以維護(hù)(一般表現(xiàn)在需求變更響應(yīng)時(shí)間越來越長)甚至無法維護(hù),最終要么是半死不活,要么是被推倒重來。
5. 架構(gòu)型
這類程序員比實(shí)現(xiàn)型更進(jìn)一步,他們經(jīng)驗(yàn)豐富,對(duì)相關(guān)框架和工具等都很熟悉,“完成功能”、“穩(wěn)定性”、“性能”這些已經(jīng)不再是他們的追求,更優(yōu)美的代碼、更合理的架構(gòu)才是目標(biāo)。
這類程序員代碼設(shè)計(jì)大多建立在對(duì)需求的詳細(xì)了解和對(duì)需求變更的預(yù)測(cè)上——可擴(kuò)展性較好;代碼細(xì)節(jié)也盡量多的考慮邊界情況、性能——穩(wěn)定高效;代碼命名和注釋都恰到好處——可讀性較高;同時(shí)在開發(fā)過程中他們會(huì)不斷重構(gòu),對(duì)代碼做減法——保證項(xiàng)目可持續(xù)發(fā)展等等,但由于考慮問題較多,單從“實(shí)現(xiàn)功能”階段來看,完成速度不一定會(huì)比“實(shí)現(xiàn)型”要快。只是到了項(xiàng)目中后期優(yōu)勢(shì)才會(huì)慢慢體現(xiàn)出來。
知乎刪代碼工程師 安江澤:創(chuàng)造型、管家型、學(xué)院派、鐘表型、折騰型
1. 創(chuàng)造型/創(chuàng)新型
以創(chuàng)造/創(chuàng)新為樂的程序員。以新的方法解決現(xiàn)有問題,發(fā)明方法解決尚未解決的問題。問題本身并不限于技術(shù)領(lǐng)域。硅谷很多技術(shù)創(chuàng)始人具備這類的品質(zhì)。雖然他們創(chuàng)業(yè)后都不再全職寫代碼,但他們這種品質(zhì)貢獻(xiàn)了他們事業(yè)的第一步。
2. 管家型
以管系統(tǒng)演化為樂的程序員。有潔癖,有強(qiáng)迫癥,容不得系統(tǒng)有一點(diǎn)的瑕疵。如果你招聘了一個(gè)程序員/架構(gòu)師,2-3年后你的互聯(lián)網(wǎng)產(chǎn)品再也沒有在可見/可擴(kuò)展性上遇到瓶頸,他多半是這種程序員。
3. 學(xué)院派型
通常在CS某一領(lǐng)域擁有博士學(xué)位,或者深受他們的影響的人。對(duì)該該領(lǐng)域興趣濃厚,通常參與企業(yè)核心競(jìng)爭力相關(guān)的研發(fā)工作。當(dāng)然,也有一部分也具備第一種特質(zhì),中途去改變世界去了。
4. 經(jīng)驗(yàn)型
在行內(nèi)具有多年豐富的經(jīng)驗(yàn),可承擔(dān)責(zé)任,考慮全面。團(tuán)隊(duì)擁有了這種人,通常會(huì)少走很多彎路。但面對(duì)新的挑戰(zhàn)還是要和其他人站在同一起跑線上的。
5. 鐘表匠型
喜歡并擅長把一個(gè)系統(tǒng)從里到外研究通透的人。分享出來都是從里到外讓人垂涎欲滴的干貨。很多后端工程師都是這種類型。
6. 折騰型
擅長“折騰”,方案沒有最好的,只有最難的。興趣廣泛動(dòng)手能力強(qiáng),通過折騰留下很多技術(shù)積累。想用哪一塊的新技術(shù)?先問問他把,8成他很久前就已經(jīng)玩過了。
7. 肉盾型
哥甲高血條長,加班如同切菜一般,逼急了不睡覺也行。只伸手要過兩件東西:原型和咖啡。適合打閃電戰(zhàn)。當(dāng)然,可能事后要打打后勤重構(gòu)下代碼。
iApp4Me創(chuàng)始人、iOS開發(fā)者郝培強(qiáng):七大標(biāo)準(zhǔn) 邏輯思維很重要
優(yōu)秀程序員的標(biāo)準(zhǔn):
產(chǎn)品管理、IT項(xiàng)目管理 何明璐:優(yōu)秀程序員具有較明顯的自戀和偏執(zhí)特征
總結(jié):
不管是優(yōu)秀程序員還是一般程序員,小編認(rèn)為只要你喜歡思考,愛學(xué)習(xí),對(duì)編碼有興趣,那么你就是最好的。當(dāng)然掌握技術(shù)才是硬道理,套用別人的一句話“不想當(dāng)CEO的程序員,不是好的產(chǎn)品經(jīng)理”。程序員們,加油吧!
總結(jié)
以上是生活随笔為你收集整理的优秀程序员和一般程序员差别在哪?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#String.Split (stri
- 下一篇: for循环本质