宅男程序員給老婆的計(jì)算機(jī)課程之12:作業(yè)點(diǎn)評(píng)
原創(chuàng)【51CTO獨(dú)家特稿】h1. 作業(yè)分析
作業(yè)是課程的一部分,實(shí)際上,還是這個(gè)課程最重要的部分。
如我在前面課程中提到的一樣:
很多初學(xué)者,或者說(shuō),編程的偽愛好者,他們,會(huì)熱衷于去四處請(qǐng)教大師,下載各種經(jīng)典書籍,企圖讀一本編程圣經(jīng),然后一夜脫胎換骨。
這是,不可能的。
同樣的,如果僅僅是看了這個(gè)課程,而不做作業(yè),那么在看課程前后,個(gè)人的能力是不可能有變化的。
充其量,跟看了一部或許好玩的小說(shuō)差不多。
作業(yè)并不是考試,而是課程的延伸,是沒有可能參照著課程的內(nèi)容,然后對(duì)作業(yè)做出回答。
每節(jié)課,僅僅只是指出一個(gè)方向,然后需要大量時(shí)間的去朝這個(gè)方向做學(xué)習(xí)、探索,然后以作業(yè)的形式做出對(duì)這個(gè)方向的回答。
這才是學(xué)習(xí)。
花幾分鐘看幾眼課程,然后就期待自己技術(shù)能力有變化?能夠有改變,從不會(huì)做作業(yè)變成會(huì)做作業(yè)?
別開玩笑了,如果能夠這樣,那么程序開發(fā)會(huì)是一門非常沒有技術(shù)含量,非常沒有含金量的行業(yè)。
只有用心好好完成了作業(yè)之后,才有可能獲得知識(shí)。
這個(gè)課程的作業(yè),也完全不是:
小明有5個(gè)蘋果,他吃了一個(gè)。然后給小寒了一個(gè),求太陽(yáng)到地球的距離。
這樣無(wú)厘頭的題目。
每節(jié)課的作業(yè),都是跟課程有直接關(guān)系的。
h2. 第一課
1. 用500字講述什么是Programming Methodology?
2. 列舉10種Data Structure.
3. 列舉10種Algorithm.
這課的作業(yè)實(shí)際上是在問,你對(duì)“編程本質(zhì)”的內(nèi)容掌握了多少,如果不夠熟悉,了解得不夠多,要趕快去學(xué)習(xí)。
h2. 第二課
1. 列舉10個(gè)Python Web框架
2. Python有多少種不同的解釋器?
3. Perl 跟 Python 有什么不同?
這課的作業(yè),同樣是在問具體到Python這個(gè)語(yǔ)言平臺(tái),在實(shí)際開發(fā)中可供挑選的現(xiàn)成工具有哪些?問的是對(duì)自身工作所使用的平臺(tái)熟悉程度。這課的作業(yè),也完全可以根據(jù)使用的語(yǔ)言不同,而改成別的技術(shù)題目。
這課講的是實(shí)際中對(duì)工具掌控的熟悉程度這個(gè)方向,如果熟悉,那么這三個(gè)問題是很容易回答的,如果不熟悉,而為了做作業(yè)去打開Google,搜“python web框架”,然后填名字。那么就完全木有做作業(yè)的意義。
h2. 第三課
1. 找出一篇看上去很厲害的文章。
2. 找一本書,開始看,作為期中考書目。
這課講的是閱讀的重要性,兩項(xiàng)作業(yè),一個(gè)要求閱讀的廣度,一個(gè)是要求閱讀的深度。
作業(yè)是要做的。OK,這課講了閱讀的重要,明白了,然后就洗洗睡了?自身的閱讀的東西,無(wú)論是廣度還是深度,都跟以前一樣,那學(xué)這課程有個(gè)毛用?
宣稱喜歡這個(gè)課程,并且表示關(guān)注、期待的同學(xué),請(qǐng)問,你選擇的期中考書目,已經(jīng)翻了幾頁(yè)?
如果一頁(yè)還沒有翻;那么請(qǐng)好好問一下你自己,你究竟是不是要學(xué)習(xí)提高改變自己的?
h2. 第四課
1. 林仕鼎是百度首席架構(gòu)師嗎?
2. 看完曹政所有的blog。
這一課其實(shí)還是在講閱讀的重要性,以及對(duì)事物的好奇心。
如果,你對(duì)技術(shù)有熱情,有追求,課程中居然出現(xiàn)了“百度首席架構(gòu)師”這樣的字眼,你必然會(huì)對(duì)他有無(wú)限的好奇,會(huì)去刨根問底的了解他。
那么,是很容易就發(fā)現(xiàn)林仕鼎根本就不是百度首席架構(gòu)師,相反,caoz曾經(jīng)更符合這個(gè)身份。
我列舉了兩個(gè)hacker風(fēng)格的IT人物,一個(gè)是caoz,一個(gè)是云風(fēng)。
作業(yè)有一項(xiàng)是看完caoz的所有blog,他的blog很好看的。如果你真的看完了,那么,請(qǐng)問你是否有完成這課實(shí)際上還有另一個(gè)隱藏的“作業(yè)”,“看完云風(fēng)的所有blog”?
如果沒有,那是什么阻止了你?一個(gè)非常優(yōu)秀的技術(shù)博客知識(shí)就放在你眼前,你,為什么不去看?
OK,沒有時(shí)間,很忙,這些我很了解。
我只問一個(gè):是否有過(guò)要把云風(fēng)的blog也看完的念頭?
如果連這基本的好奇心、求知欲都木有的話,那還是洗洗睡吧。
h2. 第五課
1. NoSQL的方案,如MongoDB還解決了SQL的什么問題?
2. NoSQL的應(yīng)用場(chǎng)景有啥米?
這課是講數(shù)據(jù)庫(kù),分析、比較了SQL、NoSQL,同樣的,需要課后去做更加深入的了解并且思考SQL、NoSQL的適用場(chǎng)景。
h2. 第六課
1. 使用一種編譯語(yǔ)言實(shí)現(xiàn) Singleton 模式
2. 使用一種動(dòng)態(tài)語(yǔ)言實(shí)現(xiàn) Singleton 模式
3. 說(shuō)說(shuō)對(duì) Provider 模式的理解。
如果連最簡(jiǎn)單的Singleton模式實(shí)現(xiàn)都是上網(wǎng)google的現(xiàn)成代碼,那。。。還是那句話,洗洗睡吧。。。
這課講的是設(shè)計(jì)模式的必要以及局限,如果只是看到后面對(duì)設(shè)計(jì)模式局限的調(diào)侃,而無(wú)視了前面提到的:“開發(fā)中非常必要的知識(shí),實(shí)際上,是非?;A(chǔ)的知識(shí)”。
你究竟對(duì)非?;A(chǔ)的設(shè)計(jì)模式了解得多深入了?第三題換個(gè)模式,你說(shuō)得出理解么?
h2. 第七課
1. php 的 Smarty 模版的設(shè)計(jì)哲學(xué)是什么?
2. perl 的 Mason 模版的設(shè)計(jì)哲學(xué)是什么?
3. 什么是gettext?
4. 前端javascript實(shí)現(xiàn)的模版中,目前最成熟的是哪個(gè)引擎?
這課是講模版,模版有很多現(xiàn)成的實(shí)現(xiàn),作業(yè)純粹就是在要求去了解、認(rèn)識(shí)各種模版技術(shù)的實(shí)現(xiàn)。
h2. 第八課
1. 說(shuō)說(shuō)對(duì) restful 的理解
2. 什么是 reverse proxy ?
restful / reverse proxy等,都是跟controller相關(guān),但延伸出去的相關(guān)知識(shí)。
相關(guān)性究竟在哪里?這個(gè)可以做為獨(dú)立的一課去講述,但也完全是可以自學(xué)了解的。但這絕對(duì)不是在跟小明講了1+2=3后,問太陽(yáng)與地球的距離。
h2. 第九課
沒有作業(yè)。
h2. 第十課
1. ED開發(fā)圣經(jīng)PEAA究竟是哪本書?
2. 數(shù)據(jù)庫(kù)三范式是什么?
3. 關(guān)于Domain Model,什么是充血模型?什么是貧血模型?
第一題純娛樂,第二題是確認(rèn)課本知識(shí)掌握;第三題則又是在要求延伸閱讀,實(shí)際上,也是在為下一課做預(yù)習(xí)。
h2. 第十一課
1. N-tiers架構(gòu)的噩夢(mèng)場(chǎng)景是?
2. 什么系統(tǒng)/場(chǎng)景需要充分使用特定數(shù)據(jù)庫(kù)的特性?
這課作業(yè)是在要求對(duì)課程做思考,寫課程時(shí),我實(shí)際上是碼了很多字,去描述N-tiers的噩夢(mèng)場(chǎng)景。但后來(lái)我又全部刪除。
因?yàn)?,我前面已?jīng)講了很多關(guān)于分層、封裝的問題,也提供了The Law of Leaky Abstractions的連接,對(duì)N-tiers有了解,對(duì)分層的問題有了解,那么如果還不能認(rèn)識(shí)到N-tiers這么一個(gè)多分層的技術(shù)的噩夢(mèng)場(chǎng)景是什么的話;那么我還是只能說(shuō):洗洗睡吧。
整個(gè)課程,是在強(qiáng)調(diào)對(duì)數(shù)據(jù)庫(kù)的封裝。為了避免產(chǎn)生封裝就是好的教條思想產(chǎn)生,所有我又加了“使用特定數(shù)據(jù)庫(kù)的特性”這個(gè)作業(yè),要求去思考一下相反的場(chǎng)景。
作業(yè):
1. 補(bǔ)做之前的所有作業(yè)
51CTO系列:
- 宅男程序員給老婆的計(jì)算機(jī)課程之0:認(rèn)清本質(zhì)
- 宅男程序員給老婆的計(jì)算機(jī)課程之1:認(rèn)清實(shí)際
- 宅男程序員給老婆的計(jì)算機(jī)課程之2:怎么看待牛人
- 宅男程序員給老婆的計(jì)算機(jī)課程之3:架構(gòu)比較
- 宅男程序員給老婆的計(jì)算機(jī)課程之4:SQL vs NoSQL
- 宅男程序員給老婆的計(jì)算機(jī)課程之5:設(shè)計(jì)模式
- 宅男程序員給老婆的計(jì)算機(jī)課程之6:模版引擎
- 宅男程序員給老婆的計(jì)算機(jī)課程之7:運(yùn)維的重要性
- 宅男程序員給老婆的計(jì)算機(jī)課程之8:控制器
- 宅男程序員給老婆的計(jì)算機(jī)課程之9:數(shù)據(jù)模型
- 宅男程序員給老婆的計(jì)算機(jī)課程之10:做,就對(duì)了!
- 宅男程序員給老婆的計(jì)算機(jī)課程之11:域模型