當前位置: 妍妍網 > 碼農

身為軟體工程師,你永遠不應該做的十件事情

2024-06-06碼農

我從事軟體工程師的工作已經5年了。雖然這並不意味著我是專家,但我犯過了許多錯誤,可以拿出來與大家分享。在本文中,我將說明身為軟體工程師,我們永遠不應該做的十件事情。

原文連結:https://favtutor.com/articles/donts-for-software-engineer/

作者 | Hoon Wee 責編 | 夏萌

譯者 | 彎月

出品 | CSDN(ID:CSDNnews)

完美主義

世間萬物皆不完美,我相信這個世界上也沒有所謂「完美的程式碼」。

軟體開發是一個叠代過程。編寫程式碼,測試程式碼,獲取反饋,然後再重構,如此反復。今天能執行的程式碼到了明天可 能就不行了。因此,軟體應該具備一定的靈活性,且易於修改(這也是它被稱為「軟體」的原因)。

我並不是說你應該放棄追求完美。我只是說你應該意識到,不應編寫過於死板,過於復雜的程式碼。

專業和完美主義是兩回事,我們只能選擇大多數時候的最優解。

請給我一些時間重構程式碼

重構程式碼指的是在不改變程式碼外部行為的情況下重新組織現有電腦程式碼的過程。從不重構的程式碼會逐漸變得難以理解,無法被其他開發人員使用。

開發人員都知道,我們編寫的程式碼在實作功能後,應該經常進行重構。然而問題在於,非技術成員不關心這些細節。他們經常說:「我們是一家快速發展的公司,所以我希望你更加專註於添加功能。」然而,很快程式碼就變得難以維護,於是你不得不懇求他們:「請給我一些時間重構程式碼!」

不要乞求額外的時間來重構程式碼,重構本來就應該作為功能實作的一部份。

錯誤理解「遺留程式碼」的含義

Web開發生態系瞬息萬變。我記得,之前的一個Web計畫使用的是Next.js第10版。在那個計畫開發期間,Next.js釋出了第11版,並帶來了新功能和改進。突然間,我們的第10版感覺就成了一個遺留計畫。

許多人對「遺留程式碼」的含義都有一定的誤解,以為「遺留程式碼」就意味著「舊程式碼」,但事實並非如此。【有效處理遺留程式碼】的作者Michael Feathers曾說過,遺留程式碼是沒有寫測試的程式碼。無法測試的程式碼無法進行重構。無法重構的程式碼就無法維護。

我們的Next.js「舊」計畫實際上擁有相當不錯的測試覆蓋率,一切執行良好。這些是「維護良好的程式碼」,而不是「遺留程式碼」。請不要一味追逐新穎的工具而浪費時間。不要忘記,Github至今仍執行在已有17年歷史的Ruby on Rails上。

函數語言程式設計是最好的

函數語言程式設計非常新穎,很多年輕人都在嘗試。但這並不意味著任何地方都應該使用函數語言程式設計。

舉個例子,如果你有一個Flutter計畫,那麽在UI層使用函數語言程式設計可不是一個好主意。由於不必要的重新渲染,UI層使用過多的「純函式」程式碼會引發效能問題,Flutter是物件導向編程,因此你應該按照這種方式使用它。

這並不意味著你應該完全避免函數語言程式設計。在上面這個例子中,業務邏輯層使用函數語言程式設計應該更合適。你只需要根據實際情況,選擇合適的工具。

盲目遵循「最佳實踐」

軟體開發的最佳實踐有很多,例如整潔的架構、SOLID原則、DRY、KISS、YAGNI、TDD、BDD、CI/CD等等。提出這些最佳實踐的意圖都是好的,但你不應該盲目遵從。

舉個例子,測試驅動開發(TDD)是確保程式碼按預期工作的好方法。但如果你使用的是Clojure或Python之類支持互動式編程環境(REPL)的語言,那麽可能不需要一切都采用TDD。

TDD的唯一目的是盡快獲取反饋。如果你能在不寫測試的情況下獲取反饋,那麽就不需要TDD(但測試還是應該寫)。

獨自掙紮

我見過許多熱衷於展示「解決問題的能力」的初級開發人員。他們經常在其他人已經解決的問題上苦苦掙紮。請不要成為這類人。不要重新發明輪子。

偉人往往站在巨人的肩膀上。

在團隊中工作時,你可以向經驗更豐富的隊友學習。他們就是你的「巨人」。跳上他們的肩膀,不要浪費時間再跳回地面。你的目標是瞄準更高的巨人。

在沒有自我意識的情況下進入「心流」狀態

你有沒有體驗過「心流」?這是一種完全沈浸在工作中的心理狀態,你會感覺精力充沛,十分專註。作為程式設計師,進入「心流」狀態後,感覺像程式碼會自己寫出來,而你只是一個媒介。你完全進入了狀態。

不過一定要小心,你可能會寫「太多」程式碼。我發現自己在「心流」中往往會過度設計。並非只有我會這樣,【程式碼整潔之道】的作者Robert C. Martin也曾在心流中經歷過反生產力。

為了有意打斷心流,我推薦使用「番茄工作法」。這是一種時間管理方法,每工作25分鐘,休息5分鐘。這種方法有助於你保持專註,避免倦怠。

忘記活動身體

軟體工程師的工作並不輕松。我們常常在電腦面前一坐就是幾個小時,不停地敲鍵盤,盯著螢幕。進入「心流」狀態後更加容易忘記自己的健康。但請記住,健康最重要。沒有健康的身體,大腦再聰明也無用武之地。

你應該註意每工作30分鐘(如果采用番茄工作法,則為每25分鐘),活動一下身體。站起來,伸伸懶腰,四處走走,喝點水。這有助於你保持專註,避免倦怠。

忘記編程的樂趣

第一次嘗試編程時,我感到異常興奮。每天我都會寫程式碼,解決問題,學習新事物。

但隨著時間的推移,我逐漸忘記了編程的樂趣。我太執著於編寫「整潔的程式碼」,遵循「最佳實踐」,解決「難題」。更多時候,我無法真正編寫自己的程式碼,因為我疲於遵循他人和公司的程式碼。我的創造力去了哪裏?

你應該時刻牢記編程的樂趣。我知道這很難,但你應該盡量找時間做自己的計畫,學習新知識。在工作時間裏,嘗試與隊友交流一些令人興奮的新技術,即便手頭的計畫中用不到。這有助於保持動力,並激發靈感。

變成「碼農」,而 不是軟體工程師

「碼農」和軟體工程師是有區別的。「碼農」只會埋頭寫程式碼,而軟體工程師則是利用程式碼解決問題。以下兩個理由告訴你千萬不要變成「碼農」:

  • 所謂的「碼農」將來會被AI取代(實際上正在被取代中)。我知道這個說法富有爭議,但很遺憾這是事實。

  • 人們不關心你的程式碼,他們關心的是你如何解決他們的問題。

  • 將程式碼作為工具,成為「解決問題的人」。理解問題,找到最佳解決方案,並利用程式碼實作。這才是軟體工程師的本職工作。

    總結

    以上是我個人認為身為軟體工程師永遠不應該做的10件事情。當然,這些看法均源自我個人的經驗,希望能對您有所幫助。

    推薦閱讀: