2004-2005學年,Pam Rostal和Dave West在NMHU(New Mexico Highlands University)啟動了一個獨特的學位教學計劃:要求學生在實際項目中廣泛開展敏捷實踐。本文講述的就是有關(guān)這個教學計劃的故事——雖然此計劃目前已經(jīng)停止,但很可能只是暫時的,他們正在爭取2007學年重新啟動。但不管計劃是否重啟,這次實踐無論是對學術(shù)界,還是產(chǎn)業(yè)界,都將點燃思想的火花:我們要大膽創(chuàng)新,敢于開展一些以前未曾想及的實踐,努力提升我們對開發(fā)、測試和項目管理人員的教學成果。 最初,我們是想建立這樣一個大的群體——大家可以全身心投入軟件開發(fā)藝術(shù)的學習和掌握,一起為“人人為軟件,軟件為人人”(譯者注:原文為“software by people for people”)的目標努力。 一片雪花,必須有凝結(jié)核才能形成其復雜的晶體結(jié)構(gòu)。在我們期望建立的群體中,同樣需要這樣的催化劑。教育(以及再教育),是形成新群體的基本要求;歷史悠久的學校——如最早的古希臘學園和西藏寺院——恰是專門開展群體教育的場所。 對于我們來說,這個凝結(jié)核就是在一個較小的(3000學生左右)公立大學(我們選擇的是在新墨西哥州拉斯維加斯的NMHU)展開的新學位教學計劃。這個教學計劃在幾乎所有方面都有考慮,其基準點,就是我們標識中展示的核心價值觀。 下圖所示的標識,涵蓋了軟件開發(fā)的核心理念,包括它是一門專注于現(xiàn)實構(gòu)造(Reality Construction1)的規(guī)律性藝術(shù)、在平臺軟件上展開工作、以不同但充滿熱情的人為中心、依靠集體力量、又全體參與貢獻的群體實踐等等。如果標識中五邊形各邊所示關(guān)注點能彼此維持一個良性關(guān)系,那么這個團隊就能創(chuàng)造出令人驚訝的軟件開發(fā)能力,從而實現(xiàn)教學計劃的核心目標——由被教育者組成的研發(fā)團隊,達到10倍于平均水準的生產(chǎn)力。 從2004年8月開始,20個學生和兩位教師開始一起努力。以下就是有關(guān)他們的故事了。 為什么現(xiàn)在來講兩年前的故事?因為計算機科學教育工作者和社會需要知道計劃的完成情況。當學生發(fā)現(xiàn)需要真正掌握,而不是滿足于用給定工具實現(xiàn)目標時,需要一個合適的群體環(huán)境,引導他們克服困難。即便非學術(shù)界也能從這些教訓中學到東西,最終,無論是教育機構(gòu)還是軟件開發(fā)組織,都需要形成價值群(Value Shop2)——擁有能根據(jù)用戶的實際情況提供解決問題服務(wù)的能力。 請到我們的學生活動室來——接待室的門一直是開著的。讀書小組會議、拜訪名人大家等通知都帖在門上。請注意門左邊的微波爐和右邊的顯示器,即使屋里沒人的時候,路人也可以駐足觀看PowerPoint幻燈片,它展示了我們最近的工作進展和計劃中的一些事情。 教學計劃具有開創(chuàng)意義的NMHU軟件開發(fā)學習班(Software Development Apprenticeship,SDA),設(shè)在新墨西哥州拉斯維加斯的一個小鎮(zhèn)上,這里海拔6500英尺,人口約15000,緊靠崎嶇綿延的Sangre de Cristo山脈。這些矗立在人們面前的大山,就像我們的教學計劃,看起來似乎難以逾越。只有到達山巔的人,才能得到應有的獎賞;常人不可及的美景,屬于選擇攀登的人。 在新墨西哥北部地區(qū),絕大多數(shù)家庭壓力大、普遍貧窮,因此這里的學生,在很小年齡時就必須與命運搏擊。因此,這些學生非常希望改變自己和自己所在群體的生活面貌。他們能深刻理解家庭和群體的涵義,所以自然也就能認識到成為我們正在建立的群體中一員的潛在價值。我們的標識和SDA手冊,對這個理想模型做了明確定義: X*10(意味著10倍),即非常有名的、某些開發(fā)人員的能力為平均水平的10倍——這也是我們對所有畢業(yè)生的期望。
我們一直在與ACM、IEEE3的相關(guān)標準鼓吹的能力模型做斗爭,保持了對我們自己信念的執(zhí)著。當然,現(xiàn)有一些好的能力標準成為了我們定義模型的一個子集,此外,在其他很多方面增加了大量超越現(xiàn)有技術(shù)和實踐規(guī)范的要求——畢竟,我們對學生的期望遠遠超過世界上任何其他學校的教學規(guī)劃。我們希望學生完成六年的學習計劃,其中大部分和培養(yǎng)正規(guī)畢業(yè)生的目標類似,但同時要求培育對現(xiàn)實中開發(fā)工作的深入經(jīng)驗,這在目前任何正規(guī)大學的本科學位四年學習計劃中,是不存在的。我們計劃開設(shè)的所有科目,都可以說是跨學科,或者說與具體課程獨立的;在很多方面,與傳統(tǒng)做法都有很大不同,比如允許多門課程同時規(guī)劃、在同一個地點由多位教師教授,再如對物理空間的要求等等。因此,我們希望灌輸給學生的這種意識,只能通過非傳統(tǒng)的、強調(diào)責任、反饋、協(xié)作和面對問題4時創(chuàng)新解決辦法的教育模式,才能逐步培養(yǎng)起來。 在目前已經(jīng)為大家認可的教育模型中,我們選擇了系統(tǒng)思想(Systems Thinking5)、誠信領(lǐng)導力(Authentic Leadership6)等,對這些概念的學習,有利于縮小學生對世界的理想認知和世界實際模樣之間的差距。另外,我們還在模擬學生將來真實工作環(huán)境方面下了大公司,白板、圓桌、轉(zhuǎn)椅、粉筆等一樣都沒有少,如下圖: 培養(yǎng)模型第一步,是要為我們的教學計劃設(shè)計標識——標識會織在用不同顏色表征主人學業(yè)等級的襯衫上。具體如下:
這里所說的資質(zhì),指的是iii級能力,資質(zhì)掌握水平的定義如下:
每個學生畢業(yè)至少需要獲得64個學分,他們可以在每學期的3-15個學分中任意選擇科目。因此教學計劃必須考慮到這一點。為此,我們提出了能力水平的概念,也就是將每學期的15個學分對應到15個能力等級。一個學生要想在一個學期內(nèi)拿到15個學分,可以在將3項能力掌握到等級5、5項能力掌握到等級3、15項能力掌握到等級1等組合中自由選擇。 每個學生還需指定個人學習計劃(Individual Education Plan,IEP),說明自己將在當前階段(通常包括8周;或每學期分兩個階段)掌握哪些能力。IEP中的硬指標,是其包含的待學習能力必須反映7被指派給他們的項目相關(guān)的知識和技能。 因此,課程不是預先指定的。教師必須根據(jù)每個學生的IEP準備和實施對應的教學計劃。如果IEP的要求超出了現(xiàn)有教師的專業(yè)水平,則外面的大師(世界著名的專家)會來接替。 我們會請求各種客戶為學生提供實習項目,但無法保證客戶的需求能完全覆蓋要求的全部能力資質(zhì)。因此,我們也會開展一些內(nèi)部項目,如在商業(yè)世界中的一些非熱點領(lǐng)域,人工智能、非標準語言(比如Squeak/Smalltalk)、嵌入式軟件等等。 能力的跨度范圍很大(如下表),必須保證學生根據(jù)自己的IEP總能選擇到所有合適的科目:
教學工具我們沒有標準的教科書,選擇范圍很大,比如,第一學期的書目表如下:
其中一些(如《The Mythical Man-Month》)作為經(jīng)典推薦,其他一些(如《Agile Software Development with Scrum》)則是因為教學計劃對這些內(nèi)容的強制要求。我們采用Scrum作為教學和項目中的管理方法。還有一些,被推薦原因是我們認為這些書可以幫助學生了解創(chuàng)新在產(chǎn)業(yè)標準和生產(chǎn)工具進步中的應用——比如《Java Modeling in Color with UML》,講述了顏色在標識原型模式(archetypal pattern)、反模式(anti-pattern)中的應用。 學士學位所要求的非SDA課程包括:
通過鼓勵學生在SDA范疇內(nèi)完成各項課程的學習任務(wù),我們希望能在每天的交流中持續(xù)、反復強化跨學科理念。每周的讀書小組會議,也為跨學科問題討論提供了機會。星期三下午或晚上,我們還會聚在一起討論描繪軟件開發(fā)歷史中激動人心時期大人大事的圖書(如《Dealers of Lightning》和《he Dream Machine》)、網(wǎng)絡(luò)發(fā)展過程中做出了巨大貢獻的人物(如Ted Nelson、Jason Lanier)、個性測試(如Meyers-Briggs Type Index,幾乎每個人都作過),甚至與計算機相關(guān)的一些散文(如Alan Kay的《The Early History of Smalltalk》)。會議可能在咖啡館、實驗室舉行,可能是在白天,也可能安排在晚餐時(因為需要和學生們課程外的時間調(diào)配)。 師資團隊在每個學期,我們舉行兩次授職儀式,因為學生已經(jīng)到達新水平,襯衫和名片可以更換了,其行為準則(Code of Conduct)也需要做相應調(diào)整。下圖即授職儀式現(xiàn)場,因為學校規(guī)定,圖中沒有出現(xiàn)學生肖像。 授職期間,每個人都有在3-7天內(nèi)與大師分享專業(yè)知識的機會。其中一些人在業(yè)界可是赫赫大名,如:
其他一些在明尼蘇達州當?shù)匾彩窍碛惺⒚?,比如?/p>
TDD的好處直接從教室擴散到了我們的用戶——新墨西哥州政府辦事處、本地一個小型非營利機構(gòu)和拉斯維加斯城里的一個校區(qū)。州工程處辦公室可利用我們的客戶管理工具直接給我們傳遞開發(fā)相關(guān)材料,共同參與任務(wù)。這樣,通過Scrum和TDD在此項目中的實施,用戶不再需要向以前那樣耐著性子,在漫長的發(fā)布周期內(nèi)默默等待。 日常學術(shù)和項目活動我們?nèi)粘9ぷ髦攸c主要放在學習班上,每周召開一次計劃會議,介紹本周的課程情況,并對上周情況作一次回顧。 團隊內(nèi)部的日常會議,不定期舉行,因為每個學生也有自己的安排。像eWaters組曾規(guī)定每天12:30舉行例會,但因為實際中很少人能參加,白板就逐漸成了主要的信息源。下圖展示的是開發(fā)中心建設(shè)項目——安裝BEA WebLogic、Informix,確保整個腳本能在Eclipse中執(zhí)行,且服務(wù)器能訪問數(shù)據(jù)庫——的進展過程。圖中白板的內(nèi)容包括每個學生需要完成的任務(wù),還有我們wiki的URL地址(學生們在這里可以記錄他們每天的進展情況)。 學術(shù)討論會是了解學生本周對所學內(nèi)容掌握情況的極好方式——從學生的學習計劃來看,每周安排兩次為宜。上圖中的白板描述了一次典型的學術(shù)討論會的情況,包括Java小應用和Java應用開發(fā)、向文件和數(shù)據(jù)庫寫入數(shù)據(jù)等內(nèi)容,展示了應用程序迭代式和遞增式的實現(xiàn)過程。討論會特別注重體驗,通常由兩或多個學生坐在一起展開。我們發(fā)現(xiàn),一些帶有探索性的、非確定性的任務(wù),最好由兩個學生先獨立學習,直到他們覺得事情有了大致眉目再坐到一起。而確定性的活動和工作討論會,則最好由兩個學生結(jié)對完成,特別是其中一個學生比另一個經(jīng)驗豐富的時候。從我們的實踐來看,鼓勵學生與不同的人結(jié)對學習,勢在必行;否則,一個學生可能越學越有動力,而另一個越來越被動。在我們的學習班中,尤其在一個是男同學,另一個是經(jīng)驗更少的女同學時,這種情況特別明顯。 當然,結(jié)對并不僅限于學生,教師結(jié)對工作時,也可以像學生結(jié)對那樣實現(xiàn)師生交流——直率地指出問題,同時也要能提出建設(shè)性意見;可以激烈爭論,但常常也可以用點小幽默化解大家的情緒。 實踐證明,與客戶配合是所有結(jié)對方式中最為困難的(和學校管理人員結(jié)對除外)。最為成功的是維護本地校區(qū)計算機實驗室PC的工作,因為其中的任務(wù)是彼此獨立的,可以由多個小組在不同學校同步進行,而且任務(wù)的要求清楚,幾乎所有學生都力所能及。另一個比較成功的項目是為位于60公里外圣達菲的州工程處辦公室更新JSP代碼,任務(wù)獨立且難度不高。我們在這個項目上一個優(yōu)勢是學生開發(fā)組在本地搭建了用戶的開發(fā)環(huán)境,因此我們需要安裝應用服務(wù)器軟件、配置連接池、做好版本控制、用異常復雜的ANT腳本實現(xiàn)代碼編譯和發(fā)布, 并做好需求整理工作。 第三個項目周期為三年,要求SDA為某非營利企業(yè)開發(fā)一個財務(wù)和市場活動管理系統(tǒng)。此項目要求按照企業(yè)資源管理計劃,實現(xiàn)訂單、庫存、網(wǎng)站以及帳目管理。開發(fā)小組成員會在每天下午5:00一起討論項目進度,評估剩下任務(wù)所需的開發(fā)時間。在這個項目中,我們遇到了很多困難,比如用戶參與少、新手對行業(yè)概念理解的難度大、項目組內(nèi)部壓力大,以及平臺、過程、角色和責任等任何商業(yè)開發(fā)組織都會面臨的決策問題。但是,項目組成員在這個過程中收獲了很多東西,如項目管理、社會交往和用戶關(guān)系等從來不可能在非真實用戶和非真實項目中得到的知識。 自己向自己學習日常經(jīng)歷是我們每周回顧會的素材。每周五,在團隊的回顧會上,將對一周的成果做出總結(jié)——我們學到了什么,我們不應該忘記什么,應該忘記什么,下周我們應該有什么改進。一般,回顧會都是緊跟著耗時一小時左右的午餐——匹薩、三明治或者便餐——舉行。通過這種方式,可以增進大家感情,暢所欲言。有人會搶占門旁的軟椅(見下圖),有音樂天賦的學生還可以操起吉他,在角落里低彈慢吟! 每次的周末回顧會都會有不同的特點。比如初期時,他們最關(guān)注的是后勤準備工作,因為此時計劃的階段性時間難以確定、沒有設(shè)備、計算機環(huán)境沒有搭建好、彼此溝通渠道不明確等。對這些學生來說,有太多不確定性因素了。但慢慢地,他們的分析、表達、決策和根據(jù)問題設(shè)計解決方案的能力會隨著一次次回顧會的延續(xù)而逐步提高。 類似“我們知道星期三的討論會是一種浪費(因為我們當時就做過評估了),因此沒有再舉行的必要”這樣的評論,是實現(xiàn)真實、自然、可用行動或語言在彼此之間,或?qū)處熞约皝碓L人員反映看法的一種嘗試。其他系的教師看到我們的學生在自己老師和指導員不在的情況下,能自發(fā)舉行回顧會議并對下周任務(wù)提出建議時,肯定會大吃一驚。 結(jié)果與領(lǐng)導層接觸的機會,以及通過閱讀、研究課程和項目工作得來的經(jīng)驗,可以直接促成某些學員就業(yè)。我們的一個學員,現(xiàn)在澳洲負責一家銀行的國際事務(wù)(不可否認,她本來就經(jīng)驗豐富,但她認為SDA給了她承擔這樣一個極富挑戰(zhàn)性工作的工具——尤其是Scrum和用例——和信心。還有兩個客戶雇用了我們的學員,繼續(xù)在學習班時啟動的工作。有些學員已經(jīng)在半工半讀,不斷積累和運用著學到的管理、社交和技術(shù)知識。 有一個學員已經(jīng)去了明尼蘇達州,希望推廣他在新墨西哥州開發(fā)的一項技術(shù)——FIT,是他在為州工程處辦公室做項目時,在Charlie Poole指導下開發(fā)的一個測試工具。還有一個去了離家更近的一所加拿大大學,計劃完成M.B.A學位,并充分開發(fā)他在各種環(huán)境下讓計算機工作方面的豐富知識。其他方面的結(jié)果則不太理想。一個助教因為不能適應環(huán)境差異而離開了我們。計劃本身也已被NMHU校長Manny Aragon(現(xiàn)在已經(jīng)被學校解雇)停止。絕大多數(shù)學員四散離去,不過比較核心的六個人還在繼續(xù)工作,等著計劃在圣達菲的另一所大學重新啟動。其他人還彼此保持著聯(lián)系,如果計劃重啟,他們還可能再次加入。希望在2007年春,我們能夢想成真吧。 意義在OOPSLA 2005上,一些教學模式研究機構(gòu)負責人和我們一起討論了他們的模式如何與我們模式的結(jié)合,以及還可能存在的缺失等問題。 最后,我們討論認為的成功模式,主要圍繞三個方面展開——團隊內(nèi)交流(Community Interaction)、社會實踐(Social Interaction)和學習(Learning)——如下面三圖所示。其中藍色節(jié)點未列為模式,與粉紅節(jié)點并存;六邊形節(jié)點是模式語言(Pattern Language)而非單個模式。 SDA模式——團隊內(nèi)交流(Community Interaction) SDA模式——社會實踐(Social Interaction) SDA模式——學習(Learning) 后來對系統(tǒng)思想8的研究也證實了我們所列的三個維度在所有社會系統(tǒng)中的通用性;另外,我們忽略的第四維是對市場——如可能參加計劃的學生、大學管理者、各團體負責人甚至潛在用戶(現(xiàn)存用戶已被定義為我們?nèi)后w的成員)——中風險承擔者的外部接口。盡管不對這第四維多加注意看似可以降低計劃復雜度和成本,但對它的忽略,其實是暗藏風險的。 計劃停止后,我們以系統(tǒng)思想為手段,努力總結(jié)歸納我們已經(jīng)發(fā)現(xiàn)和應用的一些模式,希望能給那些渴望提高團隊、院系和組織能力水平的人一些幫助。我們用一個叫作autochthony的工具整理了我們的研究成果,不過在這里就不贅述了,那又是另一個話題。 在這次會議上,只有我們的學生得到了自我展示機會。觀眾相繼被我們的巨大變化震驚了,羨慕這些學生在知識和能力上取得的巨大成功。 因為在教學計劃中強調(diào)敏捷原則,并在教學實踐中成功運用了這些原則,我們引起了敏捷聯(lián)盟(Agile Alliance)的巨大興趣,并得到了支持。在上月于明尼阿波利斯舉行的Agile2006大會上,很多教師、學者和學生都表示非常希望加入可能在圣達菲重啟的SDA計劃;在這次會議上,該計劃的重啟成了一個熱門話題。 1此短語來自于Christiane Floyd和其同事的圖書《Software Development and Reality Construction》,Springer-Verlag出版公司,1991年。 2Stabell, C.和Fjelstadt, O.的《Configuring Value for Competitive Advantage: On Chains, Shops and Networks》,見《Strategic Management Journal》第1998.19期,第413-437頁。 3Computing Curricula 2005,參看http://www./education/curric_vols/CC2005-March06Final.pdf。 4http://www./。 5Gharajedaghi, J.的《Systems Thinking: Managing Chaos and Complexity: A Platform for Designing Business Architecture》(第二版),Butterworth-Heinemann出版社,波士頓,2005年。 6Terry, R.的《Authentic Leadership: Courage in Action》,Jossey-Bass出版社, 美國舊金山,1993年;以及Terry, R.的《Seven Zones for Leadership: Acting Authentically in Stability and Chaos》,Davies-Black出版社,美國Palo Alto,2001年。 7IEP還要反映學生的興趣、能力趨勢,并考慮與他所修非SDA課程的協(xié)同。 8Gharajedaghi, J.的《Systems Thinking: Managing Chaos and Complexity: A Platform for Designing Business Architecture》(第二版),Butterworth-Heinemann出版社,波士頓,2005年。 作者簡介Pam Rostal,位于雙子城的面向?qū)ο蠹夹g(shù)用戶組(Object Technology User Group,OTUG)負責人,Trissential公司通過信息技術(shù)實現(xiàn)組織提升領(lǐng)域的專家。她在應用和企業(yè)的架構(gòu)設(shè)計、業(yè)務(wù)和技術(shù)過程管理、組織結(jié)構(gòu)調(diào)整和業(yè)務(wù)分析等方面具有豐富實踐經(jīng)驗。2004-2005年,她與Dave Wes在NMHU合作創(chuàng)立了軟件開發(fā)學習班。目前的研究方向是本土化研發(fā),這是一個以系統(tǒng)為基礎(chǔ)的組織架構(gòu)模型。她希望研究成果能成為她在諾瓦東南大學(位于Fort Lauderdale)的博士論文的一個部分。 Dave West,自1968年進入軟件行業(yè),1988年成為高校教師。他是《Object Thinking》的作者和《User Stories》的合作者(與Kent Beck)。發(fā)表過大量論文,并經(jīng)常在OOPSLA和敏捷技術(shù)大會上做報告。目前正在撰寫一本圖書——《Developing Systems》,2007年春天出版。他生活在新墨西哥州,但經(jīng)常為全國各地企業(yè)做咨詢服務(wù)。他希望在2008年春天到來時,能夠呆在如本文描述的那種教室里。 |
|