浅谈软件研发的复杂性与应对之道
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
在Google美国总部的一次技术交流中,演讲者用“别人眼中的Google VS Google人眼中的Google”的PPT启动了演讲。这种自谦的态度体现了Googler对自己的客观评价,尽管Google的软件工程能力受到推崇。
软件研发历经“石器时代”到“农业时代”,最终进化到“工业时代”。石器时代依赖个人英雄主义,而农业时代开始群体协作但仍旧粗放。工业时代则面临软件规模和复杂度激增,人员众多导致沟通成本急剧增长,呼唤工业化的软件研发方法。
企业在业务增长放缓后,自然期望通过提升研发效能来实现增长。但软件复杂度的提升使得研发效能难以提升,甚至恶化。因此,向工业时代进化成为了缓解效能恶化的关键。
软件研发的复杂性来源于本质复杂性和随机复杂性。本质复杂性对应软件能力提升,而随机复杂性包括短视效应、认知负荷和协同随机性,是可以通过管理优化的部分。架构腐化是随机复杂性的一个负面影响,引入技术债务导致严重后果。防范架构腐化和技术债务,需要实时监控和预防。
随机复杂性虽然带来风险,但也提供了经验和教训。研发效能的关键在于以可接受成本控制随机复杂性。引入双流模型,即需求价值流和研发工程流,可以提升工程效率和降低随机复杂性。
双流模型通过自动双向联动需求价值流和研发工程流,减少了工程师的事务性工作,提升了效率和数据有效性。这样的模型使得工程师能更专注于工作,减少了随机复杂性。
需求阶段和个人本地开发与测试阶段是提升研发效能的重要阶段。需求阶段可以使用Kano Model分析需求,个人本地开发阶段可以用云端IDE、精准代码提示、自动生成单元测试等工具提升效率。还有更多实践比如集成测试环境、本地检查、代码集成等都可以提高研发效能。
想要了解更多内容?