软件工程,其实没有任何工程而言
将大型软件研发过程,叫做软件工程,实在是个笑话。
能够叫做工程的,必然是以科学为基础,将科学知识凝结为定理和公式,从而能够系统地传承。这样,工程人员经过系统化培训后,就可以胜任工程中的工作岗位,从而能够进行大规模的工程实施。
土木、建筑、航空、交通、能源等等行业,都是将数学、物理、化学等科学知识凝结为行业定理和方法,如何分析土质,如何测量风力,如何评估抗震能力,这些都是有系统的方法的。经过系统化培训,从业人员都可以掌握这些方法,从而胜任工程中的具体工作。
但这些,在软件行业中都是不存在的。
软件行业,哪里有把科学知识凝结为定理和公式?哪里有系统地传承?无数的程序员还在为用 Tab 还是空格争执不休,是否用 goto 还吵了几十年。从 Tab 还是空格这些细枝末节的问题,到单体还是微服务,从继承还是组合的设计方法选取,到 Scrum 还是 XP 的软件过程敏捷管理,到处都充满了争议,从未达成过一致。因此,也就没有任何可传承的东西。
每个程序员,就是在这样的环境中,通过自己的偏好进行判断和选择,汲取了自己认为是正确的知识,武装了自己的头脑。并且完全是靠自学,通过自己的理解和体会,最后自己认为自己学会了。
自己理解的,是正确的吗?自己理解的,是全面的?自己掌握的技术和方法,是最好的吗?这些,都无从回答。
因此,被叫做“野生程序员”,恰如其分吧?
大型的软件开发,居然都是由这些野生程序员来完成的,还管这叫软件工程?
名校的计算机专业和软件专业,也没有传授给学生如何编写大型可维护软件所需的技能。
大型成熟的软件公司,也没有什么系统的方法,指导程序员如何设计和开发大型可维护软件。
与 40 年前相比,今天我们的硬件有了天翻地覆的变化,编程语言和开发工具比之前不知先进了多少倍,但软件开发的进度和质量,并没有什么变化,依然停留在刀耕火种的原始状态。进度和质量,还是由具体写代码的工程师个人水平和工作心情决定的,完全不可控状态。
这是个巨大的鸿沟!但软件行业似乎对此视而不见,并漠不关心。老板的唯一招数,就是拿出 996 的杀器,迫使程序员加班,从而获得所谓的软件开发进度提升。对此,我只能呵呵了!
软件行业正在如火如荼地高速发展,并且快速渗透和融入各行各业中,并承担着数字化改造的核心作用。但软件研发人员水平参差不齐,软件产品的质量如此之差,软件交付速度如此缓慢,这终将酿成巨大的软件灾难。
是时候,需要正视这些问题了。软件需要回归到工程的状态,这样才能给各行业交付稳定可靠的高质量软件。而要实现这一目标,必须要保证软件开发人员是合格的工程人员,掌握了工程所需的知识与技能。
因此,编写大型可维护软件,需要哪些知识和技能,如何系统化地培训出软件工程人员,将成为时代的刚需。
我的微信号是 实力程序员,欢迎大家关注我。
版权声明: 本文为 InfoQ 作者【实力程序员】的原创文章。
原文链接:【http://xie.infoq.cn/article/513c4f244be274a8394e2da3b】。
本文遵守【CC BY-NC-ND】协议,转载请保留原文出处及本版权声明。
评论