- 招人寫代碼太花錢了。無論是商業 IDE 許可證、AI API 、收費軟件庫還是收費託管服務,都不會比程序員的薪水本身高。只要是能讓程序員少寫代碼,提高寫代碼效率的,公司眼都不眨一下就會買,絕不造輪子。
- 科技大公司想必一定非常豪爽,但員工亂花 token 還是會被叫停。説不定他們燒掉的錢比他們的工資還高,AI 真的太燒錢了,
- 預製包裝食品分量少,平常是絕對不會買的。但午餐時間沒有辦法烹調和保存食物,包裝食物是餐廳之外的唯一選擇。如果分量少點能馬上吃得完,我甚至會願意多花錢呢。
57 篇
Tweet
grill-with-docs (github) 是很好,在第一次開始做的時候就已經能得到前人的經驗,考慮所有偏門的狀況,第一次就做到完美。但是如果是在可以隨意犯錯的環境,靠自己的力量做出一個個短視的決定,然後在開發新的時候彌補過錯,才能更確實地累積經驗。
工作生活
- 大學真可怕。沒有薪水、沒有規律的時間表、自己逼自己工作,還有目標不明。
- 換個角度想,能畢業就確保了基礎的工作能力,僱主沒有任何理由聘用大學生以外的人。
- 下班後的時間很不好用,回家後非常容易浪費在無意義的娛樂上,要很有決心才能發展興趣。
- 但既然已經做了一天的正事,批評消費和娛樂浪費時間是不是太沒有良心了?這和學生的邏輯完全不一樣。所以大家下班後才會去肆意消費,所以晚餐總是特別貴。社會的一切都是圍繞着上班族設計的。
- 沒有比好好睡覺,準時上班更重要的事。
- 但正正是在這種結構裏面,精神疲勞但還有體力,才會琢磨怎麼利用時間。相比放假的時候精神活躍但體力不足,我很喜歡規律的生活,這才是最可怕的。
軟件開發
- 在實際有人維護的代碼庫中的工作經驗是很寶貴的。只有自己工作的 git repository 永遠也不需要用到
git branch和git merge。 - 工作時間越是零碎,就越是容易在不清楚真正需求的情況下趕工,造出其實不需要的東西,浪費時間。
- 不得不承認, OOP 和各種流行框架在團體開發的時候是必不可少的,能讓新人在不瞭解系統全貌的情況下靠約定和 API 工作。代價是拖累開發速度和增加系統的複雜度。單獨開發的時候完全沒有必要使用這些方法。
溝通成本
- 雖然工作內容都是會向新手解釋一遍的,但因為溝通成本高和專家忘記了新手痛苦的關係,往往還是要自己研讀代碼,還有向同事了解工作的目的和隱藏的代碼規範。
- 即時通訊是最有效率的交流方式,前提是依然需要同一個物理工作空間工作,這樣就不存在之前説過的信任問題。打斷別人寫代碼的思路是很損害工作效率的。
AI
- 只要有 AI 魔法,就算完全不懂新語言語法的新人也能馬上開始工作,一個人頂兩個人用。
- 完成任務最重要,很容易依賴 AI,但工作完成了之後就沒有理由再碰,弄懂自己在做什麼變成奢侈的事。過程中要儘可能爭取時間理解一點工作背景和周遭的代碼。
- 如果想要讓 AI 工具在工作中落地,寧可放棄性能,也必須要有便宜可驗證的輸出結果。如果只用關鍵詞和傳統機器學習模型,又會覺得落後,需要權衡。
- 不會被取代的。AI 只是個裁員的藉口。軟件開發是投資,無法創造直接利潤,賺不到錢的時候自然會被炒掉。AI 完成的工作越多,就會產生更多維護的工作。不清理,代碼庫就會逐漸腐爛。
- 真正的危機來自學習速度的提升導致的知識貶值,而不是完成工作的速度本身。
$$\binom{n}{0} + \binom{n}{1} + \cdots + \binom{n}{n} = 2^n$$
這個定理原來是這麼顯而易見的!這是因為我在研究 Stenograph Keyboard 的按鍵組合:
Stenograph Keyboard 鍵有四個元音鍵 AOEU,可以同時按下,總共能代表多少種元音組合?
如果是為了計算答案,就會用「每個按鍵有兩個可能的狀態,所以是二的四次方」這種作弊的方法思考。
但真的需要使用 EU、AO 這種組合鍵代表不同輔音的時候,真的要把所有組合列出來的時候,我就完全忘記了這回事,而是會用「n 個鍵的組合有多少」來思考。
自然就會從 $C_{1}^{n}$ 開始一路數到 $C_{n}^{n}$
- A
- O
- E
- U
- AO
- AE
- AU
- OE
- OU
- EU
- AOE
- AOU
- AEU
- OEU
- AOEU
得出結論,總組合數就是
$C_{1}^{4} + C_{1}^{4} + \cdots + C_{4}^{4}$,這個是帕斯卡三角形第四層的總和減一。
等到我突然想起還能用二次方計算的時候,這個定理也就重新被我發現了。明明學離散數學的時候完全不明白。
特別是我根本不會去考慮 $C_{0}^{4}$ 的情況,因為什麼都不按根本不能用來代表一個元音。所以是 $\binom{n}{1} + \binom{n}{2} + \cdots + \binom{n}{n} = 2^n - 1$。乾脆把三角形的左邊的一排 1 劃掉好了。
- 1
- 2 1
- 3 3 1
- 4 6 4 1
- 5 10 10 5 1
- …
不工作跑去研究工具是沒有好下場的。不過 Super Productivity 和 ActivityWatch 用起來都不錯。要怎樣運用徹底監控電腦使用時間得到的數據,才能把生活變成數值管理遊戲?不過總之先記錄,其他問題以後再想。
我想破頭之後總算明白了,我手上的時間管理工具在功課上派不上用場。
待辦清單適合處理繁瑣的工作,但我通常只有四五份功課,根本不需要特意記下來,每一份又要花幾天才能做完,一定要先拆成一個個簡單的步驟,才能放進待辦清單,但沒做過,又怎麼知道任務能不能拆開?空泛地亂拆又沒有用。
這樣一來,似乎根本不需要用什麼時間管理工具,埋頭苦幹一天做完就行了。但「埋頭苦幹一天」太嚇人了,結果只會拖着,永遠不會開始。而且,一天做完的作業質量肯定不好。和寫文章一樣,要每過幾天重新看一次,不斷修改才可以。
靠軟件幫忙安排工作,一邊做一邊分拆任務,把拆開的任務分成很多天處理,每次只做一小部分,減輕內心的恐懼,是最好的做法。但是軟件的排程不會理會截止日期,沒法保證一定能在規定的時間內完成。
説到底,截止日期這個概念本來就是想當然的產物。如果能明確地預測工作時間的話,就直接用那個時間好了。但工作時間當然是無法預測的,只能設一個過分充裕的期限,讓人變得拖拖拉拉。
我理想的時間管理工具該有的要素:
- 任務隊列,按照緩急輕重和完成的收穫自動安排每日的任務,出現什麼就做什麼,沒得選。
- 每項任務都是一個文本檔案,因為無論什麼任務都需要寫工作筆記。
- 遇見複雜的任務可以拆開,形成樹狀分支
- 任務清單,能觀察自己每個項目的進度,彌補任務隊列把任務拆得亂七八糟,見樹不見林的不足
有了會很好:
- 能自動打開任務需要的檔案,減少切換的麻煩
- 遊戲化,在完成任務的時候會「叮」的一下加分。
- 能製作記憶卡,混入任務隊列
- 時間追蹤,提醒自己不要在同一個任務上花太多時間。
雖然把一大堆工具合併起來用就能滿足上面的所有要求,但如果還是要奢望有一個萬能的合體機器人的話,就只會走上 emacs 的不歸路。怎麼辦,好像很吸引人……
又不小心研究了一會 emacs,因為 orgdown 的語法好像比 markdown 好。練習快捷鍵除了輸入的時候比較爽快沒有什麼意義。我很滿意 vim。過早的優化是萬惡之源。有些人連盲打都不會呢,照樣能寫出好的程序。
記錄行動的目的不是獲得數據,而是用記錄作為行動的開關,有意識地「浪費」時間。逃避結束的時候同時結束記錄,作為切換狀態的訊號。計時是讓無意義的按按鈕儀式變得有意義的把戲,順帶能了解自己的習慣,知道自己真正需要多少逃避的時間。主動搞清楚自己的娛樂有多少是需求,多少是逃避,多少是無意識的習慣。
被動地用軟件記錄,或者記錄不會重複的事件都是沒有意義的。
正正是因為這是個沒有意義的儀式,才有了能不讓人反感地堅持的機會。
逃避行為:
-
思考抽象宏大的問題
-
學習不迫切的知識
-
觀看流行的新聞和娛樂影片
-
搜尋新的音樂
-
發呆、踱步
-
無目的地聊天和抱怨
-
寫反省的文章
-
研究新項目
-
重温喜歡的故事
-
沉溺幻想
-
無限滾動是沒有辦法抵抗的
- 你能做的就只有按下按鈕,讓時間流逝,然後看到累的時候,讓按取消按鈕逼自己站起來離開。中途沒有任何意志力介入的空間。
- 所以不能讓無限滾動存在,要用一切手段禁止。
- 逃避的時間是沒有辦法減少的
- 每個行動都是在我按下按鈕後授意自己去做的,但我是沒有辦法控制自己的行動的
- 內心有逃避的軟弱,就必然有滿足這種軟弱的需求
- 內心有對新聞和流行內容的好奇,就會想辦法補足
- 就算知道自己已經無法承認自己的行動,也沒有什麼可以做
- 連按鈕都按不下去,明確知道自己沒有精神確認自己的狀態了,就應該休息了。
- 我覺得用按不了按鈕用來做判斷疲勞的標準是很準確的,因為這個行為沒有任何附加意義,也沒有逃避的理由。
- 但就算知道,還是會想同時做矛盾的事情,一邊做作業一邊看動畫,一邊睡覺一邊複習
- 讓人保持理智的技巧往往需要理智才能實行
- 確認自己的行動狀態不是這麼簡單的
- 我經常忘記自己已經按過按鈕,甚至不知不覺間就會切換到別的狀態。
- 就算是有意識的決定也會被無意識的習慣蓋過去
另一方面,按鈕也可以當作像番茄鐘一樣的啓動器。面對不想面對的事情,只要自己確定了要去做,就按下去。和番茄鐘不一樣的是,沒有強制要做多久。只要誠實地確認行動的開始和結束就可以。
- 確認資訊
- 工作
- 出門
- 發訊息
- 洗澡
- 睡覺
- 做飯
不是所有時間都是需要記錄的,像是通勤時間和上課時間一樣,無法避免的不受控時間沒有必要記錄。不過還是看自己的感覺能不能掌控。
爲了讓系統不會失敗,還有一個逃脫按鈕,當你確認自己不想確認自己的行動的時候,就按下去。要是連逃脫按鈕都按不下去的話,無論處於什麽狀況,都毋庸置疑是不受控的時間,所以也不用愧疚。
做了輔助工具,但輔助工具本來會帶來更多的工作量的時候,就有應該先做哪個的問題
如果不用別人寫好的工具,到底要怎麼做出有圖形界面的程序呢?簡單的編程練習總是在純文字的界面打轉。需要用到圖形界面的時候,就要導入一些神奇的函式庫。
只是自己寫給自己用的話,軟件根本不需要有圖形界面,在終端裏輸入命令就足夠了。
要和操作系統交互才能畫出窗口,所以需要導入函式庫和用 C++,Python 本身是做不到的。
how to make gui in python without tools (stackoverflow)
瀏覽器是最通用的渲染引擎,所以用網站做 UI 應該是最簡單的……
UI 也算是數據可視化的一種吧?
UI 是狀態機,所以應該用狀態機圖來設計。Construct User Interface with Statecharts 這本書説明了,最基礎的狀態轉移圖 (State Transition Diagram) 根本不可能用來描述複雜的軟件,一定要使用帶有層級、記憶、分離等常見模式的符號的 Statechart,才能把狀態數量壓縮到可理解的狀態。
我覺得這本書太着重符號的定義了,對於個人開發來説是過度工程。而軟件沒有實體,定義狀態本身就不容易,狀態轉移式的代碼也和 JavaScript 的 event action 設計模式不太適配。
AI 寫代碼看似是無本生利,但確實是有代價的。本質是用學習動機和創作欲望作爲抵押,借來馬上得到的成果和能完成事物的信心,只是一般人不把這些當作是代價而已。你真的能利用這些預支的資產,繼續產生動機和知識嗎?
當你以為自己完成了 90% 的工作的時候,距離能正式交付其實還差 50%。這是讓自己滿意和讓別人滿意的差距。AI 拿走了前 90% 的成就感,還要接着完成剩下 50% 的工作。當然這剩下的工作也可以讓 AI 來做,但是因為自己對工作沒有投入任何感情,所以不會容忍任何不符合自己預期的地方。
2026-06-11
「僅僅想要讓事物誕生,不是自己做的也沒關係。」要有這種想法,才適合在項目裏面應用 AI。
對了,可以直播!和博客的異步邏輯是一樣的!只需要宣告存在,不知道有沒有人在看,不需要互動和評價的社交方式!
但是應該播什麼呢?我很不喜歡被監視的感覺。
培養習慣的時候,不要期望有太完美的紀律。自己的習慣的意義,是敵不過外部要求的意義的。如果習慣的意義依賴紀律,一旦被外部壓力打亂節奏,就很難重拾回來。
無論在什麼時候中斷習慣,過程的記錄和成果都要有獨立的意義。這樣無論過了多久以後,都不是從零開始。
-
家會空起來,不想離開。
-
嚮往正常,害怕逼自己。
-
AI 延遲了危機感。
但是沒有不逼迫自己的心態和條件,失掉了唯一的武器
舒適的環境好像沒什麼意義,但是會影響情感經驗。雖然可能覺得只要解決主要的痛苦就什麼都好,但這種想法正正是無法更從容地應對的原因。
分清楚什麼是讓自己真正不舒服的,和應該讓自己不舒服的。
可能是温度,可能是風。舒服的可能是不舒服的。不舒服的可能是自在的。