YOJUHSU's Blog

01.09 XDite 全棧營編程進階之路

| Comments

附註:通常我不喜歡寫逐字稿,如果不小心寫了逐字稿會盡可能再重寫一次摘要。可是這篇摘要寫太好了,有興趣看摘要的人可以直接看Maple's blog

我當年怎樣學編程,怎樣進修

觀察同學的學習反應:矇-雞血-矇

絕大多數的野生程序員是這樣成長的,也就是我當年開始學RAILS,我在2007年接觸到這個世界。之前我只能算是電腦用戶。

電腦用戶:懂得下載套件,改HTML,改CSS。你抓到論壇的套件,可以用,但不知道怎麼新增功能。

2007年我同時接觸PHP跟RAILS,那時候所有的語言都在蠻荒時代,寫一個留言板要兩個星期的時間。我想要架起一個自己的網站,但不管看什麼書都是從入門到放棄。

當時正好有人在宣傳『五分鐘搭建起一個博客』,那就是RAILS SCUFOLLD。雖然我除了搭起博客什麼都不會,但我滿興奮地覺得:五分鐘搭建起一個博客,改動後也許可以像正常的網站。

但是我還是想知道怎麼做網站,我來來去去看了很多書,每一本都寫RAILS的原理,翻遍亞馬遜的書後有一本叫做『怎麼樣用RAILS佈建一個SOCIAL NETWORK SITE』這本書的原理很少,都是教你怎麼做。我照著做一遍後自己在做一遍,就發現要做一個網站沒有那麼難。

我有個朋友有惡搞的IDEA想找人試試看,我花了兩個星期就做出來,我其實不懂原理,我知道一些基本的模塊,CSS,一些很醜的佈景。推上網後爆紅,搞到最後電視台都來採訪,讓我欣喜若狂,因為我是編程新手東西居然有幾十萬人用,覺得自己簡直是神。

但我知道自己的程度還不是一個程序員,我那時候也不是程序員,在一間公司當網管,我想要每天有八小時都在做RAILS,而不是只有每天下班的兩個小時學。所以去找看看有哪間公司在用,我找到一間公司在徵RAILS學徒,薪水沒有比我當初薪資高多少,我剛開始只能改別人的代碼,到能夠獨立寫的時候已經是三個月以後的事情了。老闆教我怎麼寫USER STORY,拆票一步步開始做。

我當程序員的頭兩年之內,跟RAILS都不是很熟,也就是有新手問我問題,我是會倒的。因為裡面原理其實我不知道,但我可以教你怎麼用,甚至越寫越快。

現在如果大家Google 尋找中文RUBY的內容,我壟斷了中文世界的RAILS關鍵字,我發現我不懂,怕自己忘記就把自己常用的東西放到網上,一路記錄了七八年的時間,我的博客上有很多RAILS的東西。


怎麼樣學習RAILS:學習策略(用,筆記,發表,Meetup)

各位現在周遭都是跟你一樣的同學,他們進度比你好就感到害怕,進度比同學好就感到自豪,但不知道比起真的程序員來說你到底如何。其實剛我的故事不是特例,那些在論壇上很囂張的程序員,如果你去問他們代碼的問題,他們會好像不屑回答你,其實他們是不知道怎麼回答。

有些人認為野生的程序員應該很熟底層,知道原理,知道自己在幹什麼。但其實我告訴你,三年到五年的程序員很多時候不知道自己在幹什麼。他會用,叫他寫個功能,他會很快做給你,但是不知道架構是怎麼設計的。

有個狀況就是你外包東西給他們,他們知道怎麼做,但不知道要多久。他們就是去網路上看教材,然後照著做出來。他們自己知道自己的基礎不好,所以會告訴新手『你必須要熟悉底層的知識,不然以後會吃虧的』你看網路上百分之九十以上的程序員,都教你要懂的基礎知識,才能繼續往前走。這事實上是他們對過去的懺悔之心。

他們這樣教之後,很多人就會從入門到放棄。你會發現一本書這麼後,前面百分之九十都是理論。

跟這些方法比起來你會覺得全棧營好像很厲害,你好像會了很多東西,但是又不知道什麼東西。

學習最好的方法是用,因為大腦沒辦法用未知解釋未知。所以你必須要用。這也是為什麼我要求各位要記筆記,筆記不是要記對的,而是記哪裡是錯的。這也是為什麼共同成長群有很多同學已經開始回答這個問題,剛開始他們覺得我的招數錯誤,但他們用自己的方式學不會,用我的方式後瞬間學會。『因為你如果只記對的,不記錯的,這樣你就沒有對錯誤的東西做提取練習』所謂的成長就是要提升自己的功力,避免下次遇到同一個坑,我們就是要讓大家採坑的機會變少,當你記越多錯誤的方式以及改正的原因時, 你會發現都是一些低級的錯誤。像是『拼寫錯誤,忘了把HTML關起來』等等。所謂新手到中手的策略,第一個就是『用』,可能你也不知道怎麼用,那就是模仿。

第一週我們就是教各位如何用User Story,第一週跟第二週就是教各位寫一個招聘的網站,他是濃縮的套路,跟課前作業很像。是RAILS裡面的極小極高頻的小套路。這是最小的集合包,當時我在變成資深程序員的時候,我要招新的程序員,我知道自己變成資深程序員的時間太漫長,各位覺得你第三課的RAILS101以及JOBLISTING足足花了九個月以上,各位花一週的時間就達到我當年的進度。

我為什麼有RAILS101呢?因為我當年沒有什麼教材,當年英文也沒那麼好,要是一般人沒這種方法就練不起來。只要你智力問題上沒有,對計算機領域有研究,花兩個禮拜的時間就可以做好。而且我要跟各位恭喜一下,我講一個李姓新手程序員的故事。。。(22分30秒,大家自己看啊)總之,各位已經比他厲害非常多了。

各位現在有效學習的策略是什麼呢?用、筆記、把你做的東西發表。李姓程序員在七月的時候有一個『人人都可以是程序員』的博客。發表出來後就會有很多人看你的博客,給你提點意見,你會知道自己的學習路徑是否在高效的地方,有什麼該改進的。當年我發表的時候,很多人就會告訴我有什麼技巧,有哪些GEM你不知道。

後來我不滿足這件事情,我已經發表到全台灣全中文世界的人都在跟我交流了,於是我組起來台灣第一個Meet Up,每個月發表一次演講,看誰最近有玩到新東西,我們持續了九個月之後,發現自己想要的不只是演講,我們希望除了討論之外,還想要解Bug。這件事非常高效,因為一來你知道自己並不孤獨,二來你有了戰友像是打怪組隊一樣,可以明顯感覺到學習的加速。

這一兩個星期我們有這樣的安排,讓各位在養殖的環境中塑造出野生的氣氛。為什麼我們要這樣做?因為協作,與他人知識上的協作是讓你知識進步做大的原動力,知識不是單幹,知識是協作。學習其實是體力活,需要與他人協作的活。

各位感到矇是正常的,學代碼不是不懂到懂,而是『用,然後用到更好』


Comments

comments powered by Disqus