專業程式設計師的標準,你達到了嗎?
作者:SexyCode
“專業”,在百科裡有下面這三種解釋:
- 學校裡的學科
- 生產部門裡的業務部門
- 有知識修養的專門職業者;職業畫家[演員等],職業選手;內行,專家
標題中的“專業”,指的是第三種解釋。請注意這個詞——“有知識修養”,有知識還不夠,還要有修養。
職場裡各行各業,唯有“專業人士”,才能夠受人尊重;人們尋找幫助時,首先想到的也是對應領域裡的“專業人士”。我們說一個醫生很專業,除了他醫術精湛之外,還有他心繫患者、盡心盡責的醫德,同樣的,對於程式設計師,我們除了要有犀利的技術之外,還要有對應的職業修養。
業餘選手 vs 專業主義
面對同樣一件事情,業餘程式設計師(Amateurs)和專業程式設計師(Majors)往往有不同表現:
1)看到爛程式碼時
A:WTF!!! 這程式碼誰寫的!
M:讓我來重構它
2)專案進度緊張
A:哎,時間那麼緊,考慮不了那麼多了,先把功能做了再說
M:我得找經理商量,這麼短時間是不可能把這個功能完全做好的
3)被同事打斷時
A:要麼馬上被從工作中帶走,“啊,怎麼啦”,要麼很不耐煩,“少煩我,沒看我這正忙麼”
M:“稍等一下哈…”,然後記下當前工作的上下文資訊,讓自己重新回到工作時,能儘快進入狀態
4)業餘時間
A:終於有時間好好睡個懶覺了
M:終於有時間學習新知識了
……
最近閱讀了一些關於程式設計師職業素養的書籍,發現專業的程式設計師,大都有下面這些特質:
主動學習
專業的程式設計師懂得不斷精進自己的專業技能,抽出時間來學習。就像《歡樂頌》裡的趙醫生一樣,帶上你的Mac,找一家安靜的咖啡廳,待上一個上午,看最新的醫學文獻。程式設計師也要這樣做,必須不斷地更新自己的技能,提高自己的“基線”。
這裡的基線是一個很重要的概念,用吳軍老師的話來說就是:
每個人的基線都不一樣,民間科學家的基線,決定了他們就算奮鬥一生,最多也只能到達中科院科學家的基線。
我們只有通過不斷地學習,才能用知識把自己墊高,站的更高,才能看的更遠。
個人品牌意識
《軟技能——程式碼之外的生存指南》裡,作者提到,程式設計師要學會自我營銷,在業界打造自己的個人品牌。而在工作中也一樣,對公司和同事來說,你的名字就是一個品牌。別人一提到你的名字,就會想到這人的程式碼寫的怎麼樣、看他的程式碼累不累、實現的功能質量怎麼樣、Bug多不多…
專業的程式設計師會努力打造和維持自己的個人品牌,在同事心目中樹立一個品牌的形象。
程式碼潔癖
專業的程式設計師不會僅僅滿足於實現功能,他們還會主動優化自己的程式碼。
他們會聞到自己程式碼裡的壞味道,對變數命名、函式、註釋等進行重構優化。
專業的程式設計師遵守童子軍軍規——“讓營地比你來時更乾淨”,他們知道“破窗”的危害,他們有程式碼潔癖。
不畏懼任何程式碼
專業的程式設計師在開發之前,會閱讀相關模組的程式碼,因為他們知道,文件會撒謊,但是程式碼不會。不管程式碼寫的多難看,他們都知道,那才是反映系統真實運作機制的“文件”。
如果程式碼寫的非常一般,他們會對其進行一小步一小步的重構,每次重構之後都會執行單元測試,以確保自己的改動沒有對原先功能造成影響。
如果這個模組之前沒有足夠的單元測試,那麼在開始重構之前,專業的程式設計師會主動補充測試用例,因為他們知道,如果自己連測試用例都寫不出來,就根本談不上理解了這個模組,也就根本沒資格去動這塊程式碼。
如果程式碼根本無法正常執行,在很多情形下都有Bug,那麼專業的程式設計師不會浪費時間去重構,他們會選擇重寫。
重構,是在不改變程式碼外在行為的前提下,對程式碼作出修改,以改程式序的內部結構。 —— 《重構》,Martin Fowler
在這裡牆裂推薦大家,把《重構》這本書放在自己座位旁邊,你不必一下子把這本厚厚的“重構字典”看完,因為它就是一本字典,在你需要重構的時候,去裡面檢索就好,有興趣的同學可以前去看看我對怎麼使用這本書的一些感受。
敢於說不
專業的程式設計師懂得主動掌控自己的工作,如果有一個需求最早也要在週五才能完全,但是領導要求必須在週三之前,他們不會說,“好,我儘量”,因為那不僅是在欺騙自己,還是在欺騙經理,最後傷害的是整個團隊。他們會跟經理商量,如果要在週三之前完成,哪些功能是無法實現的,讓經理作出取捨。
與此相反,不專業的程式設計師,往往會屈服於經理的權威,最終交付一個程式碼質量極差、還帶有很多Bug的功能。
《程式設計師的思維修煉》中提到了德雷福斯模型,這個模型對“新手”的定義就是——只會按照指令列表做事,如果你不懂得說不。把別人交給你的每一件事都接下來,那你和“新手”也沒什麼區別了。
不要以為你說“不”會辜負了經理的期望,相反,答應一件自己完成不了的事情才是對經理最大的辜負。學會說不,恰恰是你靠譜的表現。人們都喜歡真實的人,經理也不例外。
謹慎承諾 言出必行
專業的程式設計師不會輕易許下承諾,如果承諾,那必定是他自己能夠完全掌握的事情,而不是承諾需要依賴他人的事情。
比如你的模組需要依賴Peter的模組,你就不能承諾既把自己的模組開發完成,還可以跟Peter的模組完成對接,因為對接可以完成地前提是Peter能夠按時交付他的模組,而這不是你能控制的。你能承諾的只有跟Peter一起坐下來,討論一下對接的方案,然後每天互相彙報一次各自的開發進度。
專業的程式設計師還懂得及時彙報風險。有些事情確實很難預測,這時候你就要去調整別人對你的預期,儘早向你的承諾物件發出預警,跟他溝通有沒有更好的解決方案。Peter就經常幹這種事,每當工作被堵塞時,他會主動地跟專案經理說,“Bob,幫忙看個問題”,“Bob,感覺週三之前完成有很大風險啊…”
不在狀態不好的時候寫程式碼
剛和老婆吵了一架,然後回去公司,心煩意亂地寫程式碼?
通宵定位問題,然後在疲憊不堪時打算修改程式碼解決這個Bug?
專業人士不會這麼做,他們知道,在狀態不好的時候寫程式碼,只會寫出一堆Bug。
善於對付中斷
程式設計時總免不了被同事打斷,一個突如其來的電話會議,右下角突然冒出來的聊天資訊,還有Peter突然從背後過來的擁抱…
面對“打斷”,專業的程式設計師懂得說,“稍等一下…”,然後他們會在記下當前工作的上下文資訊,讓自己重新回到工作時,能儘快進入狀態。
當然,如果你在跟別人結對程式設計,或者你用了TDD,那麼儲存上下文資訊就變得非常簡單。
重視單元測試
專業的程式設計師知道單元測試的重要性,他們會把測試程式碼和產品程式碼看的一樣重要,他們還會使用TDD。
關於單元測試的重要性和TDD,我在之前的文章中有介紹過,歡迎閱讀:如何說服你的同事使用TDD
管理時間
專業的程式設計師對待會議的三項原則:
- 拒絕那些與自己無關的會議;
- 如果進入會議後發現自己沒必要參加,那麼安靜的離席;
- 尊重對方的時間。只召集那些必要的同事參加會議,並且會在會議前整理好會議的主題和議程。
管理精力
專業的程式設計師能夠讓自己精力充沛地投入到工作中。
他們知道保持充足的睡眠,知道通過一些體力活動,來放鬆自己的大腦。
管理壓力
專業的程式設計師會儘量避免壓力,他們謹慎承諾,不答應做不到的事情;他們保持程式碼的整潔,方便問題定位和重構程式碼;他們堅持著自己的編碼原則,對自己交付的功能有很大信心,就算有Bug,也能很快定位處理。
而當壓力來臨時,專業的程式設計師不會驚慌失措,因為他們瞭解他們負責的程式碼的邏輯,如果有不懂的地方,他們會及時溝通,向他人求助。
不固執
專業的程式設計師不會在一條道上耗費太多時間,一旦發現這是個死衚衕或者泥潭,就會及時抽身,往回走。
程式設計之外的技術
專業的程式設計師不會是“離開了編輯器就渴死的魚”,他們具備計算機原理、TCP/IP協議這些計算機學科的基礎知識,他們對常用的Shell命令牢記於心,他們還善於使用各種工具的快捷鍵來提升他們的工作效率。
我的同事Peter就是這樣一個專業的程式設計師,作為一個前端工程師,他對網路方面的知識非常熟悉,VLAN、閘道器、掩碼、信任域等等,簡直就是一本網路百科全書,他操作起Linux命令列也是相當熟練,出現問題了,需要定位,他會說,“給我環境資訊,我上去看看”,然後就是各種查詢日誌、抓包分析,他敲鍵盤的速度也是賊快賊快,我想,這大概是我見過最完美、最酷炫、最專業的程式設計師了吧。
以上就是我總結出來的專業程式設計師的特質。你心目中專業的程式設計師還有哪些好的職業素養呢?歡迎在評論區裡和大家一起分享!讓我們一起做一隻既有技術,又有修養的程式猿!
參考
- 專業 – 百度百科
- 《程式設計師的職業修養》
- 《程式設計師的思維修煉》
- 《軟技能——程式碼之外的生存指南》
- 《程式碼整潔之道》
- 《重構》
相關文章
- Java程式設計師學習的6個技巧, 你get到了嗎?Java程式設計師
- @程式設計師,你的大廠實習卡到了程式設計師
- 你達標了嗎?2020年4月全國程式設計師工資新鮮程式設計師
- 羨慕程式設計師的高薪?你會讓你的孩子當程式設計師嗎?程式設計師高薪
- 程式設計師,你焦慮嗎?程式設計師
- 你需要程式設計師鼓勵師嗎?程式設計師
- 30歲的程式設計師,你慌了嗎?程式設計師
- Java程式設計師的工資標準是多少Java程式設計師
- 你見過背誦程式碼的程式設計師嗎?程式設計師
- UI設計必備的八項能力,你達標了嗎?UI
- 程式設計師適合創業嗎?程式設計師創業
- 雙十一到了,你的ERP準備好了嗎?
- 程式設計師想月薪過萬?這些面試準備你做好了嗎?程式設計師面試
- java春招面經:BAT對開發者需要什麼要求,這些標準你達到了嗎?JavaBAT
- ??想快速進入人工智慧領域的Java程式設計師?你準備好了嗎?人工智慧Java程式設計師
- Java程式設計師必須瞭解的7個效能指標,你都知道嗎?Java程式設計師指標
- 程式設計師,你真的會寫簡歷嗎?程式設計師
- Java程式設計師均薪高達19015元,你又拖後腿了嗎?Java程式設計師
- 如何成為真正專業的程式設計師程式設計師
- 情人節到了,適合程式設計師表白的情話【保你脫單】程式設計師
- 程式設計師的路好走嗎程式設計師
- 在網際網路行業Java程式設計師的工資標準是多少呢?行業Java程式設計師
- 程式設計師十大熱門flag,有你的嗎?程式設計師
- 一名好程式設計師到底需要什麼樣的標準?程式設計師
- 中國程式設計師真的過多了嗎?你還敢入行嗎?程式設計師
- 你專屬的程式設計師春節“大禮包”程式設計師
- 程式設計師必須走向專業化程式設計師
- 【1024程式設計師節】程式設計師,你學程式設計的初衷是什麼?程式設計師
- 漫畫:程式設計師,你能“管理”好你的產品經理嗎?程式設計師
- 敏捷大師:衡量程式設計師好不好的標準是程式碼越少越好 - Allen Holub敏捷程式設計師
- 高階程式設計師的程式碼質量應當達到什麼水準程式設計師
- 年終感想——財務自由的程式設計師,你見過嗎?程式設計師
- 程式設計師的第一步,你走對了嗎?程式設計師
- 大廠程式設計師的除錯技巧,偷學到了!程式設計師除錯
- 80%的前端程式設計師都遇到的問題,你中招了嗎?前端程式設計師
- 程式設計師是一個需要天賦的職業嗎?程式設計師
- 程式設計師,請你不要在坑程式設計師了?程式設計師
- 準備程式設計師面試?你需要了解這 14 種程式設計面試模式程式設計師面試模式
- 好程式設計師寫出來的程式碼,就叫好程式碼嗎?你錯了!程式設計師