2008/09/08

Code是寫給誰看的?-2/4關於「課程安排」

這篇文章是要回應網友MaoYang的文章《讓程式碼像閱讀故事一樣容易》。

我認為我們的大學/研究所教育中,關於程式品質的相關課程安排還有很大的進步空間。

學校課程不符合業界需要


怎麼說呢?因為在學校中,只有工工(工業工程系)、工管(工業管理系)才會教與品質系統有關的課程,但在資訊系所卻很少開這樣的課程。

但難到資訊領域不需要注意品質嗎?如果是這樣,那為啥每間有規模的軟體公司都有設SQA、Tester?

既然業界有這樣的需要,但在資訊系所內有教軟體品質相關課程的學校卻少之又少。這表示學校的課程安排明顯不符合業界的需求。

另有一個例子是,每間有規模的軟體公司都會導入品質系統,如:ISO、CMMI。因為這個工具有助於管理軟體品質,但我們學校的課程並沒有專門講述這類工具的課程。學生如果想學,就得到民間的公司、或顧問才能學到這類工具。

那學校要教什麼呢?

軟體開發知識不足


此外,如果有一定規模的軟體公司沒有導入品質系統,也通常會有設置軟體開發流程。這個部份的知識通常應該在「軟體工程」內教授。但很可惜的,根據我上完課的結果,也實在慘不忍睹。

因為,這門課是選修而非必修,所以修軟體設計實習課程的學生中有大多數沒上過「軟體工程」,自然也沒有辦法強制要求學生採用「軟體工程」的方法來實習課程。

所以「軟體工程」內的種種軟體開發方法,對沒有實際工作經驗的學生而言,都只是課本上的理論,自然也無法體會這門課的重要性與精髓。

從這點可以看出,我們的資訊教育並沒有整體的概念,每門課程的老師都只教片斷的知識,學生得自己將這些知識拼湊成一個完整的架構,但不是所有的學生都有工作經驗,也不是所有有工作經驗的人就有能力正確地拼出這個架構。

從老師而言


因為業界並不重視「軟體工程」,老師自然也知道這個情況,所以大多數的老師不會選擇「軟體工程」作為研究領域,因為這個很不容易拿到業界的委托案。

我曾為了想繼續再念研究所,而去研究國內那些教授的研究領域是「軟體工程」,研究的結果支持了我上面的結論,在台灣真正研究「軟體工程」的教授不超過10位,更何況我從追蹤他們指導的研究生題目來看,持續研究這個議題的教授其實更少。

那學校如果不重視「軟體工程」,那要如何告訴學生:一個動輒數十人以上、金額數千萬台幣以上的大型專案要如何運作管理呢?

這讓我開始去思考我們的大學到底是怎麼教這些學生的?

我的老師是怎麼教Coding的?


我發現,大多數的老師就是照著書本上的範例、Powerpoint來講解,在下課前發一張題目,然後下次上課前交,就是這種:
  • 完全不需要分析需求的流程,因為老師作完了;
  • 也不需要作設計文件,因為老師沒有這樣要求;
  • 也不需要和其他人合作,因為老師沒有這樣要求(但我懷疑,即使老師這麼要求了,能達到真正合作分工的也屈指可數)。

但這樣的方式,並不能告訴學生業界是如何實際開發專案的。

即使老師知道業界並不是用這種方式完成軟體專案的,但依據某些不能探究的原因,他們還是這樣繼續用不合時宜的方式教導學生。

研究生的專案實作


當我進入業界服務後,終於有機會藉由外包的方式了解研究生如何藉由委托開發案實作:
  • 當外包商接下我們公司的專案後;
  • 外包商負責提供對我們(業主)進行SA和PM的工作;
  • SD和Coding就轉包給某學校的研究生們負責;
  • SD由比較資深的學長負責,當SD完成後就將系統拆解開來;
  • 然後找一些學弟妹,分別寫這些拆解後的系統程式;
  • 等到程式完成後,先經由Coding的人員初步測試;
  • Coding測試完成後,再經由SA的外包商人員測試;
  • 外包商SA測試完成後,最後再交給我們繼續測試。

我懷疑用這種方式,我們的研究生就知道真正的軟體專案開發是什麼了嗎?

小結


即便是在學校有實際的個案實作,從上面敘述的流程中可以看出:
  • 由於採用分工的方式Coding,使得大多數的成員都只能踫到被拆解開來的系統的部份流程,無法學習到完整的軟體開發流程。
  • 再加上每個專案都有時程上的壓力,
  • 再加上教授是否有心藉由專案「有系統地」教導學生的因素。

這些都是我自己認為學生無法藉由專案、了解完整開發流程、並實作的主要原因。

也就是說,從學校畢業的學生,大多,是沒有軟體開發的概念的。

沒有留言:

張貼留言