優秀的程式設計師都有的十條特徵,你中了幾條?

陈哥聊测试發表於2024-07-11

之前的文章給大家分享的都是 DevOps、自動化測試、新技術趨勢等前沿知識和技術,實際上目前能完全掌握這些新技術的開發、測試人員都是少數,畢竟大多是人還是專注於自身工作,用於提升、學習新技術的時間較少,而很多新趨勢也並未成熟應用到行業。因此,不必為此焦慮,極速變化中總有一些不變,堅守那些基礎的不變的能力,並以積極的心態擁抱變化,才是持續而穩定的成長路徑。本期分享一些不依賴於新技術、但作為程式設計師都可遵循的原則,請根據自身情況取捨、實施。

一、及時更新任務清單

當要實現一個功能點時,最好將較大的任務分割成較小且更清晰的任務,這些任務是相對獨立的邏輯單元,可以單獨進行測試。列一張這樣可完成的較小任務的清單,並在完成之後勾選、更新。這樣會形成自我激勵,並促使自己去不斷完成更多的小任務。
優秀程式設計師-1

目前主流專案管理軟體中,往往內建任務分解和更新功能。如在禪道專案管理軟體內,開發負責人進行系統分析,拆解成相對獨立的任務並指派給個人,而開發人員可以在自己的頁面清晰地看到任務數量及剩餘工時,完成後進度將同步更新,這種持續的正向反饋會帶來極大的成就感。

二、遵循適當的版本控制

透過建立開發、特性、主分支和設定適當的訪問許可權來遵循適當的版本控制策略。無論何時開始編碼,都要確保先獲取程式碼庫的最新版本後再開始。在邏輯部分或功能完成後繼續提交/推送程式碼,不要讓程式碼庫長時間處於未提交狀態。在將程式碼提交給版本控制之前,始終在本地機器上測試程式碼。無論變更多麼細微,在輸入程式碼時都要檢查修改檔案的差異,這將幫助追溯意料之外的變更,並有效避免不必要的 Bug。

三、持續重構

程式碼重構是在不改變原始碼的功能行為的情況下改變原始碼的過程,目的是透過提高程式碼的可擴充套件性、降低程式碼的複雜度,以此來提高程式碼的可讀性和可維護性。未能執行重構可能會導致技術債務的累積,開發人員會在之後的時間裡對這些技術債務付出代價。要知道,沒有任何一個開發人員願意處於這種境況中,他們常常拒絕接觸已經工作了很長時間的程式碼。當需要增強現有特性時,問題就出現了。

如果程式碼的形式不適合進行簡易擴充套件,那麼它將是開發人員的地獄。因此,為了避免出現這種情況,需要始終在程式碼中尋找可以改進的地方。如果你自己做不到,那就向團隊尋求幫助。

四、敲程式碼前先手寫程式碼

優秀程式設計師-2

在實際將解決方案轉換為程式碼之前,要養成手寫演算法/虛擬碼的習慣。手寫還可以幫助你在將程式碼移至計算機之前規劃程式碼。寫出需要的函式和類、以及它們如何互動,可以在之後節省大量時間。儘管要比直接敲程式碼更耗時間,但這種規範會讓你打下牢固的基礎,實現之後更穩健的成長。

五、給自己的程式碼進行註釋

在自己寫的程式碼中留下注釋,解釋為什麼要做出某些選擇。這將幫助到之後拿到這段程式碼的人,因為不是每個人都清楚你為什麼以這種特定的方式編寫程式碼。不需要對非常明顯的編碼行為進行註釋,因為這無關緊要。正確的程式碼註釋將提高程式碼庫的可維護性。

六、善用搜尋引擎和論壇

優秀程式設計師-3

並不是你遇到的所有問題都能自己找出明顯的解決方案。所以記得善用搜尋引擎,可能會有數百萬的開發人員遇到過與您相同的問題,並且已經找到解決方案。所以,不要花過多時間獨自尋求解決方案。很多開發人員低估了搜尋作為程式設計師工作中一部分的重要性。

搜尋引擎方面 Google 是不錯的選擇,論壇則推薦 Stack Overflow。有時候工作需要的更多是知道如何獲取知識和解決方案,而非實際程式設計。

七、尋求他人幫助

程式設計實際上是一種社交活動。我的程式設計師朋友都會在某些方面有突出優勢,所以每當我有問題的時候,都知道該請教其中的哪一個。當他們有問題的時候,我也會幫助他們。這真的是完成任務的絕佳方法。

互相合作可以遵循敏捷開發的結對程式設計:兩個程式設計師在一個計算機上共同工作。一個人輸入程式碼,而另一個人審查他輸入的每一行程式碼。二人經常互換角色,工作交替進行。在結對程式設計中,審查的角色需同時考慮工作的戰略性方向,提出改進的意見或找出將來可能出現的問題以便處理。

雖然不能有完全的人力成本全面推行結對程式設計,但尋求他人建議時,看似無法改變的錯誤或無法學習的話題,可以透過新思維或對這個話題的新的解釋來迅速緩解。所以不要在筒倉裡程式設計,要經常討論並推進。當你重新開始自己編寫程式碼時,接觸到多種想法和思維方式將有助於你解決問題。

八、記住技術永遠在變化

我將自己的身份首先視為程式設計師,第二身份才是程式語言專家,因為總有一天我們現在使用的所有程式語言將不再被使用。比如我從 80 年代開始使用的某些形式的程式集程式碼,這些程式碼現在大部分都已經不存在了。這將發生在任何技術上,無論其自身好壞。總會有一天,沒有人會再使用 Java。

而另一方面,程式語言有一個廣泛的範例,存在著相似的族譜。所以,如果你知道一種和另一種語言相似的語言,那麼學會這種語言就很容易。

例如,Python 和 Ruby 幾乎是同一種程式語言。二者雖在文化上存在著巨大的差異,但除此之外,它們幾乎完全相同,所以當你知道另一個的時候學習一個是非常容易的。因此,不要將自己與任何技術或程式語言繫結在一起,而只將它們視為幫助自己解決手頭問題的工具。

九、正視並接受 Bug 的存在

程式設計師經常看到在自己開發的功能中報告了很多 Bug,這意味著大多數時候,任務是失敗的。但如果我們所有的程式都是功能完整的,並且沒有任何 Bug,那麼程式設計就完全不成其為程式設計了。事實上,我們正處於程式設計過程中,這意味著我們要麼還缺乏很多功能,要麼軟體有 Bug。所以,在某些方面,你作為一個程式設計師總是失敗的,因為總是存在 Bug。這可能很奇怪,但你確實需要對不完美和不工作的事情保持良好的心態,因為這正是我們的工作。

程式設計是一個長期的過程,在這個過程中,您將一直面臨新的障礙。養成記錄錯誤的習慣,這樣你以後就不會犯同樣的錯誤了,這表明你作為一個開發人員在不斷地學習和提升自己。

十、讓重複性任務自動化

經常會有一些任務是需要重複做的。例如執行一組命令或執行某些活動,這些活動涉及在多個應用程式和螢幕之間切換,這會佔用您的大部分時間。建議將這些耗時的日常活動轉換為透過指令碼或簡單程式(可以透過單擊或命令執行)以某種方式自動化。如針對重複的單元、介面等重複的測試執行,可以進行自動化測試。這將節省你的時間,讓你可以專注於更有意義的任務,而不必擔心日常繁瑣的任務。

做好以上十點,相信你能夠從合格的程式設計師,變為優秀的程式設計師,那麼對於新技術和新知識的擁抱,就是一件水到渠成的事。“你的職責是平整土地,而非焦慮時光。你做三四月的事,在八九月自有答案。”

* 參考文章:Nitish Deshpande,10Tips to Become a Software Engineer,2020.

相關文章