# henrybear327 (曾俊宏) ###### tags: `linux2021` > 旁聽生 ## 學歷 * 國立中正大學 資訊工程學系 (2014-2018) * [EPFL Master of Computer Science (2021-)](https://www.topuniversities.com/university-rankings/university-subject-rankings/2021/computer-science-information-systems) ## 聯絡資訊 * email: `henrybear327@gmail.com` * github: `henrybear327` ## 2021 春季班 個人評量 ### 作業及筆記 * [作業 4](https://hackmd.io/@henrybear327/B1ztby14_) * [程式碼](https://github.com/henrybear327/2021q1-Homework4-quiz4) * [Kernel patch - 改錯字](https://lkml.org/lkml/2021/5/17/2088) ### 所見所聞心得 首先,真的要感謝老師,對於帶旁聽生這件事情,真的是一點都不馬虎,要求一樣是很高。跟老師約時間討論,沒有一次被拒絕。常常主題對上頻率後,都講到超時。尤其討論 thread pool 那次,講了快兩個小時才收工。再次感謝老師! 當初打算要旁聽這堂課程時,就耳聞過課程是非常的精實的,果真名不虛傳!我覺得老師非常的不簡單,總是能把 Linux kernel 裡頭非常複雜且長的程式碼,從幾千幾萬行,精簡到幾百行變成小考,並且埋下伏筆讓我們去改進跟發揮。從 thread pool、synchronization、memory barrier、RCU、到 SPSC 跟 MPMC,每一個主題背後都有很多很多的議題可以繼續研究。 寫作業的文件也是個很有趣的練習,把讀懂的東西用文字陳述,並不簡單。寫作的過程,被老師糾正了很多用詞,可能、應該、我覺得等等,都是不好的敘述。用詞之外,也體會到了做實驗驗證的重要性,空泛的說類似「應該是有很多人同時要 acquire lock ,所以導致效能下降」等沒有實驗證實的推論,不如遇到疑問就動手做實驗去驗證他,再提出更多假設跟實驗去嘗試解決問題。 老師對於 code review 的要求真的很高,讓我學習到了正確的提交程式碼的精神 - 除了程式碼結果要正確,commit message 也是很重要的。 除了理解 Linux kernel 核心的運作,課程中老師也提到了不少系統的演化史,畢竟光看到現在的實作,有時候也會摸不著腦袋。有了來龍去脈的背景知識後,很多概念就可以更快速的理解了。了解了歷史,也認識了不少偉人,對於核心可能的發展方向,還有哪些領域可以多關注哪些人的動態與文章,現在也比較有概念了! 這學期,從純舉燭到比較會挑重點看,這就是這學期,最大的成長。 ### 自我評量分數 (1 到 10 級分) 我對於自己的表現,給予 6 分。只算免強及格。 **誠實面對自己**。光是對於 C 語言的掌握,在上課時就真的是感受到那巨大的鴻溝。對於系統程式的理解,在經過了這一學期,也提升了很多。 課程剛開始的時候,我期望我是可以每一週的小考跟作業,都可以扎扎實實跟好跟滿。但是每次總是下班回家後就偷懶一下,常常就時間就浪費掉了,也讓進度越來越難跟上。 老師的課程資源很多很多,在接下來的幾個月裡,每天就是花一點時間,把老師準備的影片跟教材,還有程式碼,都一一學習,一一跟上。 這堂課,只是一場馬拉松的開始。別忘了老師課堂上一直說的:今天不學,明天只會更難。Linux kernel 程式碼已經 2800 萬行,還有本錢猶豫嗎? 希望有一天,可以對 Linux kernel 進行有意義的程式碼貢獻,而不是只是在那邊改錯字。 ## 雜記 謝謝老師這學期帶給我的鼓勵,讓我找回了很久沒有的動力跟信心,也才又找回了往前衝的動力。 ### 從履歷說起 有空的時候,打開 word, 嘗試做一下自己的第一份履歷出來吧!很快的你會發現,糟糕,怎麼這麼空,連一半都寫不滿。 有危機意識,才會有動力,對吧?不知從何下手,那就開始做 side project 吧! 做 side project 不用怕失敗,更不用怕做不完。凡做過必留痕跡,失敗都是走過的最好證明。 Side project 其實很好找,也不用擔心實作的東西是既有的東西。我自己是都以自己為出發點,去找題目。 嫌 Moodle 爛?就自己動手幹一個出來看看,就知道問題癥結點在哪了。你也會 refactor 到最後發現,程式碼會越來越像 Laravel 這種框架所使用的 design pattern,畢竟 network request 進來的 lifecycle,就是需要那些資料檢查跟處理。 嫌期中期末考、學期成績等等要手動刷很麻煩?自己做一個爬蟲,爬到資料後推到 telegram 或是寄送 email 到你信箱。 核心設計課程的小考幾乎每一個也都有很大的擴充空間,全做的話,side project 直接破表,對吧? :) 有很多生活中你的不滿或是不便,都是你的好主題。當然,如果有對於社會或是社群有可以有貢獻的 idea,那更好啦! Side project 之外,也可以參加一些競賽,比如說 ICPC,充實實力之餘,也可以強迫自己學習,交一些朋友! ### 找實習跟工作 即使你準備好了,機會不會從天上掉下來。大家常說機會要靠自己爭取,但是你付諸行動了嗎?:) 不要怕挫折與挑戰!我大學剛畢業時找實習,想說一定要利用機會到國外看看。一個月內,投了 >50 份履歷的國外的公司,也只有收到一間的回覆,但,這也就是我現在任職的公司。 如果你也不確定你想做啥,去實習就是一個好的機會讓你去了解自己。不排斥的公司職位就可以投了,也不用擔心語言的問題。面試的過程,就已經是個很好的學習和反思機會,畢竟過程中,你會對自己的缺點跟優點更加了解,你也會更加了解市場。很多時候,沒有失敗就不會有動力對吧?像說面試英文太差被電爆,那就趕快化悲憤為力量,趕快衝一波。 心態保持樂觀,要越挫越勇!跨出第一步很難,但你連第一次面試都沒有過就打退堂鼓,不是很可惜嗎?別讓幻想文終究還是幻想文。 ### 申請碩班 申請學校不是一天兩天的準備而已,都是需要長期耕耘的。 跟申請工作不同的地方是,申請學校時沒有面試機會可以讓你扳回一城 (沒筆試也口試),所以平常累積的不管是競賽經驗、 side project、open source project 貢獻等等,都會是關鍵的因素。 我在中正的系排名不是特別前面(沒記錯的話是 ~7/89),GPA 也不是接近滿分 (~4.5/5)。既然不是最聰明也不是最突出的人,那就是要拿努力跟毅力來補了。 沒啥做不到的事情,一次不成功,就再接再厲,準備好之後再戰第二次就好啦!不用怕失敗~ 當時在學校的時候,有機會就多做一些自己有興趣的大小 project、參加 ICPC、有空也讀讀英文。我是已經工作了兩年才去申請碩班,那在工作的時候,有機會的話就參與一些有趣的專案,然後比人家多投入心血去研究,不是只是 feature 做完了就收工,這樣也就會多了很多經歷跟資料可以寫在申請資料裡(雖然業界的成果不見得會有 source code 可以展示,但是學校也只會看你的申請資料上面寫了什麼,不會跟你要程式碼啊!凡走過必留下痕跡,從你的敘述也可以知道你的投入程度了)。 坐而言不如起而行,雖然說離開舒適圈不容易,但是年輕不冒險,待何時呢? P.S. 歐系的學校,比如 EPFL,一學期的學費跟台灣的國立大學其實差不多,倒是[生活費](https://www.epfl.ch/education/studies/wp-content/uploads/2020/07/Flyer-budget-non-CH-2020-2021.pdf)會多一些是真的。 ### 感謝老師 去工作後,很多時候你可能會失去目標或是倦怠。畢竟,不再是老師作業一個接著一個出,一直向前衝的動力可能會消失。上班也常常不是做 feature 反倒都是在解 bug(而且 deadline 不像作業是同學做不完而往後延,而是這個今天就要囉~所以提前)。與其抱怨工作,不如另外找目標去充實自己。 回頭來修 Linux 核心設計課程有趣的地方,就是每週進度都扎實的壓著你往前走。工作的內容有時候很難說你會有大型成長,但是你有這麼多網路資源,又有 jserv 這種會一直激勵你的老師,與其抱怨工作無聊沒有進步,下班後的你,都在幹嘛呢?好課,不跟嗎?:) Linux 核心設計課程是真正的與業界不脫節的課程,能一路撐到期末,即使只有中間的幾個 project 有讓你熬夜通宵的做,也是一件很值回票價的課程了。老師的 C 語言跟作業系統的文章很多,又都很深入,concurrency design pattern 很多都可以在工作中用到,更不用說很多系統性的概念,在設計架構時,常常都可以引入。一學期一定學不完所有的知識,但是老師的影片都可以一直重看,慢慢的消化就好。 記得學期初剛開始跟旁聽課程時,那時心情其實在滿低谷的時候。每一次跟老師約時間討論作業,瀏覽器的 tab 都是一開下去常常就十幾二十個,都要消化好幾天才會消化得完。但是工作後也很久沒有這種燒肝做研究的爽快感了,所以反而是研究得很開心。 謝謝老師帶著我這個跟老師一次面都沒有見過的旁聽生,從 Quiz 4 加入跟老師一起討論 nginx source code,到現在跟老師一起討論 Linux scheduler 的實作細節,收穫真的好多。你只要不玻璃心,不怕老師激勵你 `^_^`,就不怕找不到向前走的動力了。 工作不是只有台積電跟聯發科,其實老師的課程也帶著大家認識了很多有名的人跟有趣的公司在做很多有趣的事情。野心大一點,積極一點往前衝,其實機會很多,不要被自己的視野跟思想給侷限了! 一起加油~