PTT評價

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

看板Gossiping標題Re: [問卦] 就問 為什麼學校軟體工程不教這些?作者
virnux
(真心離傷心最近)
時間推噓10 推:10 噓:0 →:34

你這個問題問得真是太好了,我建議你親身回到學校去體驗看看問題出在哪個環節。

如果你礙於時間因素不方便回到大學校園。那可以聽聽看我對於這件事的理解。

首先從學校系所課程裡的三個利害關係人的態度談起,最後再來講講業界的態度。

學校系所課程裡主要的三個利害關係人依據其涉及範圍及程度排序後大概是:

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 演算法也枉然
: 就問 學校軟體工程為何不教這些?
:

--

※ PTT 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.227.120.26 (臺灣)
PTT 網址

zardgasuki 09/29 02:19推認真

bisconect 09/29 02:21現在這麼多非資工系的想轉行寫程式,資

bisconect 09/29 02:22工系居然有 2/3 的人不想以寫程式為業

bisconect 09/29 02:23而且是國立排名中間的資工系

更嚇人的是女生想寫程式的更少 成績再好也一樣 某班前五名有三個女的 有兩個都不想寫程式

※ 編輯: virnux (61.227.120.26 臺灣), 09/29/2021 02:25:47

s910 09/29 02:25給些基礎觀念我覺得就可~等工作後Code看多了

s910 09/29 02:25有需要的時候自然就會去深入了解

asdfghjklasd 09/29 02:27女生幹麻寫程式,尤其長的正的

asdfghjklasd 09/29 02:27當然台大資工也有正的教師

不是阿阿阿 不想寫輕鬆過也行吧 當學霸推個清大o文系要做甚麼

※ 編輯: virnux (61.227.120.26 臺灣), 09/29/2021 02:30:06

crimson11 09/29 02:31推 概念正確

utdsml 09/29 02:36

chicagoparis 09/29 02:44以我接觸過地方國立資工學生會繼續

chicagoparis 09/29 02:45走coding 不是套好人家早就寫好的那

chicagoparis 09/29 02:45種學生 一屆大概不到兩成

FMZ 09/29 03:10像這種問題是不是只要設計作業花點心思就好?

FMZ 09/29 03:10比方說期中考就是做某程式的前半部,期末考就

FMZ 09/29 03:10是接受其他同學的前半部程式。

交換作業有個問題就是: 萬一第一個人寫得很爛 那第二個人算分要怎麼算? 那第一個人寫得很好 第二個人的分數又要怎麼算? 程式人大都寧願自己動手重寫而不是選擇在理解前人的框架下進行開發 這跟技術力差距有關還有文化都有關 所以如果依照你的想法,就會變成大家後半部都是拿自己的前半部去改來交作業。 我有試過從設計作業著手 就是一系列的程式,程式output要求都相同但唯有裡面的演算法運算邏輯不同。 可是大部分想拿高分或是對自己有要求的同學還是會選擇著重在GUI方面, 縱使有提過可以用物件的方式去封裝演算法的邏輯部分,同學們依然還是使用在同一個 物件中呼叫新方法去執行新的演算法邏輯。

※ 編輯: virnux (61.227.120.26 臺灣), 09/29/2021 03:33:18

FMZ 09/29 05:32第二個人的分數可以跟第一個人連動,小組作業

FMZ 09/29 05:32不都是這樣嗎?要是這樣同學也有問題,那小組

FMZ 09/29 05:32作業就不用做了。且我覺得,接前人的爛攤子很

FMZ 09/29 05:32符合職場啊。如果前面同學寫得好,後面同學還

FMZ 09/29 05:32要硬改,分數就低,兩者連動。

我覺得你的理念很有意思,就是承先啟後而非一起作業的teamwork。 但是實行起來有幾個難點在於: 1. 很容易變成變相的一同作業 其實班上快30個人,扣掉毫無架構的寫法、沒交作業跟屍體後作業的版本最多就五六個。 大部分的學生的GUI跟各種功能都是去問班上那幾個厲害的同學寫出來的, 跑不了怎麼改到過也是問他們。所以其實程式要怎麼改都是班上那兩三個人想出來的。 再來學生事先不知道誰會接他的作業,但是分數因為會連動。想要拿高分的那群學生就會 交流彼此拿到的題目,或是透過朋友去問那原本是誰寫的題目,又變成變相的一同作業。 2. 部署上的問題 我拿到的code已經是第一手的了,依然還是有很多奇奇怪怪的東西。 像是code的原始檔內容全部縮成一兩行,程式可以跑但就是閱讀前要先花功夫讓程式碼分 行 XD、有使用外部jar檔的,這個jar檔的使用課本上當然沒有教,也不是作業的必要內容 ,那是同學自學來的成果,那他的code如果交到沒有學到的同學就很不公平、再來有些同 學會去做讀/寫檔案的動作,偏偏他們又是把檔案路徑寫死的 (對,當初課堂上有強調過路 徑不要寫死,要寫死好歹也在作業說明或是註解裡註明絕對路徑,這些強調在平台上的作 業評分須知裡也可以找到)、有的同學交來的原始檔編碼不太一樣、不給原始檔只給編譯過 後的檔案的(對,這還特別強調過只收.java檔不收.class檔,交了是零分)、或是在我換了 好幾台電腦他的GUI介面中文字都是亂碼的,特別找他來問他也不知道為什麼,在他的筆電 上跑的時候中文字也確實是亂碼、還有根本就是屍體的東西。 這些千奇百怪的狀況都是課本裡沒有的,當然我自己可以解決絕大部分,但是萬一要把這 些狀況都丟給學生那就會引起民怨: "這個課本沒有教耶"、"這OOO狀況要怎麼弄?"、"為 什麼某某某抽到的那麼簡單,我抽到的有個jar檔,這是甚麼?"、"他這個開不起來耶,助 教你是不是給錯檔案了"、"他這個檔案裡的code都縮成一行耶,助教是不是在整我。" 所以我覺得在實務面上光是要讓他們適應不同的開發環境的問題本身就是一個很大的難題 了。我有做過實驗,在統一的開發環境下導入某個品質管理系統軟體,只要按照PPT說明 100%就能成功執行,可是一個班上能自行參照PPT及講者講解完成的大約只有1/4~1/3的人 而已,有些同學甚至連如何顯示隱藏檔名都不知道、沒了Eclipse就不會寫java、不會基礎 cmd指令及語法,也不懂得如何看cmd的錯誤訊息等等。 綜合以上總總,我是覺得不太適合在學校弄這塊。

※ 編輯: virnux (61.227.120.26 臺灣), 09/29/2021 06:27:51

FMZ 09/29 05:35比如被第二位同學改動少的,第一位同學分數也

FMZ 09/29 05:35

hcwang1126 09/29 09:01業界也是這樣 這一個寫出來的就是大神

hcwang1126 09/29 09:02 垃圾人才去維護 有用的npi

murai111 09/30 02:28就我在美國看他們教Programming 入門是

murai111 09/30 02:29這樣。一堂課200人。20個助教。一個助教

murai111 09/30 02:30帶10個。除了老師上課還會有助教帶lab。

murai111 09/30 02:30作業也是助教一行一行改。作業要拿滿分

murai111 09/30 02:31不是跑出來結果對就好。每一行的sytle都

murai111 09/30 02:31要合理。物件導向的設計都要合理。不然

murai111 09/30 02:32就是一分一分扣。從基礎課就打好程式不

murai111 09/30 02:32不是跑得出結果就是好程式的概念,服務

murai111 09/30 02:33是共同開發的。確保自己的code別人看的

murai111 09/30 02:33懂也是評分標準。剛忘了講docstring,

murai111 09/30 02:34comment都列入計分。再者只有在這些入

murai111 09/30 02:34門課取得高分的同學未來拿的到CS主修。

murai111 09/30 02:35講穿了就是教育資源。Top10 CS的學校這

murai111 09/30 02:35樣教學生。後端結果來看,每年就業博覽

murai111 09/30 02:36會參加的廠商就是比排名50以後的學校多

murai111 09/30 02:36好幾倍。台灣要推軟體業,就要從根開始

感謝分享 長見識了~ 在台灣是這樣的: 學生要的是分數,把學生分數評的偏低老師的教學評量大概也不好看, 作業東抄西抄老師也不太管,管了自己的教學評量也難看。 再來,光物件導向這東西學個兩年都不嫌少,偏偏這東西又沒有標準答案,每個程式人對 物件的劃分都有自己的理解。所以這東西在台灣要考只能考背法條式的,學生看到又臭又 長還要背,十之八九都把這些東西當空話。 不過我認同在基礎課就灌輸學生不是跑得出結果就是好程式的觀念非常重要,可惜的是我 們偉大的委員們為了在教學上可以看到立竿見影的成果,並不重視這些開發的觀念。他們 培育出來的種子老師大多是只會語法的資訊老師,再加以各種中文教科書的作業或習題大 都是一翻兩瞪眼型的 "試完成輸入ooo後輸出xxx的程式" 結果取向題目。所以這些委員、 資訊老師、學生看到的和要的都是"結果"而已,開發過程自然就沒人重視。

※ 編輯: virnux (61.227.121.199 臺灣), 09/30/2021 20:51:40

murai111 10/01 02:03再爆一掛,在美國抄作業很容易死。

murai111 10/01 02:04都念CS了,學校有算法去找出作業相似

murai111 10/01 02:04度。抄作業被發現就準備退學。