新的一年開始了,你是一位想更上一層樓的程式設計師嗎?
以下是我養成的一些習慣,談不上最佳,但它不僅讓我成為一名優秀的程式設計師,而且還成為一名更優秀的專業人士。
第七個習慣:從堅實的基礎開始
剛開始程式設計時,我陷入了忽略基礎知識,然後直接跳到更有趣的東西(如框架和高階工具)的陷阱。我想立即構建酷炫的應用程式和漂亮的網站。
因此,我儘量跳過無聊的東西。
然而,在某個時候,我意識到了一件事。我可以複製貼上程式碼就能開始工作。但後來這些程式碼全都是亂七八糟的,雜亂無章,沒有任何最佳化,想擴充套件特別的費勁。
後來,我無法獨自解決任何級別的問題。最終,我被迫一次又一次地重新開始基礎知識的學習。
打好基礎的一種方法是在開始更大的專案之前先用簡單的問題挑戰自己;打好基礎的另外一個重要部分是在擴充套件之前深入學習一門程式語言。
第六個習慣:多思考,少寫程式碼

每當你想要構建某個產品時,可能會開啟程式碼編輯器並開始編寫程式碼。我們這樣做是為了快速看到切實的結果。
程式設計不僅僅是編寫程式碼。它還涉及到制定問題的解決方案,通常要受到一些限制。與任何複雜問題一樣,最佳解決方案來自於清晰、深思熟慮的思考。
以下是我最喜歡的一本書《程式設計師修煉之道》中的一段話:
為了成為一名務實的程式設計師,我們挑戰你在做事時思考自己在做什麼…切勿自動駕駛。要不斷思考,即時批評你的工作。
讓我成為更優秀問題解決者的一個方法,是在編寫實際程式碼之前先編寫虛擬碼。例如,在設計複雜演算法時,我會用簡單的英語勾勒出一個粗略的邏輯計劃。
第五個習慣:從官方文件中學習

官方文件是你所學習的語言或工具的作者們編寫的使用者手冊。教程往往側重於特定用例,而文件則向你展示技術的全部功能,包括你可能不知道的功能。
例如,當我第一次學習 Python 時,我嚴重依賴教程來了解基礎知識。但是當我開始使用 pandas 等庫時,我發現自己需要的不僅僅是示例。pandas 文件成了我的生命線。
第四個習慣:編寫乾淨的程式碼
在程式設計社群中流傳著一個笑話:如果你的程式可以跑起來,就別碰它。不過,這只是個笑話。
當我開始程式設計時,我嘗試過競技程式設計。雖然我很喜歡它,但我也從中養成了許多壞習慣。在大多數情況下,讓程式執行起來才是最重要的。如果程式碼執行沒有錯誤,我就認為它是成功的,即使它是一堆亂七八糟的變數和魔法數字。但當我開始從事更多現實世界的專案時,我意識到乾淨的程式碼有多麼重要。
整潔的程式碼可讓你的程式更易於閱讀、調試和維護。有許多最佳實踐、原則和慣例都與此有關。例如,變數和函式的描述性名稱、良好的文件、一致的編碼風格等等。讓我們看一個醜陋程式碼的示例。
defpro(s, x):
i = 0
for k in range(len(s)):
i += s[k] * x[k]
return i
它是可以工作的。但是你能從中得到什麼嗎?可能不能。現在看看更簡潔的版本:
defcalculate_dot_product(vector_a, vector_b):
dot_product = 0
for index in range(len(vector_a)):
dot_product += vector_a[index] * vector_b[index]
return dot_product
這個程式碼版本更有意義。這就是編寫乾淨的程式碼如何徹底改變你的專案。
第三個習慣:培養強大的除錯技能

無論你作為程式設計師積累了多少經驗,除錯都是不可避免的一部分。
我花了無數個小時來追蹤那些似乎隱藏在顯而易見的地方的隱蔽錯誤。一開始,除錯讓人感到沮喪。隨著時間的推移,我學會了有策略地處理它。
除錯的第一步是放慢速度並仔細觀察。我過去常常匆忙地編寫程式碼,盲目地更改程式碼行,希望某些程式碼能起作用。但很少奏效。相反,從提問開始。程式應該做什麼?它在做什麼?行為在哪裡出現分歧?
有幾種工具和技術可以使除錯不那麼令人生畏。print()宣告通常是第一道防線。另一種有用的技術是橡皮鴨除錯,你可以一步一步地向無生命的物體或人解釋你的程式碼。通常,只需大聲說出問題就可以找到解決方案。我曾經透過向自己解釋就解決了錯誤。
第二個習慣:與其他程式設計師建立聯絡
剛開始程式設計時,我以為這是一次獨自的旅程。雖然程式設計通常需要一個人專注,但我成長最多的時刻來自與其他程式設計師的交流。
我加入了許多程式設計群組、Discord 伺服器以及線下社群。當我遇到問題時,我可以尋求幫助。在空閒時間,我也會嘗試為社群做出貢獻,這樣初學者就可以像我以前一樣得到幫助。
我曾經透過人脈關係找到了一份程式設計工作。這是我參與過的最大專案之一,在這個過程中我學到了很多東西。我還透過參加駭客馬拉松結識了優秀的程式設計師,並從他們身上學到了新的東西和策略。
第一個習慣:構建一些可以解決實際問題的東西

作者:聆聽世界的羊
相關閱讀: