糟糕程序員的20個(gè)壞習(xí)慣
你好,我是 Kaito。
今天我想和你聊一聊優(yōu)秀程序員的基本素養(yǎng)。
我想你肯定遇到過(guò)這樣一類(lèi)程序員:他們無(wú)論是寫(xiě)代碼,還是寫(xiě)文檔,又或是和別人溝通,都顯得特別專業(yè)。每次遇到這類(lèi)人,我都在想,他們到底是怎么做到的?
隨著工作時(shí)間的增長(zhǎng),漸漸地我也總結(jié)出一些經(jīng)驗(yàn),他們身上都保持著一些看似很微小的優(yōu)秀習(xí)慣,但正是因?yàn)檫@些習(xí)慣,體現(xiàn)出了一個(gè)優(yōu)秀程序員的基本素養(yǎng)。
但今天我們來(lái)?yè)Q個(gè)角度,來(lái)看看一個(gè)糟糕程序員有哪些壞習(xí)慣?只要我們都能避開(kāi)這些問(wèn)題,就可以逐漸向一個(gè)優(yōu)秀程序員靠近。
1、技術(shù)名詞拼寫(xiě)不規(guī)范
無(wú)論是個(gè)人簡(jiǎn)歷,還是技術(shù)文檔,我經(jīng)常看到拼寫(xiě)不規(guī)范的技術(shù)名詞,例如 JAVA、javascript、python、MySql、Hbase、restful。
正確的拼寫(xiě)應(yīng)該是 Java、JavaScript、Python、MySQL、HBase、RESTful,不要小看這個(gè)問(wèn)題,很多面試官很有可能因?yàn)檫@一點(diǎn)刷掉你的簡(jiǎn)歷。
2、寫(xiě)文檔,中英文混排不規(guī)范
中文描述使用英文標(biāo)點(diǎn)符號(hào),英文和數(shù)字使用了全角字符,中文與英文、數(shù)字之間沒(méi)有空格等等。
其中很多人會(huì)忽視中文和英文、數(shù)字之間加一個(gè)「空格」,這樣排版閱讀起來(lái)會(huì)更舒服。之前我的文章排版,都是遵循了這些細(xì)節(jié)。
3、重要邏輯不寫(xiě)注釋,或?qū)懙煤芡享?/h3>
復(fù)雜且重要的邏輯代碼,很多程序員不寫(xiě)注釋,除了自己能看懂代碼邏輯,其他人根本看不懂?;蛘呤亲⑨岆m然寫(xiě)了,但寫(xiě)得很拖沓,沒(méi)有邏輯可言。
重要的邏輯不止要寫(xiě)注釋,還要寫(xiě)得簡(jiǎn)潔、清晰。如果是一眼就能讀懂的簡(jiǎn)單代碼,可以不加注釋。
4、寫(xiě)復(fù)雜冗長(zhǎng)的函數(shù)
一個(gè)函數(shù)幾百行,一個(gè)文件上千行代碼,復(fù)雜函數(shù)不做拆分,導(dǎo)致代碼變得越來(lái)越難維護(hù),最后誰(shuí)也不敢動(dòng)。
基本的設(shè)計(jì)模式還是要遵守的,例如單一職責(zé),一個(gè)函數(shù)只做一件事,開(kāi)閉原則,對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。
如果函數(shù)邏輯確實(shí)復(fù)雜,也至少要保證主干邏輯足夠清晰。
5、不看官方文檔,只看垃圾博客
很多人遇到問(wèn)題不先去看官方文檔,而是熱衷于去看垃圾博客,這些博客的內(nèi)容都是互相抄襲,錯(cuò)誤百出。
其實(shí)很多軟件官方文檔寫(xiě)得已經(jīng)非常好了,常見(jiàn)問(wèn)題都能找到答案,認(rèn)真讀一讀官方文檔,比看垃圾博客強(qiáng)一百倍,要養(yǎng)成看官方文檔的好習(xí)慣。
6、宣揚(yáng)內(nèi)功無(wú)用論
有些人天天追求日新月異的開(kāi)源項(xiàng)目和框架,卻不肯花時(shí)間去啃一啃底層原理,常見(jiàn)問(wèn)題雖然可以解決,但遇到稍微深一點(diǎn)的問(wèn)題就束手無(wú)策。
很多高大上的架構(gòu)設(shè)計(jì),思路其實(shí)都源于底層。想一想,像計(jì)算機(jī)體系結(jié)構(gòu)、操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議這些東西,經(jīng)過(guò)多少年演進(jìn)才變?yōu)楝F(xiàn)在的樣子,演進(jìn)過(guò)程中遇到的復(fù)雜問(wèn)題比比皆是,理解了解決這些問(wèn)題的思路,再看上層技術(shù)會(huì)變得很簡(jiǎn)單。
7、樂(lè)于炫技
有些人天天把「高大上」的技術(shù)名詞掛在嘴邊,生怕別人不知道自己學(xué)了什么高深技術(shù),嘴上樂(lè)于炫技,但別人一問(wèn)他細(xì)節(jié)就會(huì)啞口無(wú)言。
8、不接受質(zhì)疑
自己設(shè)計(jì)的方案,別人提出疑問(wèn)時(shí)只會(huì)回懟,而不是理性分析利弊,抱著學(xué)習(xí)的心態(tài)交流。
這些人學(xué)了點(diǎn)東西就覺(jué)得自己很有本事,殊不知只是自己見(jiàn)識(shí)太少。
9、接口協(xié)議不規(guī)范
和別人定 API 協(xié)議全靠口頭溝通,不給規(guī)范的文檔說(shuō)明,甚至到了測(cè)試聯(lián)調(diào)時(shí)會(huì)發(fā)現(xiàn),竟然和協(xié)商的還不一樣,或者改協(xié)議了卻不通知對(duì)接方,合作體驗(yàn)極差。
10、遇到問(wèn)題自己死磕
很初級(jí)程序員容易犯的問(wèn)題,遇到問(wèn)題只會(huì)自己死磕,拖到 deadline 也沒(méi)有產(chǎn)出,領(lǐng)導(dǎo)來(lái)問(wèn)才知道有問(wèn)題解決不了。
有問(wèn)題及時(shí)反饋才是對(duì)自己負(fù)責(zé),對(duì)團(tuán)隊(duì)負(fù)責(zé)。
11、一說(shuō)就會(huì),一寫(xiě)就廢
平時(shí)技術(shù)方案吹得天花亂墜,一讓他寫(xiě)代碼就廢,典型的眼高手低選手。
12、表達(dá)沒(méi)有邏輯,不站在對(duì)方角度看問(wèn)題
討論問(wèn)題不交代背景,上來(lái)就說(shuō)自己的方案,別人聽(tīng)得云里霧里,讓你從頭描述你又講不明白。
學(xué)會(huì)溝通和表達(dá),是合作的基礎(chǔ)。
13、不主動(dòng)思考,伸手黨
遇到問(wèn)題不去 google,不做思考就向別人提問(wèn),喜歡做伸手黨。
每個(gè)人的時(shí)間都很寶貴,大家都更喜歡你帶著自己的思考來(lái)提問(wèn),一來(lái)可以規(guī)避很多低級(jí)問(wèn)題,二來(lái)可以提高交流質(zhì)量。
14、經(jīng)常犯重復(fù)的錯(cuò)誤
出問(wèn)題后說(shuō)下次會(huì)注意,但下次問(wèn)題依舊,對(duì)自己不負(fù)責(zé)任,說(shuō)到底是態(tài)度問(wèn)題。
15、加功能不考慮擴(kuò)展性
加新功能只關(guān)注某一小塊業(yè)務(wù),不考慮系統(tǒng)整體的擴(kuò)展性,堆代碼行為嚴(yán)重。
要學(xué)會(huì)分析需求和未來(lái)可能發(fā)生的變化,設(shè)計(jì)更通用的解決方案,降低后期開(kāi)發(fā)成本。
16、接口不自測(cè),出問(wèn)題不打日志
自己開(kāi)發(fā)的接口不自測(cè)就和別人聯(lián)調(diào),出了問(wèn)題又說(shuō)沒(méi)打日志,協(xié)作效率極低。
17、提交代碼不規(guī)范
很多人提交代碼不寫(xiě)描述,或者寫(xiě)的是無(wú)意義的描述,尤其是修改很少代碼時(shí),這種情況會(huì)導(dǎo)致回溯問(wèn)題成本變高。
制定代碼提交規(guī)范,能讓你在每一次提交代碼時(shí),不會(huì)做太隨意的代碼修改。
18、手動(dòng)修改生產(chǎn)環(huán)境數(shù)據(jù)庫(kù)
直連生產(chǎn)環(huán)境數(shù)據(jù)庫(kù)修改數(shù)據(jù),更有 UPDATE / DELETE SQL 忘寫(xiě) WEHRE 條件的情況,產(chǎn)生數(shù)據(jù)事故。
修改生產(chǎn)環(huán)境數(shù)據(jù)庫(kù)一定要謹(jǐn)慎再謹(jǐn)慎,建議操作前先找同事 review 代碼再操作。
19、沒(méi)理清需求就直接寫(xiě)代碼
很多程序員接到需求后,不怎么思考就開(kāi)始寫(xiě)代碼,需求和自己理解的有偏差,造成無(wú)意義返工。
多花些時(shí)間梳理需求,能規(guī)避很多不合理的問(wèn)題。
20、重要設(shè)計(jì)不寫(xiě)文檔
重要的設(shè)計(jì)沒(méi)有文檔輸出,和別人交接系統(tǒng)時(shí)只做口頭描述,丟失關(guān)鍵信息。
有時(shí)候理解一個(gè)設(shè)計(jì)方案,一個(gè)好的文檔要比看幾百行代碼更高效。
總結(jié)
以上這些不良習(xí)慣,你命中幾個(gè)呢?或者你身邊有沒(méi)有碰到這樣的人?
我認(rèn)為提早規(guī)避這些問(wèn)題,是成為一個(gè)優(yōu)秀程序員必須要做的。這些習(xí)慣總結(jié)起來(lái)大致分為這 4 個(gè)方面:
- 良好的編程修養(yǎng)
 - 謙虛的學(xué)習(xí)心態(tài)
 - 良好的溝通和表達(dá)
 - 注重團(tuán)隊(duì)協(xié)作
 
優(yōu)秀程序員的專業(yè)技能,我們可能很難在短時(shí)間內(nèi)學(xué)會(huì),但這些基本的職業(yè)素養(yǎng),是可以在短期內(nèi)做到的。
希望你我可以有則改之,無(wú)則加勉。















 
 
 


 
 
 
 