序言
本書的內容是一年多以來我個人學習的累積出來的成果。
我會願意分享這些教學,是因為希望能提供正在學習的、有興趣學習的朋友們,一些我所認為的學習方向與正確的概念。
本書既不是可以讓你一夜學成的密笈,也不是花個幾天就可以"精通"這門技術的寶典,更不是"輕輕鬆鬆"學什麼的技術書。反過來想,如果有一門技術這麼容易學成,那它大概也不算是個有市場價值的技術。花幾個小時、學會這些範例都學通之類的這些只是花俏的行銷術語。真實的情況是,這些東西我自己就學了一年多,現在還在學習中,不過這些寫出來的內容只是我學習的知識中的部份。
本書是一個以由淺入深的範例展示的撰寫方式,希望學習者可以由實際範例應用中來學習。在每個範例中,我會加入必要知道的各種知識,作為每個範例的補充資訊。這些補充知識有經過篩選,實際上很多都是"必要"的概念,雖然它們都是細節,但對於一門技術想要學得到多深,就看待你要用什麼的心態去學習它。你可以隨便翻翻看看,也可以仔細地操作每個範例,看每個補充的資訊。對我來說,我只是個作者,我的角色是儘可能把知識呈現出來,用比較容易理解的方式。
每篇的內容有可能長短不一,不包含程式碼整本書累積的文字應該有十萬字左右,一字一句都是我所撰寫(打字)出來。參考的資料都是在網路上就有,但實作與心得是個人研究出來。
所以,這不是一本"快速入門"的書,也不是"輕輕鬆鬆"學習的書,那麼它會是什麼一本書?
我會認為,它是一本"要讓你正確學會這些技術"的書。
至於要花多久時間學會與學不學得會,這就是學習者本身的問題了。當然我所認為的"正確的",純粹是個人主見,對我來說,已經有學習過這些技術,自然也經歷過其中的學習過程,我自認一開始並不是一個完全什麼都不會的初學者,但在學習過程中也體會了學習的困難與痛苦。是的,我會用"痛苦"這個字詞。有時候,對於初學者來說,有些技術是愈學愈不懂,或是花了很多時間學,實際上得到的感覺什麼都不會。網路上到處充斥著這些教學與教學文章,那麼,是這些教學文章的錯誤?還是學習者本身的基礎有問題?我有思考過這個問題,最近在網路上的一個教學課程,看到了一個學習者分享的經驗大概是這樣寫的(名稱我用假名代替):
有時候不得不說,當你水準不夠的時候,覺得別人講的很不清楚,當你達到一定水準的時候,發現老師講的簡直精彩無比。xxx老師是國內oooo領域的專家,水準毋庸置疑,如果你聽不懂,很大程度上是因為自身水準不夠吧。
這段話完全是個廢話(我如果水準夠的話,也不用來看這教學課堂了...)。不過這段廢話其實有回答了剛剛的問題。教學文章或課程錯的部份比較多,學習者也有問題,但佔的比例可能少些。教學文章或課程是由講者或作者所撰寫或編輯而成,其內容本就是個人主觀意識下的產物。我們在學校時要專心上這個老師的課,是因為考試的題目原本就是這個老師出的,你不上他的課,考試怎麼可能會考得好?問題是在全校性或全國性的大考試下,這個老師教的不見得會考,成績好的不見得在全區域的大考下就會考得好。所以,如果某某老師是某某領域的專家,只是代表他在這個領域的知名度與知識程度是有一定的水準,至於教得好不好,或是學習者是不是容易學懂,那是另一回事。講師或作者通常犯的毛病,就是認為重要的細節是"理所當然",也就是"這樣這樣然後就那樣,很簡單的",對學習者來說,為什麼會"這樣這樣"然後就"那樣",可能他需要花很久時間才能理解,一點都不簡單。
別人都學得會沒問題,為什麼你就學不會?
在我高中的數學老師當著全班的場合,對著我因為不及格的考卷罵了這一句。或許,有的時候並不全然是學習者的問題,教學者本身的模式很固定,但學習者是否能吸收其中的知識,又是另一回事了。學習者的問題則是學習者本身的條件,這是完全沒有基礎的情況下,還是具有錯誤的學習心態的情況下,或甚至帶有偏見的情況下,通通會得到不同的結果。話說回來,有心學習的人,自然能一一克服這些條件問題。
努力也是一種天賦
學習之路我會認為不是平坦的,因為我是過來人,對你來說,我只是一個比你早些學習的前初學者而已,我並非大神,神並不存在這個世界上,我只是勤勉的信徒。
技術不管如何,只是一個工具,熟能生巧而已。但我想要傳達的,不只有這些技術的知識而已,還有一個很重要的,就是 - "撰寫風格與習慣"。你在文中會很經常發現,我會一直在強調某些撰寫風格,以及強調最好不建議使用什麼。這是細節,但魔鬼通常都藏在細節裡,這些是寶貴的經驗的累積,如果你能深切體會,相信對你的開發生活,會很有幫助。
魔鬼通常都在細節裡