> For the complete documentation index, see [llms.txt](https://chen-kunyu.gitbook.io/os-code-reading/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://chen-kunyu.gitbook.io/os-code-reading/master.md).

# 作者序一：陳坤裕

獨自坐在電腦螢幕前，滿腔熱血想要探索開源專案原始碼，企圖了解這些原始碼是如何組合、相互作用，進而成了現在你我最常用的工具。然而這滿腔熱血，卻在打開程式碼後降到冰點。因為不知如何切入，且顯現在眼前的程式碼與專案架構是那麼複雜與龐大。說是天書似乎也不誇張。

上面一段描述，相信是不少程式初心者遇到的挫折。實話說，筆者也遇過如此挫折。進入職場後，時常好奇工作上使用的軟體或工具背後，究竟是如何撰寫成。因此筆者決定跟開源專案原始碼來一次正面對決。看不懂的，想辦法理出頭緒再看一次，從某角度切入若不行，就換個角度再來一次。想不到，很多看不懂的地方漸漸看懂，甚至體會開發者的巧思與用心，一次次令人拍案叫絕。精彩程度好比看漫畫名偵探柯南，在盡力蒐集線索後，可能卡關卡很久，但只要不放棄，就會在某個時刻這些線索突然全被串起，找出關鍵，進而破案。另外，此過程也很像考古學家，針對埋藏在地底下的古物，考古學家以刷子，輕輕的拂去表面上的塵土，考古物輪廓越來越清晰，最後出土得以展示於世人面前。你說，這樣的過程是不是很有趣呢？

光是看 code 本身就這麼有趣了，那過程中，我們可以學習到什麼呢？我們可以學習好的 design pattern、好的 code snippet、好的開發框架等。就算看的程式碼都是負面案例我們也可從中借鏡，提醒自己莫犯同樣錯誤。相信認真走過一次的人一定可以體會筆者所說。

本文章目的有二，一為紀錄筆者探索開放原始碼時所發展與實際運用之技巧，二為將此心得整理，與其他程式初心者分享。希望大家能體會到筆者追 code 時所有的樂趣，不再將此事視為苦差事，進而提昇自我實力並貢獻己力至開源軟體。

**陳坤裕 寫於高雄路竹**

備註：\
此心得已於 PyConTW 2017 與 COSCUP 2018 中分享

PyConTW 2017\
介紹頁面：<https://bit.ly/2Q43FM4>\
演講影片：<https://bit.ly/2PuCtce>\
投影片： [https://bit.ly/2Q39Xvp](http://bit.ly/2Q39Xvp)\
COSCUP 2018\
介紹頁面：<https://bit.ly/2Oaq60h>\
投影片： [https://bit.ly/2SrDhgO](http://bit.ly/2SrDhgO)
