寫作跟寫程式,大概是最能讓我進入心流狀態的兩件事。
對我來說,敲打著鍵盤,讓手指打字的速度去替腦迴路配速,把本來四散在腦袋裡的想像力與邏輯,轉化成有脈絡的實體文字,是一件非常有滿足感的事情。
有點像玩樂高那樣吧?
把自己想像出來,該長怎樣的東西給拼出來的感覺。
寫作與寫程式像在哪?
- 工具很像,坐姿很像。就像我前面說的,這兩件事都是在鍵盤上敲打著某種語言,只不過寫程式用的是機器語言,而寫作需要用到更為複雜與精細的人類語言。
- 流程很像。在寫程式前,我一般會先寫一個架構,把複雜的系統拆分到更小的功能與節點來實現。寫作時,我也會先寫個大綱,確保接下來的故事,或者話題的脈絡是能達到我規劃好的目的。
- 目的很像。寫作與寫程式的成品,都有可預測的輸入與輸出。做為一個產品工程師,我的寫程式通常都有明確的 inputs & outputs。打個比方,輸入可以是使用者點擊我的一個按鈕,輸出則是那個按鈕得做它該做的事情,也許是幫使用者打開另一個頁面,又或者是付款買東西。
對於寫作而言,這個輸入就是讀者們願意給我的時間,輸出則是讀者所預期的體驗。寫小說時的時候是一則有趣的奇幻故事。寫這些部落格隨筆時,則是⋯⋯希望我沒有浪費你的時間,讓讀者(包含我自己)更了解我自己的一些想法。
所以呢?
做為一個職業的軟體工程師,與希望有天能到達職業水平寫作能力的作家,我就想到這個問題——既然這兩個技能這麼像,我要怎麼利用自己寫程式的經驗,幫助我去強化寫作這項打磨中的技能呢?
- 簡化,簡化,簡化!所有人都知道,能夠用 100 行寫出來的程式,就不要用 1000 行去寫。精簡幫助程式碼更容易被理解,也減少了 bugs 出現的可能性。但是,這點其實在寫作上並不明顯。舉個例子,我就發現自己有時候也會「因為這個設定很酷」而硬要塞一千字的段落,確保我的讀者能夠理解某個設定,卻忽略了這一千字如果沒有處理好,不只沒有推進劇情的作用,反而拖慢劇情,讓讀者感到無聊。
- 寫完,然後記得回頭優化程式碼 (Refactoring)。就像寫程式時,我不會期待第一輪寫出來的程式就是完美的,而是會先把一段程式碼寫完,確保輸入、輸出是正確的。然後,再回頭更迭、優化它。可以的話,我希望自己這次重新開始寫小說,也先確保自己寫得完我規劃好的主線劇情。完成後,再回頭檢視每一段故事節點的意義是什麼,有沒有推進劇情的功用?有沒有可以簡化的部分?
- 回饋與程式碼審查 (Code Review)。在公司寫程式的每一次 commit 前,一定都有同事得審查我的程式碼,在 PR 裡面幫忙偵錯與寫寫回饋,有嚴重錯誤時直接退回來給我。在寫作上,我也有幾個朋友,還有 Penana & Discord 寫作會裡少數的讀者幫忙作為 alpha readers,在我這次第一輪寫作的時候幫忙給予一些回饋。這些都應該在我第二輪回頭優化故事的時候,成為讓故事變得更好的養分。