“專(zhuān)業(yè)”,在百科里有下面這三種解釋?zhuān)?/p>
學(xué)校里的學(xué)科
生產(chǎn)部門(mén)里的業(yè)務(wù)部門(mén)
有知識(shí)修養(yǎng)的專(zhuān)門(mén)職業(yè)者;職業(yè)畫(huà)家[演員等],職業(yè)選手;內(nèi)行,專(zhuān)家
標(biāo)題中的“專(zhuān)業(yè)”,指的是第三種解釋。請(qǐng)注意這個(gè)詞——“有知識(shí)修養(yǎng)”,有知識(shí)還不夠,還要有修養(yǎng)。
職場(chǎng)里各行各業(yè),唯有“專(zhuān)業(yè)人士”,才能夠受人尊重;人們尋找?guī)椭鷷r(shí),首先想到的也是對(duì)應(yīng)領(lǐng)域里的“專(zhuān)業(yè)人士”。我們說(shuō)一個(gè)醫(yī)生很專(zhuān)業(yè),除了他醫(yī)術(shù)精湛之外,還有他心系患者、盡心盡責(zé)的醫(yī)德,同樣的,對(duì)于程序員,我們除了要有犀利的技術(shù)之外,還要有對(duì)應(yīng)的職業(yè)修養(yǎng)。
業(yè)余選手 vs 專(zhuān)業(yè)主義
面對(duì)同樣一件事情,業(yè)余程序員(Amateurs)和專(zhuān)業(yè)程序員(Majors)往往有不同表現(xiàn):
1)看到爛代碼時(shí)
A:WTF?。?! 這代碼誰(shuí)寫(xiě)的!
M:讓我來(lái)重構(gòu)它
2)項(xiàng)目進(jìn)度緊張
A:哎,時(shí)間那么緊,考慮不了那么多了,先把功能做了再說(shuō)
M:我得找經(jīng)理商量,這么短時(shí)間是不可能把這個(gè)功能完全做好的
3)被同事打斷時(shí)
A:要么馬上被從工作中帶走,“啊,怎么啦”,要么很不耐煩,“少煩我,沒(méi)看我這正忙么”
M:“稍等一下哈…”,然后記下當(dāng)前工作的上下文信息,讓自己重新回到工作時(shí),能盡快進(jìn)入狀態(tài)
4)業(yè)余時(shí)間
A:終于有時(shí)間好好睡個(gè)懶覺(jué)了
M:終于有時(shí)間學(xué)習(xí)新知識(shí)了
……
最近閱讀了一些關(guān)于程序員職業(yè)素養(yǎng)的書(shū)籍,發(fā)現(xiàn)專(zhuān)業(yè)的程序員,大都有下面這些特質(zhì):
主動(dòng)學(xué)習(xí)
專(zhuān)業(yè)的程序員懂得不斷精進(jìn)自己的專(zhuān)業(yè)技能,抽出時(shí)間來(lái)學(xué)習(xí)。就像《歡樂(lè)頌》里的趙醫(yī)生一樣,帶上你的Mac,找一家安靜的咖啡廳,待上一個(gè)上午,看最新的醫(yī)學(xué)文獻(xiàn)。程序員也要這樣做,必須不斷地更新自己的技能,提高自己的“基線(xiàn)”。
這里的基線(xiàn)是一個(gè)很重要的概念,用吳軍老師的話(huà)來(lái)說(shuō)就是:
每個(gè)人的基線(xiàn)都不一樣,民間科學(xué)家的基線(xiàn),決定了他們就算奮斗一生,最多也只能到達(dá)中科院科學(xué)家的基線(xiàn)。
我們只有通過(guò)不斷地學(xué)習(xí),才能用知識(shí)把自己墊高,站的更高,才能看的更遠(yuǎn)。
個(gè)人品牌意識(shí)
《軟技能——代碼之外的生存指南》里,作者提到,程序員要學(xué)會(huì)自我營(yíng)銷(xiāo),在業(yè)界打造自己的個(gè)人品牌。而在工作中也一樣,對(duì)公司和同事來(lái)說(shuō),你的名字就是一個(gè)品牌。別人一提到你的名字,就會(huì)想到這人的代碼寫(xiě)的怎么樣、看他的代碼累不累、實(shí)現(xiàn)的功能質(zhì)量怎么樣、Bug多不多…
專(zhuān)業(yè)的程序員會(huì)努力打造和維持自己的個(gè)人品牌,在同事心目中樹(shù)立一個(gè)品牌的形象。
代碼潔癖
專(zhuān)業(yè)的程序員不會(huì)僅僅滿(mǎn)足于實(shí)現(xiàn)功能,他們還會(huì)主動(dòng)優(yōu)化自己的代碼。
他們會(huì)聞到自己代碼里的壞味道,對(duì)變量命名、函數(shù)、注釋等進(jìn)行重構(gòu)優(yōu)化。
專(zhuān)業(yè)的程序員遵守童子軍軍規(guī)——“讓營(yíng)地比你來(lái)時(shí)更干凈”,他們知道“破窗”的危害,他們有代碼潔癖。
不畏懼任何代碼
專(zhuān)業(yè)的程序員在開(kāi)發(fā)之前,會(huì)閱讀相關(guān)模塊的代碼,因?yàn)樗麄冎?,文檔會(huì)撒謊,但是代碼不會(huì)。不管代碼寫(xiě)的多難看,他們都知道,那才是反映系統(tǒng)真實(shí)運(yùn)作機(jī)制的“文檔”。
如果代碼寫(xiě)的非常一般,他們會(huì)對(duì)其進(jìn)行一小步一小步的重構(gòu),每次重構(gòu)之后都會(huì)運(yùn)行單元測(cè)試,以確保自己的改動(dòng)沒(méi)有對(duì)原先功能造成影響。
如果這個(gè)模塊之前沒(méi)有足夠的單元測(cè)試,那么在開(kāi)始重構(gòu)之前,專(zhuān)業(yè)的程序員會(huì)主動(dòng)補(bǔ)充測(cè)試用例,因?yàn)樗麄冎溃绻约哼B測(cè)試用例都寫(xiě)不出來(lái),就根本談不上理解了這個(gè)模塊,也就根本沒(méi)資格去動(dòng)這塊代碼。
如果代碼根本無(wú)法正常運(yùn)行,在很多情形下都有Bug,那么專(zhuān)業(yè)的程序員不會(huì)浪費(fèi)時(shí)間去重構(gòu),他們會(huì)選擇重寫(xiě)。
重構(gòu),是在不改變代碼外在行為的前提下,對(duì)代碼作出修改,以改進(jìn)程序的內(nèi)部結(jié)構(gòu)。 —— 《重構(gòu)》,Martin Fowler
在這里墻裂推薦大家,把《重構(gòu)》這本書(shū)放在自己座位旁邊,你不必一下子把這本厚厚的“重構(gòu)字典”看完,因?yàn)樗褪且槐咀值?,在你需要重?gòu)的時(shí)候,去里面檢索就好,有興趣的同學(xué)可以前去看看我對(duì)怎么使用這本書(shū)的一些感受。
敢于說(shuō)不
專(zhuān)業(yè)的程序員懂得主動(dòng)掌控自己的工作,如果有一個(gè)需求最早也要在周五才能完全,但是領(lǐng)導(dǎo)要求必須在周三之前,他們不會(huì)說(shuō),“好,我盡量”,因?yàn)槟遣粌H是在欺騙自己,還是在欺騙經(jīng)理,最后傷害的是整個(gè)團(tuán)隊(duì)。他們會(huì)跟經(jīng)理商量,如果要在周三之前完成,哪些功能是無(wú)法實(shí)現(xiàn)的,讓經(jīng)理作出取舍。
與此相反,不專(zhuān)業(yè)的程序員,往往會(huì)屈服于經(jīng)理的權(quán)威,最終交付一個(gè)代碼質(zhì)量極差、還帶有很多Bug的功能。
《程序員的思維修煉》中提到了德雷福斯模型,這個(gè)模型對(duì)“新手”的定義就是——只會(huì)按照指令列表做事,如果你不懂得說(shuō)不。把別人交給你的每一件事都接下來(lái),那你和“新手”也沒(méi)什么區(qū)別了。
不要以為你說(shuō)“不”會(huì)辜負(fù)了經(jīng)理的期望,相反,答應(yīng)一件自己完成不了的事情才是對(duì)經(jīng)理最大的辜負(fù)。學(xué)會(huì)說(shuō)不,恰恰是你靠譜的表現(xiàn)。人們都喜歡真實(shí)的人,經(jīng)理也不例外。
謹(jǐn)慎承諾 言出必行
專(zhuān)業(yè)的程序員不會(huì)輕易許下承諾,如果承諾,那必定是他自己能夠完全掌握的事情,而不是承諾需要依賴(lài)他人的事情。
比如你的模塊需要依賴(lài)Peter的模塊,你就不能承諾既把自己的模塊開(kāi)發(fā)完成,還可以跟Peter的模塊完成對(duì)接,因?yàn)閷?duì)接可以完成地前提是Peter能夠按時(shí)交付他的模塊,而這不是你能控制的。你能承諾的只有跟Peter一起坐下來(lái),討論一下對(duì)接的方案,然后每天互相匯報(bào)一次各自的開(kāi)發(fā)進(jìn)度。
專(zhuān)業(yè)的程序員還懂得及時(shí)匯報(bào)風(fēng)險(xiǎn)。有些事情確實(shí)很難預(yù)測(cè),這時(shí)候你就要去調(diào)整別人對(duì)你的預(yù)期,盡早向你的承諾對(duì)象發(fā)出預(yù)警,跟他溝通有沒(méi)有更好的解決方案。Peter就經(jīng)常干這種事,每當(dāng)工作被堵塞時(shí),他會(huì)主動(dòng)地跟項(xiàng)目經(jīng)理說(shuō),“Bob,幫忙看個(gè)問(wèn)題”,“Bob,感覺(jué)周三之前完成有很大風(fēng)險(xiǎn)啊…”
不在狀態(tài)不好的時(shí)候?qū)懘a
剛和老婆吵了一架,然后回去公司,心煩意亂地寫(xiě)代碼?
通宵定位問(wèn)題,然后在疲憊不堪時(shí)打算修改代碼解決這個(gè)Bug?
專(zhuān)業(yè)人士不會(huì)這么做,他們知道,在狀態(tài)不好的時(shí)候?qū)懘a,只會(huì)寫(xiě)出一堆Bug。
善于對(duì)付中斷
編程時(shí)總免不了被同事打斷,一個(gè)突如其來(lái)的電話(huà)會(huì)議,右下角突然冒出來(lái)的聊天信息,還有Peter突然從背后過(guò)來(lái)的擁抱…
面對(duì)“打斷”,專(zhuān)業(yè)的程序員懂得說(shuō),“稍等一下…”,然后他們會(huì)在記下當(dāng)前工作的上下文信息,讓自己重新回到工作時(shí),能盡快進(jìn)入狀態(tài)。
當(dāng)然,如果你在跟別人結(jié)對(duì)編程,或者你用了TDD,那么保存上下文信息就變得非常簡(jiǎn)單。
重視單元測(cè)試
專(zhuān)業(yè)的程序員知道單元測(cè)試的重要性,他們會(huì)把測(cè)試代碼和產(chǎn)品代碼看的一樣重要,他們還會(huì)使用TDD。
關(guān)于單元測(cè)試的重要性和TDD,我在之前的文章中有介紹過(guò),歡迎閱讀:如何說(shuō)服你的同事使用TDD
管理時(shí)間
專(zhuān)業(yè)的程序員對(duì)待會(huì)議的三項(xiàng)原則:
拒絕那些與自己無(wú)關(guān)的會(huì)議;
如果進(jìn)入會(huì)議后發(fā)現(xiàn)自己沒(méi)必要參加,那么安靜的離席;
尊重對(duì)方的時(shí)間。只召集那些必要的同事參加會(huì)議,并且會(huì)在會(huì)議前整理好會(huì)議的主題和議程。
管理精力
專(zhuān)業(yè)的程序員能夠讓自己精力充沛地投入到工作中。
他們知道保持充足的睡眠,知道通過(guò)一些體力活動(dòng),來(lái)放松自己的大腦。
管理壓力
專(zhuān)業(yè)的程序員會(huì)盡量避免壓力,他們謹(jǐn)慎承諾,不答應(yīng)做不到的事情;他們保持代碼的整潔,方便問(wèn)題定位和重構(gòu)代碼;他們堅(jiān)持著自己的編碼原則,對(duì)自己交付的功能有很大信心,就算有Bug,也能很快定位處理。
而當(dāng)壓力來(lái)臨時(shí),專(zhuān)業(yè)的程序員不會(huì)驚慌失措,因?yàn)樗麄兞私馑麄冐?fù)責(zé)的代碼的邏輯,如果有不懂的地方,他們會(huì)及時(shí)溝通,向他人求助。
不固執(zhí)
專(zhuān)業(yè)的程序員不會(huì)在一條道上耗費(fèi)太多時(shí)間,一旦發(fā)現(xiàn)這是個(gè)死胡同或者泥潭,就會(huì)及時(shí)抽身,往回走。
編程之外的技術(shù)
專(zhuān)業(yè)的程序員不會(huì)是“離開(kāi)了編輯器就渴死的魚(yú)”,他們具備計(jì)算機(jī)原理、TCP/IP協(xié)議這些計(jì)算機(jī)學(xué)科的基礎(chǔ)知識(shí),他們對(duì)常用的Shell命令牢記于心,他們還善于使用各種工具的快捷鍵來(lái)提升他們的工作效率。
我的同事Peter就是這樣一個(gè)專(zhuān)業(yè)的程序員,作為一個(gè)前端工程師,他對(duì)網(wǎng)絡(luò)方面的知識(shí)非常熟悉,VLAN、網(wǎng)關(guān)、掩碼、信任域等等,簡(jiǎn)直就是一本網(wǎng)絡(luò)百科全書(shū),他操作起Linux命令行也是相當(dāng)熟練,出現(xiàn)問(wèn)題了,需要定位,他會(huì)說(shuō),“給我環(huán)境信息,我上去看看”,然后就是各種查找日志、抓包分析,他敲鍵盤(pán)的速度也是賊快賊快,我想,這大概是我見(jiàn)過(guò)最完美、最酷炫、最專(zhuān)業(yè)的程序員了吧。
以上就是我總結(jié)出來(lái)的專(zhuān)業(yè)程序員的特質(zhì)。你心目中專(zhuān)業(yè)的程序員還有哪些好的職業(yè)素養(yǎng)呢?歡迎在評(píng)論區(qū)里和大家一起分享!讓我們一起做一只既有技術(shù),又有修養(yǎng)的程序猿!
-
程序員
+關(guān)注
關(guān)注
4文章
954瀏覽量
30423
發(fā)布評(píng)論請(qǐng)先 登錄
潤(rùn)和軟件穩(wěn)居數(shù)字業(yè)務(wù)類(lèi)解決方案市場(chǎng)第一名
如何成為一名合格的KaihongOS南向驅(qū)動(dòng)開(kāi)發(fā)工程師
如何成為一名合格的KaihongOS北向應(yīng)用開(kāi)發(fā)工程師
如何成為一名嵌入式軟件工程師?
如何成為一名合格的北向應(yīng)用開(kāi)發(fā)工程師
阿里云升級(jí)通義靈碼AI程序員,全面上線(xiàn)
TMS320C55x DSP CPU程序員參考補(bǔ)充

UCD3138A64/UCD3138128程序員手冊(cè)

蔚來(lái)獲得CACSI車(chē)型滿(mǎn)意度和售后服務(wù)滿(mǎn)意度第一名
機(jī)械革命發(fā)布CODE AI程序員本
Linux驅(qū)動(dòng)程序程序員指南

AI編程工具會(huì)不會(huì)搶程序員飯碗
第五屆長(zhǎng)沙·中國(guó)1024程序員節(jié)開(kāi)幕
90后程序員的職業(yè)成長(zhǎng)漫談

評(píng)論