现代软件工程系列 学生和老师都不容易
老師的難處 -?V2.0 的困難
有笑話說某人請客, 客人無論是坐轎或是步行前來, 主人都能奉承一番。 有客人說自己是爬著來的, 主人奉承說? - 穩(wěn)妥之至!?
?
據(jù)說有些學(xué)校的有些課還是沿用 N 年前的教案和教材,? 這當然穩(wěn)妥之至。我看到學(xué)校用很多年前的穩(wěn)妥教材把學(xué)生送走之后,??會說 -?我校一貫鼓勵創(chuàng)新, 培養(yǎng)了大批創(chuàng)新型人才...?
?
這些創(chuàng)新型的同學(xué),?都到這里碰面了:?
?
?
我講的課是 <現(xiàn)代軟件工程>,? 我還是希望與時俱進的。 當然, 要變化, 就有風(fēng)險。? 業(yè)界常說某軟件公司的產(chǎn)品要到V3.0 才好用。 從我的經(jīng)驗來說,在V3.0 之前的V2.0 是比較困難的一個版本。 V1.0 初試啼聲,市場反映不錯,評論家也主要評點產(chǎn)品的創(chuàng)新點及潛在影響,對缺陷往往比較包容。 V2.0 一方面要繼續(xù)原有的突破,把V1.0 來不及實現(xiàn)的功能都搞出去;同時,V1.0 的發(fā)布產(chǎn)生了更多的機會,很多人有了新的想法;另一方面要調(diào)整內(nèi)部結(jié)構(gòu),讓產(chǎn)品更穩(wěn)定。 這幾種不相容的思路混在一起,加上用戶和評論家更高的期望值,V2.0 很可能是不如人意的產(chǎn)品。
?
?
在2009 年初, 我在清華大學(xué)軟件科學(xué)試驗班的《現(xiàn)代軟件工程》也講了兩年 (2007, 2008),算是V2.0,從結(jié)果上看,也碰到了類似的情況,下面是一個列表比較兩屆學(xué)生的匿名反饋:
| 評分內(nèi)容 | 2007 | 2008 |
| 熱情、認真、投入、嚴謹,教書育人 | 95.45±3.80 | 95.00±3.42 |
| 講課思路清晰,重點、難點突出 | 94.55±4.04 | 89.29±5.77 |
| 講解生動、有吸引力,能激發(fā)學(xué)生的求知欲 | 92.73±5.15 | 90.71±5.37 |
| 師生互動,鼓勵學(xué)生質(zhì)疑,并給予思路的引導(dǎo) | 94.55±4.04 | 93.57±3.69 |
| 提供或推薦的教學(xué)資料有助于學(xué)生學(xué)習(xí) | 93.64±4.23 | 86.43±8.19 |
| 作業(yè)等課程訓(xùn)練有利于課程內(nèi)容的學(xué)習(xí) | 94.55±4.04 | 90.00±4.95 |
| 考核及評價方式能激勵學(xué)生主動學(xué)習(xí)與鉆研 | 92.73±5.15 | 87.86±4.88 |
| 注重學(xué)生創(chuàng)新意識和獨立思考能力的培養(yǎng) | 92.73±4.37 | 91.43±4.44 |
| 對學(xué)生課外學(xué)習(xí)給予指導(dǎo)、建議 | 92.73±4.37 | 91.43±4.92 |
| 學(xué)習(xí)本門課程后有收獲 | 92.73±4.37 | 90.00±5.38 |
?
可以看到,在10個欄目中有4個項目的反饋有明顯下降。
-講課思路清晰,重點、難點突出:下降了5個百分點。 我在2008 秋季開學(xué)前還把整個課件都重新整理了一遍,增加了不少內(nèi)容,相比2007年我第一次在大學(xué)講課,應(yīng)該只好不差吧? 為什么同學(xué)們會有這樣的反映? 是新增的內(nèi)容沒有很好的準備,還是增加得太多了,讓人覺得眼花繚亂,不利于吸收?
?
-提供或推薦的教學(xué)資料有助于學(xué)生學(xué)習(xí): 除了教材是提供了新版本外(移山之道的第二版),我在2008年提供了更多的參考資料,最大的手筆是給每個小組一本 <夢斷代碼> (btw, 學(xué)校不讓報銷), 讓他們讀后寫讀后感 。 后來幾篇讀后感都挺好的(link 1, 2, 3, 4, 5)。這一項的評分的標準方差(+/- 8.19) 也明顯大于其它評分,說明不同學(xué)生的反映差別很大。
?
-作業(yè)等課程訓(xùn)練有利于課程內(nèi)容的學(xué)習(xí): 這門課的結(jié)對編程 (Pair Programming)作業(yè)和去年不一樣,是在一個共同的編程接口(API) 上分為 DEV 和 Test, 分別寫實現(xiàn)和測試. 主要練習(xí)
????????? design by contract,
????????? test case development,
????????? stress test,
????????? optimization, 等。
?
但是在執(zhí)行中不是所有學(xué)生都理解問題和要求,要在看不見功能實現(xiàn)的情況下寫test case, 我想對絕大部分學(xué)生都是頭一次。 我應(yīng)該講得更詳細一些。 而不是讓所有同學(xué)自己摸索。 我期望同學(xué)們課后有問題就問負責(zé)API 的同學(xué),都是同一個班級的,不是很簡單的事么? 但是很多同學(xué)都等到下一周上課的才說,理解不了… 然后又產(chǎn)生關(guān)于 "你是否花了時間看了我寫的API" 的爭論…? 后來又 產(chǎn)生"寫Test 比Dev 簡單,不公平" 等等意見,導(dǎo)致多用了一周時間完成整個作業(yè)。 相比之下,2007年的作業(yè)是“兩人組對寫一個簡單游戲”, 這很有趣,也不難,因為自己可以決定功能的多少,但是一個游戲是否比2008年的作業(yè)更“有利于課程內(nèi)容的學(xué)習(xí)”,這就不好說了。
?
- 考核及評價方式能激勵學(xué)生主動學(xué)習(xí)與鉆研: 哈哈,2008年的課程在評價方式上的確有改變,而且這也是出于“激勵學(xué)生主動學(xué)習(xí)與鉆研”的目的。這在課程中也引起了學(xué)生的激烈討論, 具體討論可以看一些小組的blog 及評論。 我覺得這事實上是挺好的現(xiàn)象,軟件工程的一些道理,就是要辯論才能體會;一些我們同學(xué)們經(jīng)常抱怨的事情 (e.g. 這肯定是某公司的bug),似乎我們也沒做好, 我們經(jīng)常嘲笑別人軟件發(fā)布一拖再拖,但我們學(xué)生們的軟件發(fā)布也推遲了。在最后的評審上,我請了上一屆的學(xué)生,別的學(xué)校的老師,以前信息奧賽金牌獲得者,程序員,雜志員雜志的編輯,《夢斷代碼》的譯者(不過他沒出現(xiàn))。 我覺得這個考核及評價方式挺好的, 但是看來同學(xué)們的總體反映并不好,是繼續(xù)“深化改革”呢,還是讓大家都好過一點,洗洗睡算了?
?
令人高興的是,兩屆同學(xué)都同意我還算"熱情、認真、投入、嚴謹,教書育人", 說明我本質(zhì)不壞,如果別的條目的評分都上升,唯獨這個條目下降了,我可能不好意思把評價公之于眾。不管怎么說,還得好好改進教學(xué),別對不起學(xué)生的評價。
?
?
?
同學(xué)們也不容易
這是一個清華同學(xué)的反饋:
?
| 我的若干看法 -- 課程剛技術(shù)時提交過一個“看法”,但是現(xiàn)在過去一段時間了,感覺有點不同了 1.我對課本有點抵觸,尤其是《移山之道》。主要是覺得“廢話”太多了,里面聊天和詩歌有點過多了。書本身其實還不錯,但是上課時作為課本看感感覺信息量太低了。實際等課程結(jié)束后我把它作為課外讀物又從頭看了一多半,其實還不錯,只是它有點像連續(xù)劇,不從頭看或者不連續(xù)看就被人物關(guān)系搞的暈頭轉(zhuǎn)向了。不過您大可堅持您自己風(fēng)格,大多數(shù)目標讀者覺得好就行了。 ? 2.物質(zhì)獎勵還是挺不錯的,即使是一支紀念圓珠筆或者帽子或者粘貼,都很有趣。但是別給錢。 ? 3.制度總是和人過不去,人總是和制度過不去,所以怎么弄總會有人不滿意。關(guān)于考核方式等等其實只要公平合理就行。 ? 4.當TFS管理員其實挺有趣的,但是最后發(fā)現(xiàn)90%的工作是安裝服務(wù)器(不知道這一天TFS裝了多少次) ? 5.VSTS感覺一直是當svn用的,上課時講的高級功能沒用上。像item之類我自己感覺還不如用筆紙或者email。 item這種大工程才用的放在小工程里實在很別扭 -- 盡管我知道是為了學(xué)習(xí)而這么做的。 ? 6.我不建議您為了避免辯論而改革,俗話說“抬杠長學(xué)問”,只要不傷了和氣其實挺好的。 ? 7.我覺得像這種開發(fā)方法之類的東西就像設(shè)計模式,非常抽象,本來就不應(yīng)該歸結(jié)成概念死記硬背,但是為了繼承和發(fā)展又不得不這樣做。 上完這個課以后我第一反應(yīng)其實是“什么都沒學(xué)到”,但是這個其實說明您講的還是不錯的,不死板。 ? 8.不管怎樣,軟工是我上過的最有趣的課之一,感謝鄒老師。 ? |
?
我問了一些剛剛畢業(yè)的軟件專業(yè)的同學(xué),軟件教育迫切要改變的做法是什么?? 下面是一些回答:
a)?實踐!? 軟件教育離不開實踐,不要太強調(diào)閉卷考試, 老師一定要讓學(xué)生實踐,實習(xí)。給一個真實的客戶做項目和自己幻想一個需求來做項目是有很大區(qū)別的。自己從頭寫程序和維護別人寫的代碼是有很大區(qū)別的。 沒有真實的需求,沒有軟件的增量開發(fā),沒有團隊合作,程序設(shè)計和軟件工程中的大部分理論都淪為空談。
b)?講為什么!? 學(xué)生上了很多課,反而覺得很迷茫,這些課的意義是什么?? 為什么有這么多的原理,數(shù)據(jù)結(jié)構(gòu),模式和算法?? 不知道我學(xué)的東西有什么用,怎么用。老師似乎不想告訴我們這些課程在實踐中的意義? (或者他們也沒實踐過? )。學(xué)生只有死記硬背來應(yīng)付考試,考試后全忘記。
c)?打好基礎(chǔ),其他自學(xué)!? 好好學(xué)基礎(chǔ)課,特別是算法, 數(shù)據(jù)結(jié)構(gòu),? 編譯原理,操作系統(tǒng) 。 其他課的內(nèi)容用到了自己學(xué)就可以了。
d)?不光是代碼!? 軟件教育不是孤立體,希望在軟件教育中把文科的知識聯(lián)系進來,和設(shè)計聯(lián)系起來; 把軟件/IT 行業(yè)有趣的發(fā)展歷史 放進來 (講講圖靈,馮 諾依曼,講講Smalltalk, 各種語言的源和流)。培養(yǎng)學(xué)生對這個行業(yè)的興趣、熱情和敏感。 提倡互動,介紹同學(xué)上相關(guān)的論壇,網(wǎng)站,開拓視野。
?
學(xué)生的眼神告訴我...
我教的這些學(xué)校都是號稱 Top 3,? 學(xué)生都非常聰明, 他們也有很多壓力: 出國, 找工作, 找實習(xí),? 完成實驗室老板的任務(wù), 找男/女朋友并拍拖, 三國殺, 上網(wǎng), 在宿舍里"宅", 等等。 我也跟一些學(xué)生聊過如何安排時間的問題。 一些學(xué)生清澈的眼神告訴我,?他們最關(guān)心的是?-
???????
??????? 怎么用最小的代價, 讓我過了這門課!
?
?
?
?
?
?[作者介紹:? 鄒欣 微軟亞洲研究院 研發(fā)主管 寫程序和PPT 為生。 研發(fā)的項目有學(xué)術(shù)搜索 和 旅游指南。? 他在清華大學(xué) (2007 - 2009) 北大軟件學(xué)院 (2007 - 2010) 北航 (2009)?講授 <現(xiàn)代軟件工程>.? 寫過 <移山之道> <編程之美> (合著) ]
?
?
總結(jié)
以上是生活随笔為你收集整理的现代软件工程系列 学生和老师都不容易的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php ignore special c
- 下一篇: 大白菜pe解锁bitlocker_微PE