記在程式導師計劃之後(上)

44 min read

# review

這篇是一篇關於放不下的學習過程,我想,一定某處也有人鍾情於某個領域、嘗試了很多次但是都沒有學會,甚至過程中被勸解、很想要放棄。如果你剛好路過這篇文章,不妨看一看再來決定要不要放棄,因為這是一篇真的很久很久才學會的故事。

楔子

在小學第一次用 VB 湊出了一個計算機之後,那時還是系統工程師的母親就對我說:「寫程式是努力可以做到的事情。」她不乏有時不時就看論文、對資訊真愛的同事,但她覺得自己從來不是這樣的人,還是做了系統工程師,就是這樣的經歷、這句話一直深深烙印在我心裡。

所以我以為我會像我看過的大部分十年之路一樣,從第一次玩 VB、寫出遊戲外掛、從 MUD 開始玩腳本、在 RPG Maker 接觸 Ruby,打進資奧或是 14 歲創業,但沒有,什麼事情都沒有。

這不是十年登峰造極、追求神乎其技的故事,是一個有點執著、風雨飄搖的現實。

致放不下的你。

我與程式之間的糾葛

夢醒

家裡人都是工程師,從幼稚園起就摸著家人的電腦長大,玩裝著一個個 flash 小遊戲的磁碟片、小學就被灌輸了二進位的觀念、國中加入電子報編輯部。資訊科技在我生命中是這麼的有份量,充斥在我的童年。

乃至於我到了高中的時候,也是豪不猶豫的選擇了二類組,即便我的國文分數比較高、又是還在寫著小說跟詩的青澀年華,我也是豪不猶豫的選擇了二類組,只因為我一點點都無法想像自己遠離資訊科技的日子。

於是在高二的時候選修了計算機概論,那是我第一次認清現實,生活並不像大部分熱血沸騰的夢想故事,看到那些題目既沒有抱著磚頭書睡覺的熱情、也沒有作夢會想到演算法的場景,只覺得輾轉反側、莫名其妙。

印象深刻的是,當時資訊選修要把程式作業把印成 A4 只給老師批改,我積欠了一學期的作業,但我無能為力,這跟我想像的資訊一點也不一樣,不是偷改部落格的樣子、也不是摸一點點遊戲腳本,都是像斐波那契数列那樣的,原來這就是資訊工程。

那些目眩的題目在我當時的世界裡,就是資訊的全部。

夢碎

到了大學依舊選了理工大學雖然唸的是文學院,依舊選修了程式相關的課程,對於程式的理解更加寬廣,我知道有網路多媒體、軟體工程、資訊安全三組,心想以前的自己為什麼會學不起來,這次一定可以。

所以我又重新鼓起了勇氣,去修了程式相關課程,從斐波那契数列變成廣度搜尋優先,從 C 變成 C++,我以為這次我更了解了什麼,但沒有,什麼都沒有。我深深深深的懷疑著,我是不是資訊的「智障」?

寫程式是努力可以做到的事情。

夢碎時分,這句話隱隱做痛。

爾後,碎的一片的玻璃心在我大三大四的時候,接觸了科技藝術相關學程,那時候知道了 Processing 讓我知道原來寫程式還有這種方式,可以做出小小的作品,至少也不是這麼的死板,讓我燃起一絲希望。緊接著從 Processing 開始認識了不同的人、知道了什麼是前端網站開發。

啟蒙我的是建築所,我很感謝有這樣跨域結合設計與科技的一門領域跟推廣的教授,在課程裡面,我用 jQuery + HTML + CSS 做出第一個比較完整的作品,真的就超~簡單的一個網站,透過安排不同的影片腳本,根據滑鼠移動的方式來播放,但我對於這整個作品的概念、到最後在 codepen 上。「我知道為什麼要做什麼、我在做什麼、然後我把它做出來。」那份自由暢快,足以讓我死灰復燃。

於是在畢業前後,我斷斷續續嘗試不同的課程平台,Code Academy、Tree House、Code School、Udacity、CS50 …… 許許多多都嘗試過,為了重現前述的感動。最長一次投入是大學畢業那一年的暑假,整整兩個月浸泡在線上課程裡面。

結果是,我連我做了什麼都忘了,有 Google Map,然後呢?呃 … 看當時的截圖好像是大學地圖吧?這是個失敗的作品,很明顯是因應著自己殘破的技術湊出來的作業,如果那時的我有個點子,也做不出來,我試圖釐清是方法不對?不夠努力?不夠毅力?還是不夠聰明?

為什麼沒辦法隨心所欲?

夢延續的地方

對,隨心所欲。

我對寫程式的想法就是:如果我今天心裡有一個想要解決的問題、創作的樣子,我可以自己做使用者研究、互動設計最後開發出來,並具備一定的系統品質。就像我一路憧憬的人們一樣。

但我開始懷疑:這真的是工程師嗎?在大三一路到研究所的期間,知道了世界上有 Lab、有互動設計師、還有各式各樣的職位,網站有這般酷炫特效、也有那般產品導向。

也許我努力的方向是不是錯了?在研究所期間我一直思辨我對產品、對設計的看法。看了看一起投論文的資管同學、當初工作室的大大、做繪圖創業全端開發的學長這些人,看他們怎麼看這件事情,反思我在心中的「隨心所欲」是什麼意思?

思考的路真的很長很長,長到一路上被嘴過不可能、不需要、你幹嘛這樣,我無話可說,畢竟我曾經有過十年。最後得到了一個曖昧但還在持續思考的答案:「開發是設計的匠性。」所以更了解理想為何,透過藝術思考與研究方法來得到,這是設計的目標,但縮短理想與現實的手段就是開發,是設計的匠性。

雖然這種設計觀說重要也不重要,但身處一個快速發展、抽象的領域,找到座標滿安心的。


Lidemy 程式導師計畫

好的,說到這邊讓我們中場休息一下,總結一下自我介紹:

嗨,我是 Lidemy 程式導師計畫第三期的學生,是 MBTI 中的 INTP,喜歡後設所有事情,喜歡一路從說要做、為什麼做、要做什麼、然後做出來,是個有點獨有點怕生不會開話題,不過喜歡看動漫畫玩遊戲、做動畫跟閱讀寫作,希望自己可以做到求真求善的人。

就學時期成為了一個不是開發者的工具人。學生生涯末期的兩到三年都在苦思什麼是設計?得到「設計是為了對某種理想負責,而開發是設計的匠性。」的答案,於是期許自己要能從研究定義出兼顧需求與藝術性的更好、並從設計到開發對這個更好負責。

所以為了自己的哲學、補上這塊拼圖跟一了長年風雨飄搖的心願許多理由,報名了這次計畫。

在這次的課程裡面有一半時間在碩二下跟一半完整自學的時間,這是我學生生涯最後一次機會。

課程報名

既然提到了「喜歡一路從說要做、為什麼做、要做什麼、然後做出來」卻一直沒有做到,這件事自然而然就變成我一直覺得自己做的不夠好,但做得不夠好也回不去,又演變成斥責自己不夠努力卻又疲憊不堪,就像緊繃過頭的弦又斷了弦。雖然也一直有些非常充實開心的專案,但就是哪裡不夠。

接著就看到了這個計畫第三期的資訊,有鑒於一直都學的不是很好,一直很擔心報名會不會落選,從開始報名之前一週就開始準備,寫 codewar 跟準備 scratch 小遊戲,潤了無數次的信、整理自己的想法、思考自己期望的樣子是什麼、又要怎麼寫才能傳達進這個報名信、怎麼樣比較好閱讀,然後在前面幾天就先寄出了信。

嘗試節奏遊戲

我把所有素材都整理成 pdf 檔放在雲端硬碟中、並同步整理一份在 HackMD 跟 pdf 檔連信件寄給自己用手機跟電腦確認一次,也請朋友吃了早餐幫我潤一次信有沒有問題,然後去拜拜希望自己可以被選上這個計畫。

很幸運的最後有被老師錄取,還提到曾經有一面之緣,由於自己也忘記自己是分享了什麼內容,還回去翻我那時做的簡報想說自己那時候到底說了什麼 XD。

課程前期

關於課程的詳細內容不會在這篇文章贅述,可以參考課程大綱,就如大綱所寫,真心不騙。

前期一開始學了框架前應具備「脈絡」包含:程式基礎觀念、常見的前端技術、AJAX、資安跟後端基礎。由於出發點就是想搞發明,從一開始學到 shell script 就很想要開發 side project,當時有用 Timely 追蹤自己的軟體使用時間,就用 shell script 開發了一個可以紀錄的工具,可以新增、統計,然後透過 +++++ 來視覺化。後續學到 API 之後,改用 google api 來做一個統計的網頁頁面,

到了十五週又有一次進化,做成一個利用 Bootstrap 跟 jQuery 搭配 D3.js 做出更複雜的工時資料視覺化的小專案。

從 side project 就可以看出來這是一堂工具演變的過程,在這個過程中我們學習到不只是工具怎麼使用,還包含:技術為什麼存在、後續的技術改善了什麼問題。

到了 PHP 學到了 OOP,除了應用 OOP 在 PHP 的留言板裡面,也回去重構串接 API 、小遊戲作業跟自己碩班的專案網頁。在課程之中也有超級挑戰題,可能是一些更複雜的技術、或者資工的演算法題目,在這之中嘗試了 D3.js 等課程之上的內容。

這些重構的、額外的作業老師也願意重新做 Code Review,所以不止學技術、也學怎麼學新技術、跟什麼是好的程式碼。同時課程中也不乏機會,跟老師合作開發 R3:0Challenge 挑戰遊戲 是最有成就感的高峰,開發出的東西被使用、看大家的心得,給了我很大的動力,謝謝你們玩這個遊戲。

謝謝所有有玩的朋友們,跟你們的攻略與心得

加上過程中我們有很多回顧自己程式碼跟看別人作業程式碼的機會,包含:複習週、學習系統、其他人的課程 repo 等等,這些內容大幅提升自己省視自己的能力,也可以讓自己從別人的心得學習別人的思路。

總言之,前半段的課程一整個就是學習興奮期。

課程後期

在後半段的課程將會慢慢銜接進框架之中,開始了解 javascript 底層的原理而且接觸各種工具來解決網站工程上的問題。

後續在進入環境架設的環境一度低谷,摸了 Docker、CI/CD、系統環境跟 javascript 原理拖沓很久、甚至鑽牛角尖,在到框架換腦的過程也卡了一陣子,那是我最灰心的時候,覺得自己怎麼搞的。但時間如果拖得太久,老師會適時的透過 Slack 關心,給一些學習建議。

更重要的是老師很了解拖延症這件事情,極力宣導面對拖延症的應對進退,讓你可以平靜地看待自己,調整自己的步調,而不會陷入罪惡感圈圈。與同學的互動也是良性的,在社群設計上有點距離感但又能交流的學習系統讓我們不會一直去比較彼此,因為你了解對方怎麼做到、知道對方也不容易、這時候是不是很忙又或者只是剛好在休息。

營造一個專注在自己成長但又能砥礪的環境,讓人可以延續學習下去將課程更困難的內容完成。

碩班讀書會

BTW,我一定要提到溫馨的碩班同學,在那時所上資訊組的同學們組了一個讀書會,我很感謝他們願意讓我一起參與,甚至聽我分享弱弱的內容,那時分享了以前學過的 Canvas 跟老師文章深刻分析的 Hoisting 等等,但說真的,在思考跟理解技術上都不如他們深刻。尤其當時的讀書會時我還不了解很多工具,他們講的都只聽得懂抽象的觀念。

Redux Dispatch 機制

但從資訊組同學身上我學到本科系的人會怎麼深入去理解技術,例如:在討論 Redux 機制的時候,他們是開一個 demo Redux 概念的程式碼一行行的討論怎麼 dispatch,到了幾個月後等到自己學完 Redux 的時候,再回頭看當時的討論,這時候才了解一個工程師對技術應抱持的深度。

專案時期

就在撞牆期的灰暗低谷中,回到初衷開發專案是推進我的另一個動力,完成 Final Project 跟把課程作業升級成個人網站,雖然這兩個專案還沒盡善盡美,但這兩個專案花了很多時間來思考,怎麼樣才是自己想用、別人也能用的產品,是兩個第一次從研究到開發自己實現的專案。

在個人特效網站裡,部落格網站被設計成特效網站,從本就有的前端 React + Redux + Redux-Observable 與後端 Node.js + Express,過程中其實迭代了許多想法,特效改來改去,然後把以前接觸過的 Canvas 跟 SVG 應用在部落格裡面,再學習 ReactTransitionGroup 的使用方式,試著做出有 CRUD 的視覺特效個人網站。

課程從後端到前端都有真是太好了,很慶幸自己也有把後端的部分完成,否則不會有那麼高的成就感。

到 Final Project 真的是完完全全的從以前的研究經驗出發,做了自己從很早就想做的影音筆記服務,參考著 Product Hunt 各式產品的完整度,來進行設計跟開發,串連 Youtube API 一樣前後端開發完成了一個有點產品感覺的服務。後端則嘗試使用 Mongoose 接觸自己不熟悉的 Mongo DB,並用 jwt 編碼 token 用 Axios 來去對 request 夾帶 authentication header。

在兩個專案中熱情高漲,畢竟這就是我的初衷,但也深刻的感受到「一路從說要做、為什麼做、要做什麼、然後做出來」可能再多的熱情都有枯竭的時候,當你希望一個東西好起來真的是永無止盡,視覺、體驗、程式碼每一個環節相扣又都可以更好 ……

如果放棄的話,作品就完成了。

小結

也許看到這邊會覺得:「這跟一開始說的要不要放棄有什麼關係?」

我想說的是,可以嘗試努力 探索自己喜歡這個領域的理由、學習這個領域的方法、不僅僅是學習領域本身,曾經我以為寫程式就是在寫各種演算法題目(不過這個還是超級重要)然後我就一直寫題目,花了很多時間,這個時候週遭的人包含我自己,都覺得是不是不適合寫程式了?也曾經覺得我已經報名 XXXX 課程,是不是只要認真上完就可以學會,也投入了很多時間,認真上了每天寫七小時但為什麼還是很綁手綁腳?

但是,程式其實可以從技術脈絡開始學習、而不是一定要從最新的工具開始,也有跟互動設計緊密結合的一面、不一定只有程式解題。說到這邊,我想補充不是不能放棄,沒有什麼事是必須怎麼樣的,但如果你選擇探索,那探索不是只能就學會這件事去做。

總之,回到計畫,如果要我說這是一堂什麼課,這是一堂讓你能做到:

發而不中,不怨勝己者,反求諸己而已矣。

這樣態度的一堂課,要能克己、真實、獨立面對學習甚至面對人生各式各樣的事情都不容易。所以課程設計、社群互動、老師跟自己的互動促成了這種良性的學習態度。

這也讓我意識到,帶走的不是只有學寫、學怎麼學寫還包含學怎麼學。讓我喜歡上這種主動喜歡上一個領域的感覺,這比轉職本身還要難能可貴。


回顧

關於求職的故事將留給下篇:求職天堂路,這邊最後會回顧在計畫中的開發學習方法。在這次計畫中,學習的策略有三:

  1. 專案導向:希望所有的技術應用是以需求出發,像是:為了記錄學習時間的 Side Project、用 gulp 建置 pug + SASS + ES6 類似 codepen 的切版環境、Final Project — 影音學習筆記等等都是出於這點。
  2. **廣度優先:**希望可以在初學的情況下,盡量多接觸不同技術,老師會一直丟出新的刺激,如果時間允許都先了解一下技術脈絡後嘗試使用看看:Docker, Cypress, Travis CI, jwt, Mongo 等等這些技術都是老師拋出來的挑戰,盡可能在不同專案中使用不同技術。
  3. **時程兼顧:**希望可以超前但不要 deplay 於課程原本規劃進度,在最後幾週同時接觸前後端框架讓進度緩了不少,但總的來說時間是對心理狀態的一個限制器,一旦超過越來越多就會慢慢放棄,只有一直緊緊跟著保持壓力才能走到最後。

學習方法

課程中實作需要新技術時,我會先找該工具的入門教學跟回答五問題,根據入門教學使用,並延續著在課程中學到的技術脈絡,例如:接觸 Vue 的時候就會查關鍵字「 Vue」 + React 曾經遇到的 「State 、props、Props parent component 傳遞、componentDidMount 」等等問題,同時一邊看 Document 關於這些內容的官方說明,慢慢的做出一個最小具備 CRUD、非同步操作的小專案,接著才慢慢放大成自己要做的結果。專案擴大的過程中會看見程式一些細節的「模式」,像是:常設定的參數等等,就隨觀察跟用到來繼續搜尋。

學習技巧

剩下除了一直實作外,可以稱之為技巧的大概有兩個,一個是小鴨學習另一個是問題模板。

**小鴨學習:**課程中很強調心得、我自己還會畫圖。心得一開始用 Markdown 檔案,後來嘗試 Hexo 發心得也有用過 Notion,到最後覺得還是 Evernote + EverTool 最簡單最好。畫圖有時候用 draw.io, miro 有時候就是紙筆,但無論哪一個視覺化思考程式的過程很重要,因為這可以讓你釐清哪裡出了問題,像是有一週的作業要一句一句的寫下程式怎麼跑,還有後續在釐清一路從 React, Redux 到 Observable 整條 action 流動的過程,這樣的技巧對於演算法題、或未來重構的時候都很有幫助。

**五個問題:**我想在實際有開發經驗之前,我們不可能對技術了解的盡善盡美,但至少在工具的選用上我們要知道這五個問題的答案,幫助我們定位工具的脈絡。

這個技術出現以前是什麼樣子?那時候碰到什麼樣的問題?這個技術的出現如何解決問題?所以這項技術應該如何使用?跟以前的解法比起來,差別在哪裡?有什麼優缺點?

學習反思

難得有一個完整的學習計畫,藉此來反思 自己的學習方法 是否有所調整:

怎麼下關鍵字,就是知識的眼光

如果沒有好的老師給你一顆樹的雛形跟眼光,你可能不知道什麼是好的程式碼?會花很多時間才可能知道,用新框架為什麼要查 props 跟 state?要查 componentDidMount 的判斷?你可能只能下「 Vue + 入門」這樣的關鍵字,然後複製貼上一個 Vue 的 todo list 範例程式碼,裡面可能有用到包含但不止於上面提到的這些概念、但很難推敲出這些功能的原意。可能不會知道為什麼框架有 state,需要有 props 來傳遞。

甚至要怎麼想到上面這些問題?這些都是老師帶來的眼光。

五個問題,思考自己獨特的知識樹

透過五個問題思考工具在你知識結構中的位置,因為老師不可能告訴你全世界,所以當在課程之外學習時,可以思考新學習到的工具與原本知識樹的關聯,進一步建構出自己的知識樹。

像是:你學到 mongoose 那他的定位是什麼?是跟 Sequelize 一樣類似屬於抽象封裝的 ORM / ODM,只是封裝的是 NonSQL DB — MongoDB 的操作,那為什麼需要這樣封裝?因為可以讓資料庫的操作更通用,大家不用都要學各種資料庫的語法,但統一的操作方式可能會浪費效能等等。

而透過跟資訊組同學的互動,發現甚至應該去了解裡面的邏輯,例如:在學 React, Redux, Observable 的時候就花不少時間圖解了每個步驟是透過什麼 function 來實現的。

透過刻意練習跟廣泛嘗試工具來累積事實

這些經驗就是讓這棵知識成長的事實。透過在修整程式碼或撰寫 Unit Test 會親自意識到為什麼不好測試?可以怎麼讓程式碼更優雅?這種體悟慢慢累積經驗讓這顆知識的樹更加紮實。並且對工具的細節會有更多的體悟,像是面試很常會問的:

「你覺得 Node.js 有什麼問題?」「 javascript是非同步語言,如果進行非同步操作沒有透過 callback function 的話就會卡死在那裡。」「那你會怎麼處理?」

如果有體驗過 callback hell 有多難閱讀,你可能會不惜去研究非同步操作的做法,然後一路從 ES6 的 promise 講到 ES7 await/ async 語法糖,並寫出比較可愛的程式碼。

接著對方又會問說:

「那如果我今天有 for loop 寫入一堆會員資料你又會怎麼處理這一堆 promise?」

所以你又想到過去在 insert 一疊資料的時候,你用了 promise.All 來處理 blahblahblah。這些就是經驗,很難透過先讀過來累積的判斷,甚至同樣的問題反覆嘗試又會有不同的判斷又是一種思考。

嗯,寫到這邊,看起來好像目前這個方法還是可行的。不過在原本的文章中,自己針對設計學習所整理的事實比較多是閱讀資料、思考比較多是實踐,仔細想想之後可能只是不同領域具體實現的方式不同,當然也可以透過看別人程式碼來累積經驗、自己實作來建立知識脈絡的樹;但我在初學的學習的過程比較多是實作來累積經驗,跟透過閱讀與思考建立知識脈絡,或兩者參雜或多或少都有。

而且這個方法也有優化之處,在比較熟悉工具之後,應該要透過詳細閱讀一些經典或詳細閱讀看看工具的 Document 來鍛鍊自己的眼光。

也就是說一開始透過一點敘述性記憶(觀看課程影片)加上累積大量的程序性記憶(肌肉練習)來學習,未來還是要將程序性記憶(停止反射的肌肉練習)轉換成敘述性記憶(思考整理所學或閱讀其他經典著作)並從中調整,選擇需要刻意練習的部分與增加可用的工具。

管理方法

在課程的資源管理上,分成知識管理、時間管理跟品質控制,而管理方法上崇尚簡約,盡可能選擇簡單的工具:

  • **知識管理:**管理學習資料的方法,我自己喜歡用 Evernote 搭配 EverTool 做 Markdown 筆記,筆記分類成 TODO / NOTE 兩個筆記本、Tag 都是 MTR 這個專案,並根據五個問題來寫筆記。而專案開發的靈感就會截圖存在 Eagle 裡面,當作未來想寫的功能的素材。未來 Evernote 的部分想要參考同學的做法做成 Anki 卡增加對知識的記憶,不然遇過一個很尷尬的問答是:

「Stack 是什麼?」「像盤子一樣的資料啊,從上面放進去從上面拿出來。」「……」「就是那個什麼 ILFO 還是 LIFO …… 抱歉,我忘記縮寫了。」

  • **時間管理:**也許該稱做專注力管理,一開始專案還小就是埋頭寫,但在後續專案範圍比較大來要篩選應該先開發的功能並排程。有嘗試過 Notion 覺得功能繁複不夠簡潔,所以回到 Evernote + Google Calendar + Google Task。

先用 Evernote 列一下專案的規格跟需要開發的功能列表。接著在開頭加上專案縮寫後,放進 Google Task 的 TODO 來進行開發並放在每天的 Google Calendar 中。FIXME 放寫完但出現的 Bug、TODO 放要做的新功能。

包含 user story, data model 到 api 等資訊

  • **品質控制:**了解自己的狀態跟工作時數的方法來確保自己有沒有怠惰,會設定一個專注目標,例如: 8 小時,然後用 Timely 自動記錄軟體使用時間,並在睡前手動復盤統計統計在 Airtable 之中,再用自己寫的小服務跑視覺化看時間運用的狀況。如果當日預定的事情完成、則無視時間狀況,若未完成、則看與預定時間的關係。中間斷掉一陣子,最近在嘗試換統計統籌的地方,希望統籌在 Google Calendar 裡面。
  • **其他輔助:**對了!在中後半段時,我刪掉了社群媒體的 App 並用了 TodoBook 擋掉了 Facebook 跟 Twitter 頁面,非常想要分享給大家這個 Chrome Extension。補充一下,自己還是會參與社群媒體,例如:臨時想要發 IG 廢文會把 IG 裝回來再刪掉,或用電腦時點開特定人物的發文看看朋友最近做了些什麼,但 TodoBook 跟刪掉 App 擋掉了無限滾動的時間,誠心推薦大家。

動機管理

過程中會累、會拖延。大多數時候,我會追求客觀事實來提醒自己,像是:透過時間紀錄來意識自己的狀態、裝 Mailtracker 看信件的狀況修正內容,但有時甚至連不要自欺欺人都做不到。

生理層面相對簡單,不一定要穩定但要睡飽、適時的都市散步跟睡前冥想,這些是在心累的時候會先第一嘗試的事情。

如果生理改變不了心理,這時接著尋找一些東西讓自己撐過去。例如:課程中,老師每週的隨意聊 — 大概週末週一會有激勵人心的一些留言,讓自己又打起了一些精神;以及自己也有存一些很喜歡的雞湯文、像是:重看全職高手小說自學四年日檢 N1 與多益 TOEIC 975 系列文延畢做自動飲料機的一年、Blue Period 漫畫跟想到以前做繪圖創業的學長、以前很厲害的開工作室的同學、資管的朋友跟建築的朋友這些都是沮喪的時候就會打開來重看或靜心思考的故事。

這些 Role Model 會讓我再努力一下,除此之外 Eagle 裡面也存了一個 Happy Tag 把自己喜歡的東西,像是一些:二創插圖、柴犬、迷因等等的圖片,讓自己開心一點。在寫程式的時候基本上也不會聽程式的廣播,重聽了超多次的 LNG 精華 XD 再不行就好好喝一杯可樂。

什麼樣的東西讓自己開心又無傷大雅,這也是值得去探索的。

復盤檢討

每一個缺點都有好有壞,可能是某些優點的反面。

課程中過度樂觀許下很多願望,可能因為有那麼多願望才能比自己預期的做到更多。但也希望願望跟實際情況的落差可以縮短一點,更正確的評估自己的狀況。這部分可能希望透過更多前期預測跟結尾追蹤比較來改善自己看待自己的準確度吧。

同時也希望自己更細心與毅力,中間有一度低潮但我覺得這種過程是可以避免的,也許因為這段休息得到很強的專案能量,但也希望即便是休息也能維持最低限度的品質,也就是所謂的配速的哲學。不過我也學到斷 Combo 與放棄是不同的,過去我因為斷 Combo 有很多自責,關鍵是怎麼在長期中分配自己的能量,目前還沒有具體的想法,但可能會想找一些有毅力的同學聊一聊。

最後一點,這是在交流會後的啟發,看到同學樂於分享、並把學習的過程跟專案累積起來公開並經營自己,讓我覺得大家都好厲害,雖然很喜歡分享,但在這一塊自己還是不夠、太彆扭,要怎麼讓自己選擇更有效率的分享過程,不僅僅只是私底下、非公開的分享,所以在嘗試努力一下之後,才會有現在看到的這篇文章。

小結

我很喜歡老師的這句話,必須再提一次:

…… 不是要跟你說你要一直努力,我只是想強調「一直練就會變強」這件事 努力是你的選擇,我不會要你一定要努力。但至少不能欺騙自己。你不能說著「我想跑全校第一」卻不練習跑步,要嘛就放棄想跑全校第一這個想法,要嘛就乖乖練習跑步,不能什麼都不做卻還妄想著不勞而獲的成果。

寫程式真的是一直練一直練就會變強的事情,就像家人身教言教傳達的程式是可以努力學會的事情一樣,有些技能看起來好像遙不可及,其實只是你騙過自己,要怎麼反求諸己,是一輩子的學問。


尾聲:下一步將走去哪裡?

在拼勁全力後以為就是終點?不,慢慢認清努力只是起跑點,接下來還有很多令人期待的挑戰。

好不容易補上開發這個洞,在 Final Project 也體驗到一條龍從需求到開發的快感,我希望也可以像老師一樣有某個想要解決的問題、運用自己的技術來實現。在我來看老師是厲害的前端工程師也是成功的課程與服務設計師,這整套系統完整解決了不同階段跟表層到深層的程式教育問題。雖然老師總是很謙虛 XD

所以最後也都丟這類型的公司,有機會可以做到很多很多,可以參與產品跟開發,可以親手實現的新創、全端或研發部門,希望自己可以保持著在這邊的心境走向人生的下一個階段。

而在職涯上希望可以持續做出令人印象深刻的產品,所以必須精進開發直到開發與設計同步為止;自學上希望可以嘗試學習其他一直想學習的新領域,像是:畫畫跟語言,並思索當設計到開發我已經踩上期跑點,有沒有更有效率去精進跨領域自學的方式?

關於可能不只十年風雨飄搖的故事暫時就到了這裡。想想就程式這件事一路走來,只是放不下罷了就不禁撲哧笑了出來。總之,這個一切的一切想要感謝老師、家人跟同學,這麼大的人生轉變少一個都不會成真,對於未來的諸多可能,我只想說:

我比誰都期待自己的作品。