《人生 4 千個禮拜》筆記(一)病態的生產力

人生 4 千個禮拜

2024/06/21:推薦 Cal Newport 的 Deep Questions 第 255 期:The Failure of Cybernetic Productivity。本期討論為什麼用工具提升生產力終將失敗。

這是《人生 4 千個禮拜》筆記的第 1 篇,你可以把它當作是一則重點整理,加上大量我個人的經驗與想法

我認為,如果你不是書中描寫的這類人——在某些方面、某種程度上對追求生產力有過一定追求的人。那看本書很可能只覺得它像是一連串的高級雞湯文

比如「接受人生有限」這樣的話,你可能早就聽過無數次,甚至已經麻木了。

然而,作者在書中把這類人在「生產力追求路上」所伴隨的種種「荒謬」與「弔詭」之處,精準地勾勒出來,令人拍案叫絕。

或許你不是這樣的人,沒關係,因為我(某種程度)是。

所以我會試著把這樣的努力與隨之而來的困境,盡可能展現出來,好比是種自嘲。就像〈使用 Notion 滿 3 年,為何我仍「不推薦」用它來管理你的人生?〉中的我。

Python 開發:Ruff Linter、Formatter 介紹 + 設定教學

from Pixabay

相關文章:Python 套件管理器 uv 介紹——與 Poetry 比較

2024/05/25:新增系列第二篇〈Python 專案從 Flake8、Black 遷移至 Ruff 指南〉;刪除「緣起」、「工作上我還未採用 Ruff 的理由」段落。

Ruff 從去年(2022)6 月正式開源起算,已過去一年半,知道此工具的開發者也愈來愈多。雖然在去年就聽過它,但我卻一直沒有任何行動。

隨著前陣子 v0.1.0 的發布(先別覺得這版本號怎麼乍看像早期測試版本🤣,前一版可是 v0.0.292),我感覺時機已到,所以進行了一番研究、嘗試,並寫下了本文。

本文目錄

  1. 本文主旨與目標讀者
  2. Why Ruff?
  3. 本文範例程式碼
  4. Ruff 介紹篇
  5. Linter 部分:取代 Flake8 與 isort 等等
  6. Formatter 部分:取代 Black
  7. 單、雙引號議題
  8. Ruff 設定篇
  9. 一、pyproject.toml 設定
  10. 二、VS Code 套件設定
  11. 三、pre-commit 設定
  12. Ruff 設定篇小結
  13. 結語:Time to Ruff

Docstring 的重要性——《Python 功力提升的樂趣》

Python 功力提升的樂趣

相關文章:寫好 Python Docstring 的 4 個層次——從簡單到詳細

這是《Python 功力提升的樂趣:寫出乾淨程式碼的最佳實務》閱讀筆記的第 3 篇,你可以把它當作是一則重點整理,加上我個人的開發經驗與心得。

本文整理書中的第 10、11 章,且篇幅幾乎集中在前者。無論什麼語言,「寫好函式」這件事總是如此重要,Python 自然也不例外。

系列:Python 功力提升的樂趣

  1. 使用 Black 格式化程式碼——《Python 功力提升的樂趣》
  2. 如何寫出 Pythonic 程式碼——《Python 功力提升的樂趣》
  3. Docstring 的重要性——《Python 功力提升的樂趣》
  4. 《Python 功力提升的樂趣》心得總結:掌握 Clean Code 基本功

第 10 章:寫出有效率的函式

有效率的函式(或說「好的」函式)需要你在「命名、規模大小(行數)、參數數量和複雜性」之間,做出許多決定和取捨

本章探討的正是這些取捨之間的利弊得失,以及編寫函式的重要原則。

不用說,這是關鍵的一章。

2023 那些我已不可或缺的「付費訂閱」推薦

by Sam Chivers

這篇要來講述,2023 年的當下,對我而言「具有一定重要性」的付費訂閱。

這屬於完全個人化的心得,我會列出那些不可或缺的訂閱項目,並解釋它們對我的重要性所在。

所謂的「不可或缺」,意思是一旦我停止訂閱,我的工作和生活都會出現挑戰。而挑戰的大小,就是這些訂閱項目對我的影響力與價值。

以下排名同時也是重要性排名,就讓我們從最重要的開始吧!

別依賴「試誤法」寫程式

from Pixabay

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

你身邊的人都是怎麼開發的呢?

有個情況很普遍,我不得不為此發聲:「請停止用『試誤法』寫程式!」

這尤其適用於準備知識不夠紮實(指為開發所做的功課太少)的開發者。但如下所述,其實它本質上是一個「開發習慣」議題。

我們先看看維基百科對於「試誤法」的闡述:

嘗試錯誤法,又稱試誤法(英語:trial and error),簡稱試錯,是用來解決問題、獲取知識。此種方法可以視為簡易解決問題的方法中的一種,與使用洞察力/直覺或理論推理的方法正好相反。

就像這句「此種方法可以視為簡易解決問題的方法中的一種」說的,在我看來,試誤法常常會得到 workaround 等級(指雖不能根本解決,但能暫時繞過問題的方案)的答案——這肯定不是好事。

不過,我承認,「試誤」在軟體開發中,是一個常見且實用的手段。

我自己寫一些邏輯時,也常常在 jupyter notebook 先執行嘗試執行一下程式碼片段,看看結果,以確保我的想法沒錯。但,這只是一種輔助。

本文想強調的是:不要以「試誤」作為開發的基調,或解決問題的主要方式。換言之,不要濫用試誤

否則那將是一場災難。

無數次 trial and error,看起來勤勤懇懇,實際上是最低效的開發手段。我覺得,試個兩、三次行不通,就應該重新思考問題的本質——而非繼續嘗試。

Django Tutorial:系列介紹與導讀

Let's Django!

2024/03/22 :更新文章規劃,增加「Django Ninja」相關文章。同時重新編輯全文,刪除部分內容,使文章更緊湊、好讀。

這是 Django Tutorial 的第 2 篇——序言。主要說明整個系列的寫作動機、文章規劃,並介紹 GitHub 範例程式碼 repo 的使用方式。


系列寫作動機

雖然在工作上寫了 2 年 Django,對 Django 的文章介紹卻非常少。

作為一個 Django 開發者兼作者,讓我不免覺得,自己有「義務」做些什麼。經過一番思考,我決定把工作中常見的 Django 實作寫成文章。

尤其繁體中文世界對於 Django 的介紹,大多停留在製作整個網站(主要介紹模板、Form、View),而不是開發 API——用 Django 開發 API 的相關教材太少了。

這個現象不難理解,因為在台灣使用 Django 作為產品主要後端的公司相對有限,所以文章分享自然就不是那麼多。

而工作中你幾乎不太可能用 Django 來開發整個網站,畢竟這是個前後端分離的時代。

想到這裡,寫作 Django 系列教學的動力又提升了!這或許就是我的使命