作者 | 万佳
上世纪 60 年代,IBM 开发 OS/360 操作系统,这是第一个超大型软件项目,非常复杂。当时,共有 1000 名左右的程序员参与了项目研发,花费了 5000 个人年,最终却无法运行。而项目负责人 Brooks 博士后来撰写了一本软件工程的经典书籍《人月神话》。
IBM 的经历并非孤例,这反映了当时软件行业所面临的困境——随着软件愈加复杂,规模越来越大,软件项目开发和维护过程中不断出现问题:软件产品质量低劣、成本不断上升、进度不可控、开发人员无限度增加和软件维护工作量大。由此,“软件危机”的概念被提出来。
70 年代末,在北大西洋公约组织的科技委员会召开的一次会议上,为应对和克服软件危机,会议首次提出“软件工程(software engineering)”概念。
软件工程定义:为了经济地获得在真实机器上可靠工作的软件而制定和使用的合理工程原则。
简言之,软件工程是以工程化方法规范软件开发,按步骤和流程进行软件开发,保证软件项目成功交付。
经过几十年的发展,软件工程不断演化,从瀑布模型演变到敏捷开发。虽然,“软件工程”现在已经成为软件行业的高频词,被不少企业奉为圭臬,但是很多企业却是“说得到,做不到”。
软件工程的理念强调科学的方法、高效的管理和先进的工具,因此对企业综合能力的要求很高。而现实中,受限于环境与种种条件,很多企业不具备相应的能力与水平,它们主要以作坊形式开发软件,即软件作坊。
软件作坊具有一些典型特点:团队规模小,过度依赖人工,开发效率低,流程不规范,软件产品质量不高。
这种作坊式软件开发的一大问题是效率低下。
某资深程序员说:“之所以出现作坊式生产,原因有很多,比如缺少高人指点、项目交付周期太短等,因此很多企业都是‘一把梭’直接开干。这种方式存在的问题不少,例如缺乏软件设计和架构支撑,缺乏规范流程,很容易出现软件质量问题,一旦出现缺陷就难以跟踪和解决。并且,相关从业者技术不够专、精,遇到问题一般靠上网查,运气好就解决了,运气不好就换一个方案试试,很少有人去跟踪和研究问题产生的根本原因。”
除了效率低下,作坊式开发软件还存在两大问题:一是软件或系统稳定性差,二是运维成本高。
有大厂资深程序员指出:即使是在大厂,如果没有管理好,代码库也是乱糟糟的。相比作坊式的软件开发”不规范“,大厂因为规模的原因,必须通过规范引导及流程约束,以保证软件质量。但是,实际效果如何,具体也要看执行力。
更重要的是,以作坊形式开发出的软件 Bug 更多,代码质量差,安全性低,一旦应用到生产环境,小则影响企业业务,大则带来灾难。
回顾软件历史,失败的软件项目数不胜数。据悉,美国电气和电子工程师协会(IEEE)有一个专门的网页,用墓碑形式可视化呈现了过去十年著名的失败软件项目,这些项目累计带来的损失近 700 亿美元。
除了直接的经济损失,有些失败的软件项目更是危及人们生命安全。
Therac-25 是加拿大原子能有限公司(AECL)所生产的放射线疗法机器,1985 年到 1987 年之间,在美国及加拿大,至少有六起和 Therac-25 相关的医疗事故是因为程序 bug,导致部分病患者受到比正常剂量高 100 倍的辐射,造成患者重伤甚至死亡。
2018 年,一架波音 737 Max 8 喷气式客机撞向印度尼西亚的爪哇海,造成 189 名乘客和机组人员死亡。2019 年 3 月 10 日,埃塞俄比亚航空公司一架波音 737 MAX 8 客机在飞往肯尼亚首都内罗毕途中坠毁。飞机上载有 149 名乘客和 8 名机组人员,无人生还。两起坠机事件后,波音 737 Max 被全球各大航空公司停止运行。之所以出现坠机,一个重要原因是飞机存在软件问题。
2021 年,因软件问题,西安一码通半月内崩溃两次。据悉,12 月 20 日,西安“一码通”因访问量过大导致系统崩溃。2022 年 1 月 4 日上午 9 时,西安一码通第二次崩溃。当时,西安市开启新一轮核酸筛查,许多西安网友反映,“西安一码通”系统再次崩溃,无法显示疫情防控码。话题 # 西安一码通 # 一度冲上微博热搜第一。由此,西安一码通“一夜成名”。
无论是 Therac-25 事件,还是波音 737 Max 事故,亦或是西安一码通崩溃,都在不断警示我们:软件非常重要,它在人们生产生活中发挥着巨大作用,切不可忽视。
自从新冠疫情出现后,软件变得越来越重要。对人们而言,进出小区要健康码、乘坐公共交通工具要健康码、上班也要健康码...... 没有健康码,简直寸步难行。健康码、电子核酸证明成了堪比身份证的关键“基础设施”,一旦软件失效、崩溃,就会严重干扰人们正常工作生活和整个防疫大局。
从深层看,软件重要性的提升反映了社会数字化进程的加速,人们的生产生活对软件的依赖程度不断提高。在新冠疫情发生后,电子商务、在线教育、远程医疗、在线办公等新模式加速发展,数字化不断深入人们的工作生活。
某种意义上,软件成为数字化时代的基建,正如工业时代的蒸汽机,它不仅改变了世界,现在仍然还在改变世界。
由于软件重要性不断提升,企业只有走出软件作坊,真正践行软件工程理念,才能开发出成功的软件,从而筑牢数字经济的地基。
然而,企业在现今软件开发中却遇到三大挑战:挑战一与人有关。真正深谙技术或有能力解决关键技术的人非常少,大部分技术人员或工程师主要做功能性事情,即满足软件所需的功能。但是,随着互联网的发展和技术的进步,用户对软件的需求不止于功能,还有稳定性、质量和安全。对企业来说,很难找到合适的人。一旦业务快速发展,企业就需要招聘更多的人,而随着人员规模的扩大,企业又面临管理问题。
挑战二与技术栈有关。当今,技术栈变化多样,从 Web 2.0 到互联网 +,技术赋能的形式在飞速迭代,几乎每三年就有新概念走向成熟,技术栈也随之变化。具体到某一领域,像前端,差不多每 18 个月就会有一次更新迭代。对企业来说,技术栈的选型至关重要,一旦出错,系统设计可能要推倒重来。
第三大挑战则涉及开发工具和投入的资源。业务快速发展,企业不断增加硬件资源,“堆资源”的结果却出现硬件资源闲置,效率没有得到相应提升,还带来管理难题。
针对该行业问题,记者专程采访了新一代 Java 开发工具飞算 SoFlu 的研发者飞算云智总裁陈定玮,在陈定玮看来,上述三大问题归结到一点——大部分企业现在面临的最大挑战是如何降本增效。
事实上,只有走出软件作坊,企业才能真正实现降本增效。否则,一直处于作坊式开发软件阶段,企业效率提不上去,成本降不下来,永远被困。
走出软件作坊,核心之一是提升效率。依笔者之见,提升效率不仅是商业的本质,而且也是软件开发的关键。
在商业史上,效率提升的代表人物是福特。作为美国汽车之父,福特极大提升了工厂效率,核心举措之一是流水线作业。在流水线作业出现前,汽车工业完全是手工作坊型。一个人装配一辆汽车需要 728 小时。而在福特工厂里,经过其持续不断的改进,1925 年就可以实现每 10 秒钟生产一辆汽车。效率提升让福特汽车的成本不断下降,价格下降,需求不断上升。1911 年,一辆福特 T 型车的售价是 780 美元,到 1916 年,T 型车售价已经降到 360 美元,而福特的市场占有率则从 1911 年的 20.3% 扩大到 1914 年的 48%。
除了流水线作业,福特提升效率的举措还有重新设计工厂,不断引入更先进的机器设备,即用“先进的生产工具 + 先进的生产方式”,让生产流程标准化。
从商业回到软件开发,企业如何降本增效?关键是提升效率,也可以称为提升研发效能。腾讯 T4 级专家茹炳晟曾用一句话来总结研发效能——更高效、更高质量、更可靠、可持续地交付更优的业务价值。
无论是研发效能,还是提升效率,最直接最有效的方法即是借助新的生产工具(软件开发工具 / 平台)。
正所谓,“工欲善其事,必先利其器”。优秀的软件开发工具不仅可以大大提高工作效率,让产品更快上线,而且还能减少由于开发人员个人经验不足带来的影响,避免人员离职造成的交接不畅等问题。
某种程度上,软件开发是由人和工具构建起来的世界。在这里,没有工具,寸步难行。据了解,编写代码,业内有 VS Code、IDEA、Vim、Emacs 等工具;审核代码,业内有 GitHub PR;找出特性或缺陷,业内有 GitHub issues、Jira 等工具;部署和监控,业内有 Kubernetes、Prometheus、Grafana 等工具。
这些都是面向软件工程师的专业工具。而随着技术的发展和工具能力的下沉,诞生了面向非专业开发人员的工具,典型代表是低代码工具。
众所周知,低代码工具在去年火了一把。Infolob 研究显示,低代码应用程序保持着 40% 的年复合增长率,预计到 2022 年,低代码应用程序市场总规模将达 212 亿美元。研究机构 Gartner 则预测,2024 年应用软件开发活动当中的 65% 将通过低代码方式完成,同时 75% 的大型企业将使用至少四种低代码开发工具进行应用开发。
与以前的软件开发工具不同,低代码工具抽离了基础设施的复杂性,让非开发人员能以可视化方式构建和部署应用程序,加速业务发展。
但是,有业内人士却一针见血的指出了低代码平台的诸多可改进之处,“在如今很多企业的认知中,低代码平台本质只能解决简单的工作流,很多低代码平台均基于 BPM 这种流程引擎实现,以设计表单作为应用数据来玩转,无法实现复杂功能和逻辑;开发的内容需要绑定已有的体系或系統,通过低代码平台产生的服务或应用则都必须与平台绑定,导致诸多的特性都需依赖于特定的低代码平台才可以实现,这样一来,很大程度上无法保证系统的品质及安全;大部分低代码平台都是在做前端,使用的都是脚本类的语言。”
那么,业内是否有融合低代码工具和传统软件开发工具优势的“新物种”?我们从国内某大型国有企业的经历中观察到了一种答案。
2020 年,该企业组建了近百人团队开发电商平台。但是,项目上线后,系统运行稳定性却不佳,并存在信息安全隐患,功能优化需求迫切。仅凭自身 IT 团队能力无法短期内解决这些问题。
据他们负责人介绍,一方面,平台修复工程量巨大,因为平台涵盖商品推荐、下单、客服、秒杀等众多复杂单元,系统优化涉及的开发量巨大;另一方面,IT 团队开发水平参差不齐。开发进度受团队能力影响,手工编码标准不统一,代码质量参差不齐,需要频繁返工。此外,项目时间紧迫,由于该电商平台是集团年度重点,上线需求紧迫。
如何解决遇到的棘手问题?他们尝试了一个全自动开发工具“飞算 SoFlu 全自动软件工程平台”,仅用 6 人就完成了系统重构。在使用飞算 SoFlu 过程中,整个团队调整思路,用可视化接口开发替代原来手工编码的开发模式,可清晰按照业务逻辑,最大限度贴合需求开发业务功能,效率大大提升;同时,用标准化组件保证代码质量,利用平台提供的满足规范验收标准的组件进行开发,杜绝了因人工编码造成的代码质量问题,节省团队大量审代码、改 BUG 等时间成本。
此外,该负责人还表示,之所以选择飞算 SoFlu 全自动软件工程平台,还因为其集成了满足等保三要求的安全规范和管理模式,可有效保障电商平台的系统强壮度和安全性能。
最后,6 人小团队在 45 天内完成开发 - 测试 - 联调 - 上线全流程,并且在源头上降低系统维护难度。
据了解,作为新一代 Java 开发工具,飞算 SoFlu 全自动软件工程平台仅一年时间就已经为八个大行业的上百家客户提供了全自动软件工程服务,助力客户走出软件作坊,实现软件工程全流程自动化。
相比被称为低代码元年的 2021 年,也许 2022 年即将会成为全自动开发元年,以飞算 SoFlu 全自动软件工程平台为代表的全自动开发工具将以其能帮助行业真正实现降本增效,而成为行业舞台中央的主角。
2022 年伊始,从自动化工具开始,一起走出软件作坊!