没人在乎软件工程——缺失
长期以来,关于软件工程有许多吊诡之处,通过本文章,我对五个吊诡的问题提出我的看
法,希望也能因此解开你心中对软件工程价值的疑问。
Q: 软件工程到底有没有用?
如果你上过软件工程的课,你很可能会怀疑软件工程有没有用,如果你有这样的怀疑,很
可能是因为你「遇人不淑」。事实上我就是如此,大学时我原本有选修软件工程的课,但
是上不了几次课我就退选了,因为老师教得奇差无比,加上老师本身不是研究软件工程的
(他根本就是研究硬件的),更没有业界的实务经验。没理论基础,没实务经验,没教学
热诚,遇到这样的教授我怎能不打退堂鼓。
但千万不要让这种教授 丧了你对软件工程的信念。软件工程绝对是有用的,最佳的实例
就在印度。你只消看看印度的软件产业,如此讲究软件工程,而且开发软件的成绩如此辉
煌,你就应该知道:软件工程除了可以拿来发表论文帮助学生取得学位或帮助教授升等之
外,也确实是可以帮助软件工业的。
Q: 软件工程对谁重要?
我们常常(特别是最近)会听到一派言论比较反对软件工程的说法,他们认为加强程序员
的能力比实施软件工程「更重要」。我不反对这样的说法,但问题是对谁比较重要?我认
为,软件工程对组织(公司)比对个别的程序员更重要。程序设计技巧的加强、以及新技
术的学习对程序员比较重要。采用软件工程,短期内对程序员带来的好处不多,甚至会为
程序员带来麻烦(被加诸许多限制)。
对于公司来说,实施软件工程,除了可以因此掌握软件的品质之外,更可以避免一些风险
。即使目前的软件开发团队还算稳固,但是这些人未来可能会一个一个离职。没有好好实
施软件工程的公司,在重要的软件开发人员离职后,往往会让软件计划严重延宕,甚至停
摆(我们听过也看过太多这样的例子)。如果当初有实施软件工程,就可以一切井然有序
,可以不用花太多时间就让接替的人继续专案进度。
Q: 既然如此,程序员可以不要理会软件工程?
既然程序员最重要的是加强程序能力,那么程序员应该忽略软件工程?当然不是。程序员
是公司的一份子,对公司有利的事,也会间接对程序员有利。再者,程序员是无法当一辈
子的,必须及早准备因应之道(请参见「软件人员的生涯规划」一文)。如果有心要在以后成为主管阶层,最好能先对软件工程和计划管理的相关知识做好准备。对程序员来说,
软件工程又比计划管理来得更急迫。
Q: 软件工程对哪类型的计划比较有用?
对于小型计划来说,软件工程不见得有太大的用途(但也不至于有害)。对于中大型计划
来说,如果不采行软件工程,后果往往就会很严重,很可能会遭致一团混乱,导致计划失
败。就算完成计划,大概也是拼凑出来的,许多 bug 潜藏其中,软件的实用性很低,而且
无法维护。
Q: 那么小型计划不应该用软件工程?
虽然使用软件工程与否,对于小计划的影响不大。但是我认为,即使是小型计划,最好也
要遵照软件工程的程序来进行。通过小计划来练习软件工程,让大家有机会熟悉软件工程
的运作,当在大计划中使用软件工程时,才不会手忙脚乱。一个公司如果没有从小计划开
始实施软件工程,就骤然在大计划中实施软件工程,那么失败的机会很高。而且第一次就
失败,往往会使得主管对于软件工程的信心大打折扣,连第二次尝试的机会都被抹杀了。