論軟體工程師常見的「路徑依賴」問題(上)

2024/05/21:重新編輯全文,增加了一些新的觀點與例子。

相關文章:別依賴「試誤法」寫程式

我常常覺得,軟體工程師可能是最能體現「當你手裡只有鎚子,看什麼都會像釘子」的一群人😂

我們在工作中,有時會陷入一種被稱為「路徑依賴」的困境。

本文將探討「路徑依賴」在軟體工程師的工作與職涯發展中,所造成的各種影響,以及「受困者」會有的具體表現。

或許會讓你感到有點熟悉。


前言:何謂路徑依賴?

路徑依賴」是個社會科學的概念,用來描述一種現象,即一旦人們在某一方面選擇了特定的路徑或方式,他們就可能變得過度依賴這條路徑,並且可能難以改變。

這種依賴性可能源於各種因素,包括習慣、成本、學習曲線等,並可能在多個層面上產生影響,包括個人的行為、團隊的運作,甚至是整個社會的結構和制度。

在這裡,我們將專注於討論「軟體工程師常見的路徑依賴」。

以下的內容主要是基於我個人在工作上的觀察,可能帶有一點偏見,所以閱讀時請保持批判性思考。

確保 isort 正確排序本地模組:pyproject.toml 與 pre-commit 設定

isort 是一個 Python 套件兼命令列工具,可以幫開發者自動排序 Python imports,以符合 PEP 8 規範。這種排序也可以讓程式碼更加易讀且易於維護。

之前已有數篇文章介紹過,可參考本站的「isort 標籤頁」。

isort 會自動將 import 分為「Python 標準函式庫」、「第三方套件」、「本地模組」等三大區塊,並依字母順序排列,同時為你在三個區塊之間空一行

isort 本地模組排序錯誤

isort 有一個 bug(我也不確定是不是 bug),就是對於本地模組的「排序判斷」,有可能發生錯誤。

這會造成什麼結果?通常的影響是,本來應該排在第三區塊的 import,排到第二區塊去了。總之就是 import 放錯了區塊。

這樣除了不符合 PEP 8 規範,更重要的是,它還可能對開發者造成「誤導」。而且會使用 isort 的人,往往就是在乎 import 排序的人,當然不能接受這樣的錯誤。

AI 時代的生存指南(一)我對 AI 工具的投入與觀望

相信大家在 2023 的上半年都被 AI 相關資訊狂轟濫炸到有點厭世了。

從去年 11 月底 ChatGPT 發布以來,我們都知道,這個世界發生了天翻地覆的改變。

有人因此賺到快錢,有人想法得到了實現,而更多人如你我,則是在這波浪潮的後方,苦苦追趕,擔心跟不上時代,或失去了自身價值。

藉著大眾對於 AI 資訊的焦慮與渴求,線上知識平台紛紛推出了相關課程。有些你我從未聽聞的人,也說要開課教你學 AI。甚至連 3C 產品評測網站、信用卡優惠資訊部落格等等,也開始發表 AI 工具介紹文章。

此時此刻,AI 就是風口,就是流量密碼。

資訊焦慮」一詞並非 ChatGPT 時代所獨有,早在此前就已存在。但隨著 GPT 時代的到來,焦慮感無疑加劇了,因為我們面對的資訊量比以往更加龐大、更加複雜。

太辛苦了。

Python 開發:pre-commit 設定 Git Hooks 教學

from Pixabay

相關文章:Python 開發:Ruff Linter、Formatter 介紹 + 設定教學


有關 Python「Code Formatting」(Linter、Formatter 等)這一主題的文章,之前已寫了不少:

  1. VS Code 設定 Python Linter、Formatter 教學
  2. Python isort 擴充套件介紹與簡易設定教學
  3. Python Flake8 與 Black Formatter 擴充套件快速上手

這些文章都是我在工作中,實際使用這些工具的心得。

不過,為什麼要寫這麼多?還是那句老話:「我認為這些工具的重要性,再怎麼強調也不為過——更別說它們常常被低估了。

我曾在上述文章中的開頭或結尾處,不厭其煩地表達自己對它們的重視,這裡就不再贅述,直接進入重點。

本文主旨

本文將講述如何透過 pre-commit 這個工具設定 Git Hooks,並以 Flake8、isort、yapf 等 Python 開發常用套件為例,進行演示,同時提醒一些注意事項。

如同 Poetry,pre-commit 也是我在工作上,強烈希望導入的工具——畢竟它可以有效降低 code review 時血壓升高的次數☺️

我的「價值觀層級」器物清單

小米 13 的兩大關鍵亮點,與那些「價值觀層級」的器物們〉點出了所謂「價值觀層級」的「器物」,這期就來補完這個部分。

當然,無論是定義還是清單都是非常個人化的產物,僅供參考。


何謂「價值觀層級」?

我們或許可以把喜愛或討厭特定人事物的程度,大致區分為「偏好」與「價值觀」。

兩者在好惡上,肯定具有「」的差異,但顯然不止如此而己。

如果要再加上一個根本的區別,那或許是「難以忍受」——那些你難以忍受它不存在、存在的人事物,可能就稱得上價值觀層級的事物。而其餘的,就只能說是偏好。

比如,我就完全不能忍受,命令列(CLI,Command-Line Interface)的背景是白色的!淺色的可以,但白色就不行。

或更常見的「香菜之爭」,要說它對部分人而言,屬於價值觀層級的事物,或許也不為過。

是時候同步你的 dotfiles 了——我選擇 yadm

from Pixabay

本文主要寫給軟體工程師,尤其是後端。

不過,這並不是一篇 yadm 操作教學,而是我在選擇 dotfiles 同步方案時,所做的功課與思路整理,其中的考量大概有下:

  1. 靠自己簡單實作就好,還是要透過工具?
  2. 如果要用工具,工具這麼多,該如何選擇
  3. 工具之間有什麼本質的差別嗎?(其實就是下述流派上的差別)

場景與需求

如〈Linux 上的 Python 開發環境設定〉所言,因為新 VM 的建立,我又得重設一次開發環境,而重設開發環境往往是一個耗時且繁瑣的過程。

在這個過程中,需要重新建立一些設定檔,例如.bashrc.zshrc。這些設定檔通常包含了工具設定、命令別名、環境變數等大量內容,因此特別惱人。

此外,即使不是重建環境,平時要在不同 VM 包括本機電腦間「手動同步」這些檔案,也是一件讓人很想逃避的事。

.zshrc為例,如果它很少變動,那可能還好。但很不幸的,我又是一個很愛為命令列工具建立 alias(別名)的人,光憑這點,就使我不時會修改.zshrc

付費一個月後,我還是退訂了 Notion AI

相關文章:AI 讓寫作變輕鬆了?我可不這麼認為

前陣子 Notion AI 剛公布時,我並沒有在第一時間就申請試用。仔細想想,可能作為一個文字創作者,我還是「本能地」不太願意讓 AI 來干涉這塊「最後的淨土」

這與「我對 AI 輔助寫 code 的態度」,有著很大的差別。

但在看到一些人開始分享 Notion AI 使用心得,無論基於興奮還是焦慮,我還是不得不加入了排隊清單。結果排到我以後才沒過多久,Notion 就宣告測試結束,要開始全面收費了!

然而,到底要不要付這每月 10 美元?我掙扎了許久,從我臉書上的多次發文,就能看出其中的反覆與猶豫。

接下來就帶各位回顧,我對 Notion AI 的態度,是如何以「起、承、轉、合」四個階段持續演進——可謂從期待到放棄