团队阅读——怎样学习软件工程
看到這個題目,我首先想到的是鄒老師對于軟件工程教學(xué)負(fù)責(zé)的態(tài)度和踐行的方法。鄒老師在課堂上跟同學(xué)們的互動一直就非常高,對同學(xué)們項目工程的進展都給予了十分詳?shù)年P(guān)注。現(xiàn)在相當(dāng)于做個調(diào)查,讓我們從受教育者的角度,談一談對軟件工程教育中的看法。
首先我們閱讀了給出的幾篇關(guān)于軟工教學(xué)的材料:
一個是軟件工程不等于計算機科學(xué)(http://blog.sina.com.cn/s/blog_553f355101017g6l.html),另一個是軟件工程教育中實踐者的反思理論(http://blog.sina.com.cn/s/blog_553f355101017j8q.html)。兩篇都是譯文,譯者是新悅論壇的博主靈鳳。還有一個是關(guān)于軟件工程教育和多學(xué)科結(jié)合的(http://norvig.com/hybrid-research.pdf)。
軟件工程和計算機科學(xué),都是從傳統(tǒng)數(shù)學(xué)發(fā)展而來的,但與傳統(tǒng)數(shù)學(xué)都有本質(zhì)的區(qū)別。同時這兩者之間也有相互聯(lián)系的地方。計算機科學(xué)顯得更為理論化和嚴(yán)謹(jǐn),許多命題有明確的,有正式的結(jié)果,即使是對于其中開放性的問題,我們期待的新的結(jié)果也有正式規(guī)定。對于軟件工程領(lǐng)域,相對而言令人感到有些不靠譜。許多東西沒有明確的概念界定,結(jié)果的描述都是一般(usually)或者大致(general);今天的工作對明天的幫助可能有也可能沒有;新的方法往往推翻舊的方法。軟件工程中的主題都有一個共同的屬性:直接涉及人類活動的(directly involves human activity),這些學(xué)科的結(jié)果可能被人類所用,但他們的結(jié)果不會直接影響到人類。軟件工程有人類必不可少的成分,例如軟件的可維護性,安全性,可塑性等。從聯(lián)系上看,經(jīng)典的計算機科學(xué)有助于軟件工程,但不是全部。良好的軟件工程還包括創(chuàng)意,遠見,多學(xué)科思維和人文科學(xué)。
根據(jù)以往教育工作者反思得出的經(jīng)驗,學(xué)生通過實驗室實踐——一種建筑學(xué)校的基本訓(xùn)練方法——通過一個具體的軟件工程項目的開發(fā)和改進,能夠更深刻的學(xué)習(xí)與之相關(guān)的理論知識。軟件不是一種傳統(tǒng)意義上的產(chǎn)品,比如房屋,工具之類的,其設(shè)計已有設(shè)計對象的影響。這使得開發(fā)軟件系統(tǒng)過程中有兩個重要因素:一是復(fù)雜性,二是有效的溝通。軟件作為一個工程化的產(chǎn)品,強調(diào)高效,可靠,功能強大,易于維護。因此軟件開發(fā)專業(yè)化的,系統(tǒng)化的方法加以指導(dǎo)。采用實踐者反思的方法,學(xué)生不能想要什么老師就教什么,而是要訓(xùn)練他們:要以自己的方式或手段來獲取成果。沒有人能看到他,他不能看到剛才自己'說'的過程,雖然說可以引導(dǎo)合適的他們看見,從而幫助他看到他所需要看到的。更具體地說,在軟件工程方面,如果我們能更好的理解一個軟件系統(tǒng)的開發(fā)過程,我們就可以更好地去指導(dǎo)這一過程。
假如一個杰出的結(jié)構(gòu)工程師,一位對建筑材料,應(yīng)力和應(yīng)變,載荷分布,風(fēng)切變,地震力等方面了知識如指掌的世界級的專家,在設(shè)計一棟建筑物時,可能與客戶有一個很糟糕的談話,不能設(shè)計一個令人滿意的居住的空間,白談?wù)搶徝栏辛恕3晒Φ募軜?gòu)師,包括創(chuàng)意,遠見,多學(xué)科思維,和人文學(xué)科。搞軟件系統(tǒng)就像搞建筑一樣,先要由架構(gòu)師設(shè)計軟件的架構(gòu),而且這個架構(gòu)師應(yīng)該是身經(jīng)百戰(zhàn)的,對各方面的軟件系統(tǒng)都有熟悉。這類人才要具備多方面的思維和知識,特別是未來的人類將很大程度上工作、學(xué)習(xí)和生活在軟件這個虛擬社會里,如何保持一個軟件系統(tǒng)的可持續(xù)性至關(guān)重要,需要有這類人持續(xù)關(guān)注整個過程。
聯(lián)系到我們自己的計算機學(xué)科的學(xué)習(xí)過程,從大一到大四的課程安排上可以看出,這是一個有結(jié)構(gòu)的有計劃的學(xué)習(xí)體系,先驅(qū)課程與后繼課程依序,理論課程和實踐課程結(jié)合,工科課程與人文課程相輔,因此我個人感覺還不很不錯的。關(guān)于改進,我讀了鄒老師另一篇博客:習(xí)而學(xué)的方法才有了啟發(fā)。
然后我們采訪了幾位前大班的同學(xué),向他們了解了一下他們的軟件工程課的相關(guān)情況。相比于我們的軟件工程課,他們的課看起來確實顯得有些水。
先從作業(yè)方面來講,他們平時基本就沒有什么作業(yè),只有一個期末要交的大作業(yè)。而我們則是做了個人作業(yè),結(jié)對編程,團隊項目,從中收獲的東西相對比較多。個人作業(yè),結(jié)對編程什么的他們完全沒有想過。
接著談在做項目時的開發(fā)技巧,或者說叫開發(fā)方法。我們通過上課和閱讀老師的博客了解到,做項目并不是高興了就寫一點,不高興就拖兩天這么做完的,都要有一定的系統(tǒng)的開發(fā)方法,比如說敏捷開發(fā)之類的。而采訪的同學(xué)說,他們的大作業(yè)也就是一個人寫一點,然后湊到一起,看看結(jié)果如何,什么時候?qū)懲耆Q于每個人自身,沒有一個固定的PM監(jiān)督每天的工作,調(diào)配每個人的任務(wù),也沒有tfs之類的東西讓大家認(rèn)清楚自己的工作任務(wù)和工作時間,以及同組同學(xué)的代碼進展。
還有一點就是團隊協(xié)作。前面已經(jīng)說到他們的軟件工程大作業(yè)是團隊項目,那么按我們的理解應(yīng)該有固定時間的討論或者說組會。而他們說他們之間基本沒有交流,他們認(rèn)為每個人的代碼風(fēng)格都不同,溝通起來應(yīng)該是一件比較困難的事情,特別是大神和其他組員的,碼代碼能力也不同,為了追求效率,一般都是大神完成大部分工作,其他成員打打雜,完成一些比較輕松的活,這也許是效率最高的方式。
談到對我們的軟件工程課的看法,他們說的第一點就是我們沒有考試,這是讓他們羨慕的地方。不過他們也覺得我們的軟工課和他們的軟工課完全不是一個概念,我們學(xué)到的東西確實比較多。問到他們愿不愿意上我們的軟工課,他們還是覺得作業(yè)量是他們難以接受的,不過絕對比他們的軟工課有價值。
總的來說,他們的軟工課就像一門普通的必修課,期末交個大作業(yè),然后老師劃重點,大家復(fù)習(xí)準(zhǔn)備考試。一個學(xué)期下來,估計學(xué)到的東西也很少,真正碼代碼的同學(xué)還能有些進步,其他的人基本就是水過了。我記得這話也聽上一屆的一個學(xué)長說過,他們的軟工課基本就是這樣水過的。這讓我又想起了大二下的面向?qū)ο?#xff0c;基本就是一樣的形式,最后自然是過了就過了,到現(xiàn)在也不理解那門課的意義。
最后談一談我們對于軟件工程應(yīng)該怎么上的理解。像前大班的上課方式確實有些不足,如果不對團隊項目有系統(tǒng)的規(guī)劃,肯定是不合適的。但是從另一方面來說,很多大學(xué)生都喜歡作業(yè)少的課程,這也是一個矛盾。我們覺得,像我們這樣的上課方式一定是值得推崇的,它不僅是一門普通的讓我們?yōu)榱藢W(xué)分而學(xué)習(xí)的課程,而是一門讓同學(xué)學(xué)到真正的技術(shù),真正的軟件開發(fā)方法和技巧和課程。但是考慮到同時進行的別的課程也有相當(dāng)大的作業(yè)量(特別是不低的掛科率讓人很糾結(jié)。。),我們覺得這樣的課其實可以專門拿一段時間來上,相當(dāng)于一個小學(xué)期之類的東西,一段時間全用來搞這一門課,這樣也許能使這們課的意義更大。
?
參考資料:
1.《軟件工程≠計算機科學(xué)》http://blog.sina.com.cn/s/blog_553f355101017g6l.html
2.《軟件工程教育中的實踐者反思理論》http://blog.sina.com.cn/s/blog_553f355101017j8q.html
3.http://norvig.com/hybrid-research.pdf
?
轉(zhuǎn)載于:https://www.cnblogs.com/coding-hundredOfYears/archive/2012/12/12/2814276.html
總結(jié)
以上是生活随笔為你收集整理的团队阅读——怎样学习软件工程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 定制个性化的专属彩铃
- 下一篇: 水星 MW303R V1 无线路由器修改