Re: [問卦] 就問 為什麼學校軟體工程不教這些?

作者: virnux (真心離傷心最近)   2021-09-29 02:15:01
你這個問題問得真是太好了,我建議你親身回到學校去體驗看看問題出在哪個環節。
如果你礙於時間因素不方便回到大學校園。那可以聽聽看我對於這件事的理解。
首先從學校系所課程裡的三個利害關係人的態度談起,最後再來講講業界的態度。
學校系所課程裡主要的三個利害關係人依據其涉及範圍及程度排序後大概是:
1. 教授
2. 學生
3. 系所行政及學生家長
先從對教授課程內容影響最深的教授說起好了
我認識一個對軟體工程專業程度及推廣程度都算滿有心得的教授,我曾經問過該位教授
為什麼學校不開課專門講設計模式跟某些版控及DevOps軟體,當然該校開設的部分課程
中已經有"軟體工程"這門科目了,其中也有些許的篇幅稍微提及設計模式及軟體架構等等
但是我當時覺得,該校的課程內容僅僅只是講到設計模式的皮毛而已,對學生的實際應用
能力幾乎沒有幫助。
這位教授只是笑笑的跟我說:"每學期的教學時數相當有限。我們當老師的就是引進門而已
,要不要再繼續研究哪個領域就看學生個人了,有興趣的學生自然會深入了解。至於在課
堂上教授特定軟體的話,學生畢業後未必會用的到,在學校就是讓他們稍微接觸一下,讓
他們有個概念知道有這個軟體是做甚麼用的就好。"
我當時還以為這位教授是個沒有教學熱忱的老師,直到我接觸到學生們才知道這位教授為
何會這麼說。
連一個對軟體工程有深刻了解和大力推廣的教授都無力施展了,那對軟體工程學派沒有涉
獵的教授又怎麼會在乎呢?
講到學生,學生雖然不會直接影響授課內容但是我覺得學生是這些環節中最關鍵的一環
我接觸到的學生雖然不是什麼一流大學,但好歹也是國立的學生,在有唸書的學生中算是
中間值吧,既不到特別優秀也不到特別差勁。
在課程中很明顯感覺得出來學生的觀念還停留在某某某會做甚麼樣的程式耶好厲害這種做
出來能work就好的想法,縱使前幾個學期已經學過軟體工程的基礎理論也是如此。學生間
的價值觀是:"完成的程式的花俏度或是運用的語法越罕見代表技術越厲害"。學生並不
在乎自己的程式是如何從無到有建構出來的,更遑論測試跟註解這些在單人開發且無須後
續維護下看起來幾乎完全不必要的東西。換句話說,學校中學到的軟體開發理論在他們的
作業過程中近乎無用。我要寫註解幹嘛,這code我寫的你問我我答得出來就好啊、我給變
數隨便取名有甚麼關係,我知道那個變數是做甚麼用的阿、我的code邏輯那麼單純,硬要
套設計模式要做甚麼……諸如此類的。學生看到的是如果乖乖的課堂將上學到的應用在作
業上反而要花更多時間成本卻看沒有任何後續的好處,所以他們會覺得課堂上的理論只是
空話、只是書本上的理論。也確實如此,簡單的單人開發且不需要後續維護的一次性軟體
寫註解、測試案例、規格說明書反而會更花時間,而且架構簡單的東西硬要套設計模式更
是不合理的行為。
因此,我曾經想過那要是教授給他們困難的作業讓他們作可以使他們養成使用設計模式的
習慣嗎? 不過我後來很快地就放棄這個愚蠢的想法了,班上有大半的人對寫程式是沒有興
趣,畢業後會走coding相關行業的不到1/3,更要命的是學生想要自如地應用設計模式的
基本能力不夠。大部分的學生都是看著課本一步一腳印的學coding的,哪一個章節教什麼
語法就跟著操作,很少有學生會去思考語法的應用,這個學習方法在碰到比較抽象的概念
的時候就會出現一知半解的狀況,像是學生可能知道Java中轉型(Polymorphism)的用法,
但是對於為何要轉型及何時該應用轉型能有自己的理解的就極少。而且能理解轉型的用法
在班上已經算是高材生了,更多的同學連物件導向都搞不清楚,不知道物件的用途跟應用
方法、把code全都寫在main方法裡面,如果要叫這些學生自如地應用設計模式可能是難如
登天。
再講到家長跟系所行政,這個部分就真的挺可悲的。
我們的政府總是慣於喊口號勝於在基本功上下苦功,如果說學生年紀小見識未廣盲目追求
華麗的東西而忽視基礎還情有可原,但是我們的大人也不了解基本功的重要性。
而且受到口號的影響,現在家長聽到AI、大數據這些名詞就覺得讓孩子學這個很有前途。
既然家長這麼喜歡,現實面上系所為了招生也不得不開更多的AI、大數據為科目
名稱的課程。而且不只招生連高中資訊體驗營之類的營隊或是XXX推廣課程都是要拿AI、大
數據這些當名目才有人來。只能說現在大數據、AI這幾個詞就是比較吃香阿。
最後給版友總結一下,
軟體工程幾乎可以算是一個學門,就如同建築學一樣。但是這個新興學門目前還算小,
只能依附在資訊科系底下,而且老教授他們當年念書可能是沒有系統化的軟體工程理論。
所以不是每個資訊系的教授都重視軟體工程,而且限於每學期的授課時數,教授也沒有
時間深入講授軟體工程理論。而大部分的學生是不理解軟體工程理論或程式語法的抽象
概念以至於不適合在課堂上講授進階的開發方法及設計模式應用實踐。家長則是因為受到
AI、大數據這些口號的影響改變喜好而使得資訊系所紛紛將課程資源轉向容易招生的這些
科目。
※ 引述《lycppt ()》之銘言:
: 為什麼學校軟體工程不教這些
: 開發理論、策略及實踐啊?
: 版控理念及策略
: 設計模式
: 軟體架構模式
: 持續性整合 / 部署
: CMMI
: 敏捷開發
: 隕石開發
: 測試驅動開發
: 模型驅動開發
: 行為驅動開發
: 領域驅動開發
: Clean Code
: Clean Architecture
: 話說以上這些是要歸在資工還是資管啊?
: 整天只想搞機器學習 深度學習
: 弄個驚天動地的 AI 演算法
: 務實點好嗎
: 沒這些工程方法把它們整合在一起
: 是有三小路用逆
: 系統架構搞的跟違建危樓一樣
: 程式碼寫的跟義大利麵一樣
: 有個厲害AI 演算法也枉然
: 就問 學校軟體工程為何不教這些?
:

Links booklink

Contact Us: admin [ a t ] ucptt.com