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