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