大概分享一下我到底是如何開始打Code的,主要以時間線來書寫:

國小

我只對畫畫和Lego有興趣,從基本的馬達控制裝置作品到接觸到NXT機器人(可以裝上很多可控制馬達、不同的感應器,如超音波、紅外線)再搭配Lego的積木架構組裝作品,如沿黑線行駛的自駕車、模擬掃地機器人行走路線的機器人。

國中

都在讀書,國一、國二還有在畫畫。完全沒有接觸到程式….

升高中暑假

哥哥建議我可以利用暑假的時間開始自學程式,一開始在Codecademy上線上課程,因為想自己寫網頁,在網站tag為website的地方有HTML(那時候對HTML是什麼完全沒有概念,以為單純會HTML就可以寫網頁,其實半對半錯?)

大概學了兩天,我覺得這跟我想的「寫程式」怎麼不太一樣…,所以找另一個程式語言,因為Python在近年竄起(網路上的程式課程廣告都是打Python,也聽說很多專案都是Python寫的)就找Python來學。

當時是在彭彭的線上課程開始學python,當時就按照影片一個一個步驟打程式碼,從基礎的變數、運算子、迴圈、陣列、常用到的資料結構…看到打的程式碼可以跑,自己按照當次影片教的內容寫一些小變化、更改內容也能正確執行,非常有成就感!(還好那時候沒有在安裝python、pip或一些module有問題,不然應該會被搞到瘋掉就沒有然後了www)

就大概學了半個月到一個月把課程影片都看完,學會Python基礎語法(當時的我傻傻的以為這樣先學了Python,在高中就是coding master了…)所以沒有繼續學其他語言或寫一些小project(然後剩下的暑假都在刷廢 哭啊)

高一

高一當然開學要決定的就是選社:音樂性社團,我喜歡聽歌但是不唱歌、玩樂器;團康社團:有妹子但是會變成猴子;靜態的社團就只有電影、自科、資訊了。高中選電影真的太無聊,對自科沒興趣,那就是資訊了(題外話:那時候不知道為什麼被系統分發到國樂社,真的超級慌張,還好有轉社成功。如果一開始就呆在國樂應該有料

我以為的資訊社,一堆大佬討論聽不懂的東東、會主動討論、可以認識一堆對資訊有興趣的人。現實的資訊社:教學長在前面用投影幕教C++語法,學長在後面打LOL、誰都沒認識到,只跟同班同學坐、社課有時候打code、寫講義、打荒野亂鬥

我是在加入資訊社後才接觸到C++的(所以應該算高一上?)也有開始在Zerojudge寫題目(但是整個高一應該才寫 50 題吧… = = )簡而言之,高一時我知道未來方向是資工,也有稍微打打code(真的是稍微而已…)但是大部分的時間都浪費了,當時也沒有明確的學習方向,也不知道如何有系統性的學習。

選幹

沒有其他社團還要面試甄選之類的…我們真的是填個表單(闡述對資訊社的想法,對未來的規化…),可以選想甄選的職位(正副社長、教學、總務…可複選)當時就抱着「試試看」ㄉ心態在「社長」的選項打勾(其實覺得應該只能當教學)然後就當社長了!?(現在來看是要感謝上一屆的學長姐有選我)

在一夕之間從一個普通的社員變成社長其實心情頗複雜(我可以勝任嗎?要怎麼經營?教學模式?)但是我很明確知道我的軟體實力還不夠當社長(那時候是真的沒啥實力,只會Python跟C++基礎語法,連一個Project也沒有,也不知知道演算法競賽這種東西)

清大程式解體營 IONCamp

與選幹差不多的時間,我報名IONCamp(看到學長分享在社團就順手報名了,上面的要求只有說要會動態規劃,但是我看成動態陣列…)也有錄取(這時候的實力是會STL常用的線性資料結構,非線性資料結構還不太會用)。營隊報到那天我算早到的,簽到就給你一本超級厚的橘色講義(裡面全部都是我沒有看過的東西,動態規劃、RMQ資料結構、圖論、數論…)人越來越多的時候,我看到來的人都穿着比賽送的或資訊活動的衣服,討論着一些從來沒有聽過的專有名詞(像那時候一直聽到 Dijkstra ,然後那些大佬在討論Dijkstra的正確發音?)

不出所料,完全是被電爛了:每天的上機都是掛蛋,隊輔也來關心我的狀況(那時候真的壓力暴大,我是真的什麼都不會,講師講的內容都是第一次聽過,完全沒辦法在上機用運)營隊也只有認識同房的室友:一個APCS 5/5 又進 TOI 1! 的大佬(但是他超級謙虛),另一個台北的自學生(大我一屆,實作實力點滿,後來直接去工作,真的超級猛…),最後一個是彰中的同屆生(然後他學長超電,全國賽等級那種)我完全不敢跟他們提到我是「資訊社社長」…

IONC也是我的轉捩點,那時候我才知道我是程式新手小白(我原本以為:會Python,C++也學到STL,應該算猛了ㄅ)被電爛後消沉了幾天,也只能開始啃IONC的講義,開始暴刷題。(這時候才算是真的全心全意投入演算法競賽)

高二上

接下來就過這每天都帶著筆電上學的日子,在下課或廢課就開始刷題或學新的算法、資料結構,努力讓自己符合「資訊社社長」應該要有的實力。放學回家也是打code,同時還有社團的教學講義、範例要編(那時候都在教C++語法,也順便複習一下基礎)

APCS的噩夢開始

第一次參加APCS,沒用過code block還有電腦設定+那時候的實力也的確不夠,只有考觀念3 / 實作2 ,然後同班同樣是第一次去考的同學:觀念4/實作4…真的直接懷疑人生+被嘴爛(我記得是實作第四題考LIS那次,現在來看那次第四題真的裸體超水。但是當時:「LIS是什麼,這是全國賽等級才會的吧QQ」,其實這算是經典基礎DP而已… )

打code的成就感

剛好班上也有同學主要研究演算法(也應該說幸運,武陵真的資訊沙漠)可以討論算法概念&題目,那時候第一次用指標寫出「樹」的時候真的超有成就感(感覺離大佬又近一步,這時候應該是高二上10月左右?)

這是候也會報名一些台灣程競圈知名的比賽,HP CodeWar就是其中一個。印象比較深刻的是,那次有一題Grid Graph 的DFS/BFS(1是陸地,0是水,問圖有幾個島嶼之類的),但是對當時的我們是完全不會實作的難題(現在來看真的算水題)

高二下

一樣是打code + 社團的routinue,不過後來因為疫情在家上課(接近暑假時?社團也少了三堂吧,也沒辦法好好交接,不過有一個接超級多幹部的學弟主動接社長,還算頗放心),就變成幾乎都在打code,然後又發現學測將近ㄌ…

還是吃土的APCS

中間又陸續考了幾次APCS,但是觀念題都是差一題4 ,實作都是說不盡的吃土(只能後測真的太難受了,對都在online judge刷題的我不適合…)APCS 3/3大概就是一個,我跟教授說:「我會演算法」,教授be like:「你認真??」還是只能繼續啃算法,不過這時候發現AP325這個好東西,裡面的題目真的每題都很有水準!

高三上

學測又更近了,不過偶爾還是會寫個幾題維持手感(畢竟APCS還沒考到一個滿意的分數,也想代表學校參加北二區),剛放下社團又因緣際會知道武陵資訊讀書會的存在,還進去當算法班講師www

雖然校內學科上機電腦也問題直接重啟兩次…但還是擦邊代表學校參加北二區(也只有佳作,跟全國賽大概差了200~300分,總共也才7題w)成績也算預期之內

11月單槍匹馬去考的APCS終於考到觀念5/實作4了!(不過這時候不好好讀學測還在打code也算是瘋子ㄅ)至少演算法競賽終於正式告一個段落了

結語

大概就是這樣…

未來會在寫詳細一點