一個普通的程序員和一個優(yōu)秀的程序員之間,到底存在什么樣的差異呢?我認(rèn)為這種差異主要體現(xiàn)在他們的編碼能力和思維方式上。
如果按照學(xué)習(xí)發(fā)展路徑來看,程序員大致可以分為五類,依次是:
1. 拷貝型程序員:代碼的搬運工
這類程序員就是傳說中的“代碼拷貝員”,這類程序員只會改代碼,卻不會寫代碼,對編程毫無興趣,只是希望以此糊口。
他們對實現(xiàn)功能幾乎沒有思路,唯一的技能就是從網(wǎng)上或其他團(tuán)隊成員的代碼中拷貝片段,然后拼湊到項目中。
只要項目能運行,他們就認(rèn)為任務(wù)完成了。他們對技術(shù)提升沒有興趣或沒有方向,成長得很慢。
2. 新手型程序員:功能至上,忽略細(xì)節(jié)
新手程序員由于經(jīng)驗有限,面對新功能需求往往不知所措,需要通過學(xué)習(xí)、搜索資料等方式來解決問題。
他們將重點放在“完成功能”上,而忽略了邊界條件、性能、可讀性、可擴(kuò)展性、編碼規(guī)范等重要因素。
因此,他們的代碼往往bug較多,穩(wěn)定性不高,開發(fā)周期長,維護(hù)成本高,甚至?xí)霈F(xiàn)開發(fā)一個月,改bug卻要改好幾個月的尷尬局面。
3. 學(xué)習(xí)型程序員:熱衷創(chuàng)造,忽視復(fù)用
這類程序員對所在領(lǐng)域的語言已經(jīng)比較了解,對于一般功能可以有較為清晰的實現(xiàn)思路。
他們喜歡“創(chuàng)造代碼”,即使有現(xiàn)成的實現(xiàn)方案,他們也希望自己重新實現(xiàn)一套,以達(dá)到“學(xué)習(xí)”的目的。
他們不喜歡復(fù)用別人的代碼,即使項目中存在相似的功能,他們也會以“需求不同”的借口來重新編寫代碼。
這種做法雖然有利于學(xué)習(xí),但也會帶來一些問題。例如,開發(fā)周期可能較長,代碼膨脹,影響項目的維護(hù)。
從項目的角度來看,這類程序員最大的問題在于他們?nèi)狈Υa復(fù)用和項目整體架構(gòu)的理解,導(dǎo)致代碼質(zhì)量不高,維護(hù)成本增加。
4. 實現(xiàn)型程序員:功能至上,忽略架構(gòu)
這類程序員一般擁有較為豐富的經(jīng)驗,他們不再追求“創(chuàng)造代碼”來進(jìn)行學(xué)習(xí),而是更注重快速實現(xiàn)功能。
他們熟悉常用的框架和工具,能夠快速理解需求,并給出解決方案。他們對邊界條件和性能問題也有一定的考慮,因此經(jīng)常被團(tuán)隊評價為“牛人”。
然而,這類程序員往往只關(guān)注“完成功能”,而忽略了代碼的可讀性、可擴(kuò)展性、編碼規(guī)范等問題,對項目整體架構(gòu)的把握也較少。
他們產(chǎn)出的代碼維護(hù)難度較高,甚至幾個月后自己都難以理解。當(dāng)需求變更時,他們會抱怨需求變化,卻很少反思自己的代碼問題,導(dǎo)致項目維護(hù)成本不斷增加。
5. 架構(gòu)型程序員:追求優(yōu)雅,注重可持續(xù)發(fā)展
這類程序員比實現(xiàn)型更進(jìn)一步,他們擁有豐富的經(jīng)驗,對相關(guān)框架和工具等都很熟悉,對代碼的質(zhì)量和架構(gòu)有著更高的追求。
他們不僅關(guān)注“完成功能”和“穩(wěn)定性”,更注重代碼的優(yōu)雅、可讀性和可擴(kuò)展性。
盡管架構(gòu)型程序員在“實現(xiàn)功能”階段的速度可能不如實現(xiàn)型程序員快,但他們在項目中后期會展現(xiàn)出巨大的優(yōu)勢。
他們能夠構(gòu)建出更合理、更可維護(hù)的系統(tǒng),為項目的長期發(fā)展奠定堅實的基礎(chǔ)。
從代碼搬運工到架構(gòu)師,這條道路并不平坦,需要不斷的學(xué)習(xí)和積累。
希望每個程序員都能找到自己的方向,不斷提升自己的技能,最終成為一名優(yōu)秀的軟件開發(fā)者。