我通常在這裡寫 Next.js、快取,以及那些會偷走你睡眠的 bug。但這篇文章不一樣。我想分享的是,在我寫下任何程式碼之前,究竟會發生什麼事。也就是那個改變了我看待這一切的東西。
有些開發者在卡住時會出去散步。有些人會再泡一杯咖啡。有些人則會一直盯著同一個檔案,深信答案就藏在兩行程式碼之間。我通常會去我的花園。不是因為我想逃離 bug,而是因為我學會了,有些問題只要你不再那麼用力去解決,反而會變得更清楚。
這不是我刻意安排的。它是慢慢發生的,就像大多數真正重要的事一樣。過去一年,園藝悄悄成了我日常的一部分。每天早上,在我打開筆電之前,我都會花一點時間陪我的植物。有時我在澆水。有時我在加入自製堆肥。有時我只是站在那裡,看著昨天以來有什麼變化。這聽起來不像工作。但從很多方面來說,它都在為即將開始的工作做準備。
昨天晚上,我卡住了。是真正的卡住。那種重重壓在胸口的卡住。一個快取問題,怎麼看都不太合理。表面上沒有明顯壞掉的地方。應用程式運作正常。資料有載入。大多數事情都如預期般運作。除了那一個小細節。某個頁面一直顯示舊資料,明明早就該更新了。我先檢查了最明顯的地方。然後又再檢查一次。我讀了文件。我沿著請求流程追查。我看了所有我能想到的快取邊界。每一處看起來都合理。當這種情況發生時,我學會了不要慌。如果我已經無法再取得進展,逼自己一直盯著螢幕通常沒什麼幫助。所以我關上了筆電。不是因為我放棄了,只是因為我知道自己需要不同的視角。
今天早上,我沒有打開編輯器,而是走上樓梯到露台。
露台還帶著昨晚的濕氣。下過雨後,土壤聞起來總是不一樣。整個地方感覺更柔和、更安靜,像是世界把音量調低了。我開始一株一株檢查我的植物。一株番茄在一夜之間長高了。葫蘆藤蔓又攀上了支架的另一段。一株雨百合在昨晚的陣雨後悄悄綻放。這些事情都不是一下子發生的。它們之所以發生,是因為即使沒有人看著,大自然仍然持續運作。當我在翻堆肥時,我的腦中已經不再想快取了。我在想一些沒什麼特別的事。而這通常就是有趣的事情會發生的時候。沒有刻意強迫自己,我突然想起了之前做過的一個假設。我一直在看新資料是如何進入系統的,卻沒有仔細檢查舊資料到底在哪裡又被重複使用了。我那時才看見。其實昨天就該看見的。那一點點視角上的轉變,就是我所需要的一切。回到室內後,修正只花了幾分鐘。解法其實並不是藏在花園裡。它一直都在我自己的腦中。花園只是給了我的思緒足夠的空間,讓我看見它。
這樣的經驗並不特別。它已經發生過無數次。隨著時間過去,我才意識到,園藝幫助我的原因,不是因為植物讓我變成更好的程式設計師,而是因為園藝培養出來的習慣,也正是除錯所需要的。第一個就是觀察。當你每天照顧植物,你會開始注意到細微的變化。一片新葉正要舒展。一根莖往不同的方向傾斜。土壤比平常乾得更快。一朵即將綻放的花。沒有什麼驚天動地的事。只是些很小的細節,如果你動作太快,很容易就錯過。除錯其實也很像。很多 bug 並不是因為巨大失誤造成的,而是因為某個被忽略的條件、某個忘記的假設、某個悄悄影響周遭一切的小變化。你不一定要靠打得更快來解決這些問題,而是要靠看得更仔細。
園藝也改變了我看待耐心的方式。你不能催一顆種子快點長大。你不能要求一朵花明天就開,而不是下週。你只能提供它正確的條件,然後讓時間去完成它的工作。軟體看起來不一樣,因為一切都發生得非常快。我們開發、部署、重新整理,期待立即看到結果。但好的思考未必能用同樣的速度運作。有時候,你的大腦需要的時間,和植物一樣。不是因為它慢,而是因為成長有它自己的節奏。
另一個我從沒預料過會學到的教訓,來自堆肥。在家裡,我們把蔬菜皮、乾葉子和其他有機廢棄物做成自己的堆肥。乍看之下,它一點也不像有用的東西,只是一堆廢料。但只要給它足夠的時間,這些廢料就會變成花園裡最肥沃的部分。我有時會覺得,學習也是一樣。你六個月前讀過的文章、去年苦惱許久的 bug、你差點忘記的文件、你和另一位開發者的對話。單看其中任何一項,都不覺得特別重要。直到某一天,一切突然串起來。那些知識在你沒注意的時候,默默轉化成了有用的東西。這就是為什麼我從不會因為花了一整個下午閱讀,而不是寫程式,就覺得難過。學習不是獨立於建構之外的事,它會成為你之後每一行程式碼的一部分。
我早上最喜歡的時刻之一,就是在做任何事之前先走一圈花園。沒有耳機,沒有通知,沒有無止盡的滑動。只是一天開始忙碌之前的幾分鐘安靜時光。這幾分鐘變得出乎意料地珍貴。它們提醒我,世界遠比我螢幕上的編輯器更大。程式碼依然會在那裡。bug 也依然會等著我。但當我回到座位時,我會帶著更清晰的眼睛。
我們花很多時間讓軟體更快。分析效能、改善查詢、移除不必要的工作。在某個時候,我意識到自己卻忘了替自己做同樣的事。不是再多一套生產力系統,也不是再裝一個瀏覽器擴充功能。只是讓自己的思緒有一點慢下來的空間。對我來說,那通常就是園藝。有些日子是閱讀。有些日子是煮飯、閉著眼安靜坐著、看星星,或只是站在雨裡幾分鐘。你的方式可能完全不同,而這正是重點。它到底是什麼並不重要。重要的是,要有一個地方,讓你的思緒可以沒有壓力地游走。諷刺的是,最好的點子往往就是在那裡找到你的。
我仍然幾乎每天都用同樣的方式開始早晨。在打開編輯器之前,我會先去看看我的植物。我檢查哪些在生長。如果某個盆栽需要更多陽光,我會把它移動一下。我翻堆肥。我注意一些小事。然後我回到室內,開始寫程式。這已經變成一套如此簡單的日常,以至於我幾乎不再去想它。但回頭看,我才發現,那些安靜的早晨,對我處理軟體的方式產生了遠超我預期的影響。我找到的最佳解法,並不總是來自於我坐在螢幕前更久。很多解法,都是在我暫時離開之後才出現。有時候,解 bug 最快的方法,不是繼續盯著程式碼看,而是給自己的思緒足夠空間,讓它換個角度看見問題。
如果你正在讀這篇文章,而此刻心裡正壓著某件尚未完成的事,我希望你能找到屬於自己的露台。那不一定要是花園。它只需要是一個地方,讓你停止試著解決所有事情,讓答案自己來找你。你沒有落後。你也不慢。你只是按照自己的步調、在自己的季節裡成長,而那正是它應該有的樣子。
原文出處:https://dev.to/shubhradev/i-stopped-debugging-at-my-desk-heres-what-changed-43n3