软件工程

软件工程,“我们不一样”?

“软件工程”是个老话题了,我以前写过一篇文章《名不副实的“软件工程”》,当时还引起了不小的争议。回头看,当时更多的思考还是在“软件工程”本身。我们完全可以把讨论的范围扩得更大一些:“软件工程”和“工程”有关吗?如果有,到底有多大的关系?(这里的“软件”泛指IT的各种开发,不存在“软件”和“互联网”的分别。) 不要以为这些问题很好回答。在大学里,“计算机/软件开发”专业到底属于理科还是工科?似乎一直没有明确答案。到了社会上,一说起“计算机/软件”,很多人都觉得它既不同于文科,也不同于传统的“工程”(硬件)。 那么,“软件工程师”和“程序员”究竟有什么区别?似乎一直也没有人说清楚,只是名称不一样。就我所知,不少搞软件开发的人认为,软件是全新的领域,应当有全新的知识体系和工作范式,所以学校教育根本没啥用。甚至,有些人在内心看不上传统的工程人员,认为那都是“夕阳行业”的过时经验。 “软件工程”真的有这么特殊,可以大喊“我们不一样”吗?中国历史上有过“白马非马”的辩论,“软件工程”和“工程”之间也是这种关系吗? 下面结合软件工程,讲几个“传统”工程的故事。如果你也好奇“软件工程”和“工程”的关系,相信可以得到启发。 (more…)

6 years ago

尸位素餐的“软件工程”课程

按:本文的很多观点来自与七牛云存储首席架构师道哥(李道兵)的讨论,在这里对道哥表示感谢。 高校的计算机教育与时代脱节,这已经成为大家的共识。如果要问哪些课程脱节最严重,我的答案是“软件工程”。其他的课程虽然也有脱节,但多少有点用处:编程语言虽然不教怎么把程序写漂亮,至少教了语法;网络课程虽然没有形象直观的展示,毕竟通讯协议还在使用;数据库课程不讲数据库的安装和调优,关系代数理论仍然是不少问题的原型;数据结构与算法即便看起来与开发没有直接关联,有了概念总不会吃亏…… 只有软件工程,是例外。顾名思义,“软件工程”讲的应当是把软件开发出来的学问。所以,它是名不副实的:如果你按照“软件工程”教的去做,多半开发不出来软件,至少开发不出好的软件。一方面大量毕业生不会写程序、写不出好程序,另一方面合格的“软件工程师”奇缺,对这种怪异的景象,名不副实的“软件工程”功不可没。 (more…)

9 years ago