年輕人、請以「開放原始碼」為師! by 陳鍾誠 | CodeData
top

年輕人、請以「開放原始碼」為師!

分享:

在我教書的這十年來,感受到的主要改變,很多都來自於「開放原始碼」!

我使用的教學工具、教材、書籍、程式、軟體等等,幾乎都是從開放原始碼來的。

我不禁想到,假如我現在剛上大學,我該如何學習呢?開放原始碼對我會有甚麼影響呢?

現在、就讓我稍微乘坐一下想像的時光機,回到 19 歲的年紀!

大學新鮮人

如果、我再度回到大學,成了資工系的新鮮人,那麼、理所當然的,我會有很多的夢想。

談場戀愛、在校園漫遊、努力的浪費青春 ….

然後、還有時間的話,我會好好的學習。

但是、該學些甚麼呢?

我想,第一件事情,我會先學好「程式設計」,因為這是資工人最需要會的必備技能!

但是、我勢必感到迷惘!

為甚麼呢?

因為複雜!

哪裡複雜呢?

現實的程式世界,已經變得太複雜了,複雜到讓一個新鮮人眼花撩亂,無所適從!

當我想開始學程式的時候,勢必面對的第一個問題就是:「我該學哪個程式語言呢?」

然後我會看到:「C/C++, Ruby、Python、Java、Python、PHP、JavaScript、Perl、Lua、C#、VB、Objective C……」,接著還有「Visual Studio、Dev C++、gcc、Eclipse、Rail、Dejango、Apache、MySQL、SQL server express、Oracle、Mongoose、MongoDB、Node.js、Linux、Windows、FreeBSD、iMac、iPad、Android、Unity、Ubuntu、Arduino、Raspberry Pi …..」。

而且、更重要的是,這些名詞都不認識我,或者說我都不認識它們!

於是、我想一想,還是回到校園,談場戀愛、努力的浪費青春好了!

But、人生最厲害的就是這個 But!

But、難道我要連續談四年戀愛,四年後繼續維持著這個「小清新」的局面嗎?

或者、我可以一邊談戀愛,一邊也有點長進呢?

但是、就如你看到的,那麼長的名單,我沒有一個認識的,那又該如何開始呢?

當然、這個問題很難,不過還好,學校裏有一個東西,叫做老師,他們或許可以幫你!

然後、我想我會去找幾位老師,問問看我該從哪邊開始學。

很不幸的是,根據我的猜測,若我問了五個老師、應該會有五種不同的答案,所以我還是沒辦法開始!

這時該怎麼辦呢?

那就換個對象,改問學長們吧!

於是、菸酒生學長說:「喔!關於這個問題嗎?來一杯啦!齁搭啦!」,……

然後、隔天只覺得頭很痛,還是沒有得到解答!

於是、我應該會抱著很多疑問,去上一些課,以下是一年級的課程清單:

國文、英文、物理、體育、微積分、計算機概論、數位邏輯、程式設計、.....

對於一個稍具判斷力的學生來說,應該可以知道前面幾個是高中就有的課程,而後面幾個才是「資工系」特有的課程。

所以、要學程式,應該還是從「程式設計」這門課開始吧!

課堂上的情況

然後、我去上課的時候,所看到的情況,很可能就像下列影片的這樣:

  • ….

然後呢?我就學會「程式設計」,成了「程式高手」了嗎?

歐!這當然是不可能的!

學會「基本程式設計」或許可以,要這樣就變高手是絕對不可能的啦!

那麼、我應該怎麼辦呢?

如何成為程式高手?

關於這點,由於我也不是高手,所以也沒有辦法很篤定的說!

但是、我看到一些優秀的年輕人,他們在這個領域相當傑出,或許值得效法一下!

舉例而言,像是 Jserv 、 Fred Chien 、 Xdite 等等。

那麼、他們是怎麼學的呢?

我的觀察發現,他們都很會善用「開放原始碼」資源,而且還投入「開放原始碼」領域去參與計畫,或者自己創造計畫,我想這是它們優秀的原因。

所以、如果您也剛進入「資訊科系」,我的建議是:「善用開放原始碼」,我相信透過「貢獻程式碼」這樣的付出,您其實會得到更多。

github 去吧! 全世界的高手都在那裡了! 去那裏尋找偉大的航道吧!

那裏有著無窮無盡的「程式碼」等著你去探索,而且、源碼之前了無秘密,學會了就是你的,出發吧!年輕人!

後記

曾經有學生問我,我想進入開放原始碼領域,但是總是不知道怎麼開始,那些專案都很大,我們根本插不上手,甚至根本看不懂!

我必須老實說,那些很大的專案,我也很怕,很多也看不懂,但是我們仍然可以開始。

先找你有興趣的領域或專案,開始試著建置這些專案,當您建置成功之後,尋找您有興趣的模組,然後試著修改看看,看看改完之後是否還能動,這是一種辦法!

其實 github 上的專案,並不非得是甚麼偉大的東西,你寫的任何一個程式,都可以上傳上去成為一個專案。

舉例而言,如果你的作業是自己寫的,那就傳上去吧! 開始習慣 git 的用法,然後你就會逐漸具備與其他程式人合作的能力,也會逐漸理解這種合作的方法。

如果你和同學一組一起寫,那就用 github 當平台,合作並分享你們的作業,這樣就有了用 git 合作的經驗。

然後、當您對一個東西瞭解得夠深了之後,我建議您開始用 Markdown 寫電子書,或許可以直接寫在 github 上,因為 github 有支援 markdown 。

能夠把一個技術寫清楚,就會慢慢深入該領域,經常問該領域的專家問題,該領域的人就會認識你。

然後、慢慢的,你就會變成專家,等到你在這個領域投入一萬個小時之後,你就會成為該領域的「高手」了!

年輕的程式人,如果您對這個領域有無比的熱誠,那就出發吧!

你不需要有魯夫的神奇橡膠 Jet 槍,也不需要有螺旋丸或影分身之術,只需要一顆好奇的心,以及足夠的熱誠,那就夠了!

別再說我們是魯蛇了,當初乘坐「五月花號」航向美國的那些人,也只不過是在英國受排擠的「魯蛇們」,但是他們找到了自己的偉大航道,建立了一個偉大的國家。

現在、虛擬的數位世界正等待著我們去探索,在那個世界裏,房子不用錢,住者有其屋,空間無限大,想法無限多,那是我們這一代的新大陸,我們的新世界!

分享:
按讚!加入 CodeData Facebook 粉絲群

留言

留言請先。還沒帳號註冊也可以使用FacebookGoogle+登錄留言

熱門論壇文章

熱門技術文章