程式設計師程式設計的10個實用技巧

Bugtags發表於2016-02-22


1.橡皮鴨除錯法

不知道各位有沒有這樣的經歷,當你正在給別人描述問題的時候,突然靈機一動想到了解決方案?這種情況的產生是有科學依據的。高談闊論能讓我們的大腦重新有條理地組織問題。在這種情況下,你的聊天物件就是“橡皮鴨”。團隊中的每個人都應該積極主動樂意地成為彼此的“橡皮鴨”。有時候,如果你幸運的話,你的“橡皮鴨”搞不好還能給出有效的建議呢。

2.快速資訊反饋

一旦寫好程式碼就要儘快得到反饋。當你和我們在HubSpot一樣,收到大量的Pull請求,不妨做些細微的改動,然後立馬開啟PR,討論設計和程式碼。和你的“橡皮鴨”交流一下,請他們提點建議。要知道,迭代原型可遠比糾正成品要節約成本。

有的團隊結構,最初可能並不要求寫程式碼。因為實體模型、白板設計等等,這些成本都比一下子刪改上千行程式碼的成本要低。

3.首先搞定端至端

當我們在解決問題和完成功能時,很容易深入到細節問題的研究。這裡有一個好方法,能讓我們儘快搞定端至端。

例如,假設我需要在網頁上設定一個功能,能在使用者點選之後做一些複雜運算並把結果儲存到伺服器中。有些童鞋可能想著想著就先去研究這個運算方式了。我的做法是,先為使用者的操作設定事件處理程式,用一些固定的值來模擬計算,然後呼叫API向伺服器請求資料。這樣一來,我們就沒必要先考慮每一個具體細節,可以直接端至端地測試系統。同時,這個快速的反饋迴路有助於我們更快地迭代和寫程式碼。一開始出來的設計可能並不完美,但是通過親眼目睹各個部件是如何組合的,我們將會對整個系統有一個更清晰的瞭解,做出最優的設計。

在HubSpot,在產品還沒完成之前,我們就先將功能推出去了,這樣我們就可以及時進行內部測試。這是對此端至端概念更進一步的深化。

4.適時離開電腦

有時候在除錯時,console.logging無處不在,最好的方法就是測試程式碼。也有的時候,你絞盡腦汁嘔心瀝血地想要解決一些複雜的設計和問題而不得其法,那麼你最好先暫時離開一會。雖然這聽上去有點不可思議,但是有的時候,我的確是在廁所想到了問題的癥結所在。我的愛人,她也是一枚軟體工程師,曾告訴我,當她睡著的時候常常會有各種奇思妙想(有時閉上眼睛天馬行空,有時夢裡各種方案紛至沓來)。打個盹、散散步、上個廁所……都可以,總之適時離開電腦。

5.自動化

高效的開發人員會將很多繁瑣的程式自動化。不過一直以來很多人都認為自動化只能節約時間,這是一個很普遍的誤解。其實不僅如此,自動化最大的優點是讓你的思想策馬奔騰無所阻礙,朝著完成目標的方向奮勇前行。

舉個例子,假設我需要經常執行一個相當複雜SQL查詢,而過程真心很長,每次又都要重新輸入一遍。我當然不會傻乎乎的這麼做,我會使用類似於Alfred的程式儲存於剪貼簿中,或者自己想個辦法節約一些步驟。於我而言,自動化是一種更為積極的工作態度。

6.自己動手,“豐衣足食”

當我們在設計新程式碼時,都希望自己能寫出完美的程式碼,發現每一個抽象概念。但是當我們致力於設計新程式碼時,抽象概念卻又成為了干擾因素,即便這些抽象再怎麼顯而易見、易於設計。我的做法是,不要立刻思考各種抽象概念,先簡單機械地複製一些程式碼作為原型。這能讓我迅速上手新專案,效果比我僅僅只是紙上談兵要好,之後所能做的抽象發散也更廣闊。不過,可不要光復制,還要清理程式碼,不然它們很快就會變成一筆爛攤子。

7.運動很重要

寫程式碼其實並不能燃燒很多卡洛里,因此我們必須強迫自己動起來。可以不時地伸伸懶腰,經常性地走來走去。在HubSpot,我們有一個俱樂部,我每週會有三天在午飯前去健身。此外,我的習慣是每隔一小時左右做幾個俯臥撐,拉伸肌肉,保持活力。

因為久坐我以前經常肩膀疼背疼,但是自從立式桌的出現,這些都成為了歷史。如果你也有這方面的煩惱,不妨試一下這個方法,起效快、效果好。HubSpot為我們提供的電動辦公桌可以在立式和坐式之間轉換。當然如果放在家裡,1000美元這樣一頂桌子可能太奢侈了,所以我就在網上買了個二手的,只要40美元。

8.閱讀前文

閱讀別人的文件、技術文章和程式碼常常讓我抓狂。為了不氣得抓耳撓腮、捶胸頓足,不妨先閱讀前文,以期更多的細節內容。程式中的概念很難用線性方式表達出來。閱讀前文能讓我們更清楚文章內容和程式碼在說什麼。

9.一絲不苟做筆記

有些組織化程度較低的開發人員可能會對這個技巧嗤之以鼻。知道我是怎麼做的嗎?我會將每一天我做了什麼、遇到的問題以及我是如何解決這些問題的等等,都詳細地記錄下來。然後當我再次碰到類似的問題時,那就再也不會只能“執手相看淚眼,竟無語凝噎”了。這些筆記成為了我無價的財富,因為我可以運用之前的經驗和智慧來解決現在的問題。而且要是碰到1對1績效考核時,我也能迅速想起自己為公司所做的貢獻和自己的成就。

10.給第二天做個計劃

要麼是下班回家之前,要麼是晚上睡覺前,我都會在筆記本中為第二天列個待辦事項列表。這樣,當這一天來臨的時候,我的目標就很明確,知道自己要做什麼,專心致志,聚精會神,朝著目標前進。知道嗎,這種方法讓我完成任務的速度更快質量更高,這樣我就有更多的時間休息了。


英文原文:10 Practical Tips for Software Engineers


翻譯作者:碼農網 – 小峰
來自:碼農網
評論(1)

相關文章