1:学费贵。
2:软工本身的课比较难开,还卷。为什么说难开?因为学生一开始主要的问题是技术掌握得不熟悉,以及解决问题的思路有限。你要让他在实践中去体会“软件工程”其实是比较难的。而从某个角度来看,软工的课又最好开,人人都可以开:知乎上可以看到一些比较卷的问题,比如清华大学自动化专业的,大一就要求做什么云课堂的视频系统。从软工的角度来看,这留给大三的做,能做成什么样还得打问号呢,人家自动化专业的都能给你卷成大一的作业。这个角度来看,软件工程这个专业,是特别难搞的,很多学校也把握不好:毕竟学校里老学究多,对于软件工程四个字的理解,甚至于非常浅显。
其实对于上面的2,我们可以细说。比如以那本《实践者的研究方法》为例,上课可以讲各种开发模型……所以呢?这到底怎么讲?此时学生面对大作业的问题是:这个东西我不懂,那个东西我也不懂,至于如何去组织资源并且进行项目管理,那就是天方夜谭。其实软件工程本身难就难在,需要学生有一定的实际操作能力以后才能讲。至少——学生应该自己能完成一些大作业以后。因为这时候,你跟他讲各种开发模型的优点与缺陷,他才知道你到底在说什么。也就是说,软件工程这门课本身,是需要职业经验才能更好的去讨论的问题。
3:其实还是2和一个意思,不过这一层我想说师资问题。基本上能讲好软件工程的,都得是有充足的项目经验的工程师。我记得很多年前,有人去卷一个叫“SCEA认证”。结果普遍的反应是:有难度的考题基本上全是遗留系统改造,而这些根本刷不了题,只能凭经验作答。现在可以延伸一点说了:你写的代码凭什么值钱?我记得以前上软件工程这门课时,老师问我们,而最后他的答案是:如果这只是硬盘里一堆无用的东西,它当然不值钱,而它值钱的原因就是能给客户创造价值——归根结底,软件是服务行业。
总结:基于以上,我们可以说到另一个问题上。软件工程服务的是任何行业——所以特别难讲。比如互联网企业扩张得厉害,那么可能大家的侧重点是如何搭建稳定的web架构以及用户体验,而再倒退一些年,大家可能重点的学习在于搭建其他的一些行业应用。只是从业务技能讲,这两者其实没有太多的共同点——除非你能深入去思考设计的事情,也许才能得出一些有用的东西。不过很多人都是为了搬砖挣高工资而选的专业,很少有人回去花时间想这些短期内不能让自己挣钱的东西的。
最后再啰嗦一句:软件工程研究的问题,其实说通俗点的话就是:我用的东西都好,为什么组合起来就是一坨屎。这和做题家的思维培养方式冲突比较大。所以行业里有个现象,就是面试造火箭,上岗搬砖。这几年互联网行业爆发式增长后,工资提高了不少,引来的苍蝇也确实不少,所以很多人对这个东西是没什么思考的。自然而然就把做题家思维带进来的。抱歉,软件工程需要的不是做那种有解析和答案的题,而是做一些没有标准答案、没有解析,甚至可能问题都不太清楚的题。