2023 Recap - Build Mode On

Jan 18, 2024

2022 對我來說是沈潛的一年,2023 作為仍處於學徒階段的我,則是發下狠勁,探索與打造的一年。同樣的,這篇文章是我寫給未來的自己的信,它著重於彙整與分享,從中你可以看到我這一年的軌跡,同時我也放入了許多我認為很精彩的東西,你或許也可以找到有利於你個人成長的事物。

Daily Tracker

2023 年延續了 2022 年跟愛人一同展開的挑戰,持續記錄了每一天的好習慣維持的情況,可以從年末的數據統計看出來,今年的重心放在了寫作上,撰寫個人的程式的部分在後半年我完全沒有心力處理,同時讀書與學習的日數也不多,這些都是可以在 2024 年持續強化的地方。

  • 學徒
    • count 54 天(15%)
    • streak 7 天(2%)
  • Self motivated programmer - 無關工作地撰寫程式
    • count 94 天(26%)
    • streak 12 天(3%)
  • 運動員(重量訓練或是跑步)
    • count 99 天(27%)
    • streak 4 天(1%)
  • 作者
    • count 179 天(49%)
    • streak 29 天(8%)
  • 讀者
    • count 31 天(8%)
    • streak 5 天(1%)

Mindframe

學徒階段

在 2023 年的年末,因為一個黎巴嫩朋友的推薦,開始讀一本名叫《Mastery》1 的書,讀到目前最讓我印象深刻的段落在於作者如何闡述「學徒階段」這件事,他列舉了眾多改變人類軌跡的大師,例如法拉第、富蘭克林、莫札特、達爾文等等,他們都在人生的脈絡中走過了一段可以稱為學徒的時光。在這段時間,他們沉下心來,好好跟著師父學習領域中的各種技巧,並且延展自己的知識領域,有的時候甚至跨到另外一個領域學習。

回過頭看,我發現這三年的我正是處於學徒階段,我因為運氣而拿到了進入 instill-ai 的門票,並且在這裡盡可能地接受任何挑戰,進而累積了眾多對這個領域的知識與實作的經驗,在這些挑戰中,我也獲得了心智上的成長,對於複雜的任務以及緊縮的時程有了更多掌握度。

我認為接下來幾年還會是我的學徒階段,我要盡可能去吸取更多的知識,可以的話,跨不同的領域學習。針對這點,我目前的想法是我希望可以學習更多關於 UI/UX 設計的實作與理論,並且碰觸 3D rendering 的實作,並且持續吸收有關歷史、哲學、社會相關的知識。

Connection Matters

這一直是我疏忽的部分,成長至今,我並沒有太著重於與他人建立連結,所有的連結幾乎都是被動的。例如說,上了小學就不得不和小學同學結識,上了大學則認識了班上的同學,這些都是被動接受下的結果,除了大二時一股腦熱跟許多管院的朋友辦的集思論壇之外,我鮮少踏出主動的一步向外認識人。

而這點在 2022 年有了一些轉變,同樣因為工作的關係而認識了新的人,但是在這一次的體驗中,我產生了一些變化。在這次工作之中我結識到非常多有趣的人,同時他們的特質都有所不同,與他們的交流總是可以碰觸出非常耀眼的火花,這是我獨自一個人時無法產生的。這種經驗讓我重新思考了過去的體驗,並且得到了一個暫論是,我人生中直到現在還有深刻記憶的亮點,都是因為我碰觸到了一群新的人,他們的性質與我過去習慣的有著巨大的不同,進而產生了新的思考與創意。同時因為夥伴是一個比較外向,講話有趣、容易和他人打成一片的人,從她身上我學到很多這方面的方法,使得我不再容易因為技巧上的缺乏而顯得無力且抗拒。

於 2023 年我開始延展這樣的可能性,尤其是 Threads 開張之後,我與好友有鑒於 Twitter 的成長性較低,一鼓作氣地把自己社群經營的主戰場搬來 Threads,由於是比較新的平台,同時還沒有廣告,因此瀰漫著 Facebook 剛開始的那種單純意味,大家都想在這個平台上找到志同道合的朋友,我也因此而跟好幾個遠在其他國家的人們有所連結,甚至一起草創了一個關於 Creatives 的社群。

這些體驗都讓我再次理解到,與不同性質的人交流的美好,他們的見解與探觸到的資訊,都會再次激發你手上創作的創意。縱使我們都一再被提醒不能閉門造車,但我經過了二十年的探索,才理解了這句話的價值。

Digital affordance

An affordance is a readily perceivable interaction possibility. 2

為什麼一打開 Word 你就沒有創作的慾望,這是這個理論著名的比喻。由於 Word 追求各種關於「排版」的細節調整,例如說版面大小、字首造型、文字大小顏色、行列高低等等,使得即使只是想要創作,光是把這些事物調整到自己滿意的狀態都需要消耗大量的精力,最終讓人們面對 Word 就彷彿寫不出東西似的。以 Affordance 的話語來說就是,使用者在面對這個界面時無法想像出自己用它創作的情景。

這個理論讓我在設計時有意念地避開一些時常被使用的工具介面,假如說如果這個工具的遊樂性質較重,我不會嘗試工作工具常用的滿版設計,而是留下一些邊界,讓那些邊界承擔起互動的工作。這不僅可以帶來新鮮感,更重要的是重塑使用者的想像空間。讓使用者重新理解你的設計語彙,如此一來他們就不會對此有先入為主的印象。

Composition Component

這是今年影響我最大的前端的概念,請看以下的例子,我會盡可能用非程式設計者也可以理解的方式來解釋。

在 Composition Component 之前,我們會把這個 Component 需要的東西暴露成 props 讓使用者可以丟進來,通常這裡面都會有些嚴格的限制,來讓使用者不要誤用這個 Component。

<IAmAComplicatedComponent
  trigger={<IAmATrigger />}
  portal={<IWillTeleportStuff />}
  content={<IAmContent />}
  isOpen={true}
  disabled={false}
/>

但 Composition Component 反其道而行,嘗試讓使用者可以像是樂高一樣組裝自己想要的 Component,如果裝錯了就給他一個 runtime error 提醒他。

<IAmAComplicatedComponent.Root isOpen={true}>
  <IAmAComplicatedComponent.Trigger disabled={false} />
  <IAmAComplicatedComponent.Portal>
    <IAmAComplicatedComponent.Content />
  </IAmAComplicatedComponent.Portal>
</IAmAComplicatedComponent.Root>
IAmAComplicatedComponent ERROR
Portal should be in the Root component

這個設計的好處是我們不再會「過度設計」我們的 Component,而是盡可能維持開放,盡可能讓使用者可以調整眾多參數以及 Component 組裝的方式,並且提供一個模板讓使用者可以參照使用。

寫作

我覺得今年最神奇的體驗莫過於「重寫一部我之前停筆的作品」。那發生在某一天夜晚,我心血來潮打開一部名為《早餐一顆水煮蛋》,寫了一半的作品,配著我喜愛的音樂開始閱讀起來。隨著音樂的節奏不斷上揚,我彷彿進入了一個神奇的領域,眼界整個被撕開,看到了過去從未看過的世界,在那個世界中許多故事中的角色都活了過來,走過來跟我說話。在那一刻我理解到,他們在呼喚我了,呼喚我把他們的故事完成,雖然聽起來很濫情,但這就是我當下的體驗,這本小說在呼喚我完成它。

那時剛好面臨 Curioucity 不知道如何持續的問題,我幾乎沒有思考就把它放下,轉身投入創作之中,接著之前寫到一半的地方方續寫《早餐一顆水煮蛋》,並且在將近年末的時候,寫到了最後一幕,離完結將近。

除此之外,因為下半年有幸可以出國遊歷歐洲,我將我遊歷中經歷的事情和看到的事物,綜合我對於帝國的思考,寫成了一個有著三十章節的遊記。

總地而言,這是充滿創造的一年,在這之前我原本對這一年的祈願是自己能夠寫出一個具成長性的工具(那個時候的目標是 Curioucity)但因為前述那神奇的經驗,加上對於三十歲這個神奇數字的感觸,我決定把時間投入到自己最在意的創造性活動之中,也就是寫作。我很慶幸我有立下這個目標,並且在這一年中一步一步的完成它。

程式設計

這一年對於程式設計我並沒有著墨太多在自己的專案上,大部分自發性的專案最後都沒有完成。

  • Aug: releaseitA tool for team to track the release schedule and progression in the release phase
  • May: telecine A record screen as code framework. It uses Playwright under the hood to let you programmatically record every video about your product.
  • Apr: mark-your-frog This app will help you find the most important task in your Todoist tasks with the help of openai’s gpt-3.5-turbo model
  • Feb: twitzy Twitzy is an unstyled Twitter thread React compound component.
  • Jan: curioucity Knowledge management tool built for community and its builder using Rust.

我的大量精神都放在 Instill-AI 的 pipeline-builder 上。這是一個 Endless Canvas Drag and Drop builder,我們在這一年總共改了四個大版本,每一個版本都有非常複雜的結構,然而我們每一次都有些地方不滿意,因此又將其打掉重練。

  • Ver.1 - 我們的最初版只是一個表單系統,他沒有辦法被 Drag and Drop,也沒有辦法隨意組合與連結,同時使用者很難理解目前的 pipeline 到底長什麼樣子 3
  • Ver.2 - 我們的第二版開始有連結的雛形,但是使用者能控制得仍然不多,在這個階段困惑我們得主要是底層的資料結構,我們連那部分該怎麼施作都沒有思考得很完善,導致連我們自己的團隊都覺得這個工具很難使用
  • Ver.3 - 在第三版我們嘗試了新的組裝方式,同時支援更完整的 Drag and Drop,
  • Ver.4 - 第四版的翻新恰好發生在我歐洲之旅的尾聲,回來之後的那一個月,幾乎沒有日夜得修整嶄新的 pipeline-builder,直到這一版我們才真正了解到底層的資料結構以及整個 UI Flow 該怎麼動最適合。
  • Ver.5 - 在第四版中每個組件的 Configuration 都需要在組件外的 Sidebar 設置,這導致了使用上的卡頓,而在這個版本我們把 Configuration 區分為必要與次要,必要的回到組件上設置,而次要的則仍然在 Sidebar 設置。這個改動讓我們的 UI/UX flow 徹底活了過來,使用上更加便捷。

關於 2023

埋頭寫作

如果要為 2023 下一個子標的話,我會說自己正在「埋首寫作」,每天工作之餘的時間有一半都在寫作,寫作的主題如前述所說,集中在《早餐一顆水煮蛋》以及《歐洲遊記》上。對此我感到安慰,隔了四五年的沈澱,我終於又回到了這個創造性的活動之中,把心思都放在對文字的悸動上。

我覺得有趣的地方是,這兩個作品我是同時進行,寫完當日關於其中一個作品的時數之後,隨即接下下一個,我總感覺彼此之間有什麼東西在互相影響著,寫《歐洲遊記》時需要克制一下使用比喻的頻率,而寫《早餐一顆水煮蛋》時則不能寫太多自省性的文字。除此之外,我認為我的文字在這一年也有了些許的提升,它變得更加易讀,不再搬弄複雜的多層次比喻。文句也有意識地縮短,營造閱讀時的節奏感。

我希望這樣的狀態可以持續到 2024 年甚至是之後的寫作生涯,保持對新的可能性開放的態度,以及彈性地面對如何寫作這件事,一有機會就重塑自身的寫作習慣與用字。

每月一次的書店之旅

在 2023 年的後半段,我跟我的愛人坦白,覺得自己在這一年接受新的資訊的管道大幅縮減,生活活得似乎越來越窄了。愛人思考了一下,也認同自己的生命正面臨這樣的問題,她忽然說,「那不然我們每個月都花四個小時在書店裡讀書。」我想了一下,沒多久就認同這個提案,雖然它並不一定可以解決我的問題,但它好執行,同時沒什麼壓力,又可以增加與愛人互動的時光,因此我們就此敲定開始執行這件事。

雖然後來我們並沒有每次都在書店待四個小時,頂多一個小時就想要站起來走一走,但是這個活動卻帶來意料之外的化學變化,我們開始分享彼此讀的書,感興趣的議題,我也重拾了閱讀的習慣,每天中午與晚餐時刻,獨自一個人在家的時候都是邊讀書邊吃飯。這件事不僅提醒了我閱讀的重要性,更暗示了面對難題時的行動方針,可以先從簡單、易持續的東西著手,養成習慣之後再開始擴張複雜度,如此一來,可以執行得更加順暢。

遊歷歐洲

因為 COVID-19,出國遊歷這個活動停頓了許久。恰好在這一年,遠在土耳其學習語言的弟弟要回台灣,我們決定從土耳其開啟一趟橫跨歐洲的壯遊,為期一個月,途經土耳其、羅馬、佛羅倫斯、布達佩斯、維也納、布拉格、柏林、巴黎、最後落腳倫敦。一開始時我們並沒有意識到這趟旅行的主題是什麼,而是從土耳其飛往羅馬的飛機上,我在書寫筆記時忽然意識到這可以說是一趟帝國巡禮。鄂圖曼土耳其帝國、羅馬帝國、梅帝奇家族的文藝復興、奧匈帝國下的布達佩斯、哈布斯堡王朝、波西米亞王朝、德意志帝國、法蘭西帝國以及大英帝國。這些帝國都曾經統治大片歐洲江山,其足跡甚至遍佈全世界。

對帝國的巡禮對我來說具備雙重的意義。身處在台灣,我們對於帝國的臉目非常敏感,我們被夾於當世最能被稱為帝國的兩大權力之間,美國與中國,艱難求生。對人民而言,生活中無處不存在帝國的影響力,這趟巡禮被我視為一個對於帝國的重新體悟,我想要重新理解過去的帝國的模樣,以此理解當代的帝國。另外一點則是,我想要理解這些過去被帝國籠罩的地區,是如何面對帝國的輝煌與破敗。

就結果而言,我認為這趟旅行改變了我思考的方式,以及對於文化的共感能力,我更能去處理不同文化之間的衝突與理解他們背後的脈絡。

關於筆記

大學期間我時常帶著一本筆記本以及一支筆在身上,這個習慣在日後更加依賴 Notion 等筆記軟體之後消逝了,而在這次歐洲之旅的期間,我都帶著一本筆記本隨時紀錄下自己的思考,與觀察,那形成一種非常深刻的習慣,在我回到台灣之後依然留著。我認為這種藉由真實的紙筆記錄下事物的手感非常美好。

2024 展望

2024 有個重要的出發點,那就是認知自己仍處於學徒階段,所有我在當前的工作以及追求中獲得的東西都需要有學徒的精神於其中,即使是在未來,我開始對手上的工作熟稔,我仍然需要找到我可以處於學徒階段的事物,踏實地學習。同時我希望可以與愛人拓展更多的可能性,不斷嘗試新的計劃,互相扶持成長。

GPTs 作為個人的 PM

我發覺我需要一個個人的 PM,它會管理我工作之外的各種專案的進程,以及給予我每週、每月、每季的進度匯報,讓我更能掌握自己的節奏。

以往這件事可能無法達成,但現在 ChatGPT 以及 GPTs 的系統可以讀取自身以外的資料,例如說他們可以獲取我個人 Linear 帳號內的 Ticket 並藉由這些 Ticket 來知悉我的進度。在這一年我想要開發這樣的小型 GPTs,嘗試建構個人 PM 的可能性。

完成小說與修訂遊記

完成《早餐一顆水煮蛋》,修訂它與《歐洲遊記》是我今年於寫作上的重點,然而我希望自己偶爾可以騰出時間撰寫一些關於程式設計的文章,一方面是可以與他人分享創作的喜悅,另一方面則是這些文章都變成了我的知識庫,我已經有好幾次工作上的難題是在自己的文章中找到解答,這種體感讓我理解到把筆記結晶成某種載體的好處,我希望在接下來的這一年可以延續這件事。

閱讀原始碼

我原本非常抗拒閱讀程式碼這件事,尤其是開發社群內瀰漫的《程式碼閱讀》氛圍,他們時常叫新進入的工程師去閱讀他人寫的程式碼,以此來增加自己的能力4

然而,我近期卻因為開始閱讀 Radix-UI 一些 Component 建構的程式而學到了從前從未想過的撰寫方法,我進而思考起,也許是時候有系統地閱讀他人寫的程式碼了,尤其是好的程式碼。

我打算從我平常碰觸的工具開始,諸如 vercel/satori、radix-ui/select、zod 等等,直到我熟悉該如何去閱讀後,我再慢慢拓展出去。

探索社群

2023 的年底在 Threads 上結識了一群人,並且和他們一起建構了一個名叫 Creative Threads 的 Discord 社群,在這個社群中與各種不同的創作者互動成為了我每天的日常,那不僅讓我得以窺見如何經營一個 Discord 社群,也讓我有機會實驗 Curioucity 的各種功能與價值。在 2024 年我打算持續投入其中,撿拾 Curioucity 的機會,並且盡可能將自己浸淫在創作的氛圍之中。

Identity Free

這是我 2024 年給予自己的最後一道閘門,大意如下。

  • 我將不會以我的工作的內容、工作的職位介紹自己
  • 我將不會以我如何賺錢介紹自己
  • 我將不會以我過往的職稱或成就介紹自己

反之我將以

  • 我現在煩惱的問題
  • 我現在思考的概念
  • 我現在正在解決的難題

介紹自己。

我將其取名為 Identity Free Movement 5。原因在於,我厭倦社會的認知框架總是以工作象徵個人,並且將個人桎梏於其中。在 Threads 和 Creative Threads 社群上與更廣泛的人群接觸後我發現,人們的潛力比他們的工作所規限出來的還要大。我們應該嘗試跳脫這樣的限制,解放我們認知自身的方式,而這一切都從自我介紹開始。

致謝

2023 年要謝謝的對象實在是太多了,我首先想謝謝我的愛人 Lucy 在這條路上一同成長。謝謝我的爸媽,讓我可以沒有後顧之憂地探索世界,謝謝我的兄弟們,帶給我極大的歡樂,謝謝我身邊的眾多朋友,以及我的讀者們。

Footnotes

  1. Mastery by Robert Greene

  2. The Evolution of Digital Affordances

  3. How to Build a Cow Counter Dashboard Using VDP, PostgreSQL & Metabase

  4. My problem about telling others to blindly read source code

  5. Identity Free Movement

bud

archive