專業程式設計師的標準,你達到了嗎?

2021-08-13 11:30:11 字數 3775 閱讀 7894

「專業」,在百科裡有下面這三種解釋:

標題中的「專業」,指的是第三種解釋。請注意這個詞——「有知識修養」,有知識還不夠,還要有修養

職場裡各行各業,唯有「專業人士」,才能夠受人尊重;人們尋找幫助時,首先想到的也是對應領域裡的「專業人士」。我們說乙個醫生很專業,除了他醫術精湛之外,還有他心繫患者、盡心盡責的醫德,同樣的,對於程式設計師,我們除了要有犀利的技術之外,還要有對應的職業修養

面對同樣一件事情,業餘程式設計師(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。

專業的程式設計師對待會議的三項原則:

專業的程式設計師能夠讓自己精力充沛地投入到工作中

他們知道保持充足的睡眠,知道通過一些體力活動,來放鬆自己的大腦。

專業的程式設計師會盡量避免壓力,他們謹慎承諾,不答應做不到的事情;他們保持**的整潔,方便問題定位和重構**;他們堅持著自己的編碼原則,對自己交付的功能有很大信心,就算有bug,也能很快定位處理。

而當壓力來臨時,專業的程式設計師不會驚慌失措,因為他們了解他們負責的**的邏輯,如果有不懂的地方,他們會及時溝通,向他人求助。

專業的程式設計師不會在一條道上耗費太多時間,一旦發現這是個死胡同或者泥潭,就會及時抽身,往回走。

專業的程式設計師不會是「離開了編輯器就渴死的魚」,他們具備計算機原理、tcp/ip協議這些計算機學科的基礎知識,他們對常用的shell命令牢記於心,他們還善於使用各種工具的快捷鍵來提公升他們的工作效率。

我的同事peter就是這樣乙個專業的程式設計師,作為乙個前端工程師,他對網路方面的知識非常熟悉,vlan、閘道器、掩碼、信任域等等,簡直就是一本網路百科全書,他操作起linux命令列也是相當熟練,出現問題了,需要定位,他會說,「給我環境資訊,我上去看看」,然後就是各種查詢日誌、抓包分析,他敲鍵盤的速度也是賊快賊快,我想,這大概是我見過最完美、最酷炫、最專業的程式設計師了吧。

《程式設計師的職業修養》

《程式設計師的思維修煉》

《軟技能——**之外的生存指南》

《**整潔之道》

《重構》

程式設計師常用的快捷鍵,你都用到了嗎

windows m 最小化所有視窗 windows r 執行某個程式 開啟執行視窗 開啟執行對話方塊 windows e 快速開啟我的電腦 windows l 電腦鎖屏 windows d 顯示 恢復桌面 windows shift m 還原最小化的視窗 windows u 開啟公共程式管理器 sh...

程式設計師你12點前睡覺了嗎?

最近發現很多同事,在上班時有些打瞌睡,中午也在眯一會兒,當然我不是周扒皮,但是總的感覺來說,想提醒他們一下,平時還是需要注意一些的,雖然大家沒有表面上說你什麼,但是大家都看在眼裡,誰在好好工作,誰在打瞌睡,其實每個人心裡都有一桿秤的,只是我們都比較含蓄,有些話只能放在心裡永遠都不能說出來而已。我也是...

程式設計師的奮鬥史(二) 今天你跑步了嗎

突然之間有種想跑步的衝動,於是我開始了我的旅程。我是那種想做什麼,只要覺得是有意義的事情,就會立馬去做的人。這也算是自己的乙個特點吧。每當我在跑道上奔跑,我常常在反省很多事情。比如今天 做得不對,明天的我應該以怎樣的姿態生活,可以怎樣做才做得更好,這個程式應該怎樣編寫更合理,那個程式又是 出錯,未來...