美国专门从事跟踪项目成功或失败的权威机构Standish Group,在它每年的CHAOS Report报告中给出了IT项目的相关调查数据。
根据Standish Group对13500个项目进行研究分析,软件项目失败的比例高达66%,直接原因是超过预算,超出时限,或功能不符合要求,根本原因在于团队没有有效地管理和控制项目中各个阶段的不确定性。
在软件工程中,项目的初期阶段通常伴随着最高的不确定性。在开始开发之前,我们可能不确定要构建的具体产品是什么。然而,随着时间的推移,我们获得了一个创意并明确了自身的核心竞争力,相信这个创意可以带来盈利。这时,不确定性稍微减小了一些,但并没有完全消失。因为我们可能还不确定市场是否会接受产品。当我们逐步分解产品需求,从问题领域到解决方案领域,一点点地减小了不确定性,直到我们的商业模式得到验证,不确定性才会消失。
软件工程的目标是在不确定性的背景下,通过有效的管理和控制来为每个阶段提供可靠的解决方案。
不知道做什么产品?
用产品探索(Product Discovery)
不知道产品的核心竞争力和交付计划?
用Inception
不知道如何搭建并优化组织架构?
用团队拓扑(Team Topologies)
不知道软件项目该如何管理?
用敏捷(Agile)方法论
不知道该怎样设计技术架构?
用领域驱动设计(Domain-Driven Design,DDD)
不知道该怎么开发?
用极限编程(Extreme Programming,XP)