软件开发的困难之处相信所有的IT从业人员都能巴拉巴拉的描述一堆,但没有人比Frederick Brooks讲的更清楚了。在“No Silver Bullet–Essence and Accident in Software Engineering”一文中,他指出了两类软件工程中的困难:软件自身带来的困难和今天由于技术及其他的局限带来的困难。软件自身的困难主要体现在四个方面,即复杂性、符合性、可变性及不可视性。这些是我们需要面对的常态软件开发中的挑战,也是我们在瀑布模式主导的年代一直没有解决好的问题。最近再读Brooks这篇经典文章,对这位图灵奖获得者更多了几分敬仰。
图灵奖得主Frederick Brooks
十几年前,我在学校图书馆无意翻到了一本不太起眼的书,记得书名好像是“软件过程法则”。老实说,有许多观点有博眼球之嫌,但对作者把软件开发过程中的迷茫指数划分为四个等级的提法倒颇为认同。
●0级迷茫:开发过程需要做的一切都门儿清,不存在迷茫。
●1级迷茫:清楚地知道自己有些小迷茫。
●2级迷茫:没意识到自己的迷茫。
●3级迷茫:连迷茫是什么都没概念。
以软件估算为例,比较一下就明白等级差异了。如果迷茫指数是0或者1,估算者一般在已知内容的基础上加些余量就能应对前面没考虑到的地方了。如果迷茫指数到了2,一般就会低估所需投入,因为你压根意识不到后面的迷茫啊!我见过很多软件项目都在2级徘徊,这也是后面需要追加成本的原因。如果你已经到了3级迷茫指数,那没办法,只有在开发过程中不断做重新估算,学会抢答是你的正确出路。对于2、3级这种中度和重度迷茫患者,敏捷和精益方法是目前最有效的治疗手段。
软件开发过程也有迷茫
丰田和福特这两种大众路线的汽车,大家一定很熟悉了。那你知道丰田和福特的发展史和各自的管理方法么?
Henry Ford(福特的创始人)是汽车制造专家,没开创福特品牌时在汽车行业就已经从业20多年,对汽车制造的各个环节了如指掌。当年底特律也是美国主打工业城市,优秀的汽车工程师大把。福特从一开始就由专家(往往是福特本人)针对汽车制造的科学管理方法,工程人员按流程严格遵守。这种模式运用到大规模的生产活动中的结果就是换来了那时福特的辉煌。
建立了汽车生产线的福特
丰田喜一郎(丰田的创始人)的情况则完全不同。如果参观美国汽车公司也算是从业经历的话,那么他满打满算也就6个月业内经验吧。丰田公司选的地址当初也就是个城乡结合部,这样的地方对工程师显然缺少吸引力。所以,丰田桑没有告诉他的手下如何制造汽车(也没能力告诉),他只说:我和你们一起尽快的制造汽车出来,我的目标是制造出客户想要的车!
建立了丰田开发模式的丰田喜一郎
在福特的管理体系下,管理者的工作是监督下属按照固定的方法做事。而在丰田管理体系下,管理者的工作是不断鼓励帮助下属学习,不断摸索出更有效工作方式。
前者成功有一个前提,那就是一切必须是预知的。福特车的后来大家都知道,面对巨大的市场压力,面对不断的技术创新要求,福特在旧的模式下风光不再。而丰田模式,其实就是精益管理体系,能有效支持开发中的创新,取得的巨大成功很大程度上来源其精益开发体系,这已经是业界的共识。在需要创新的领域,我们需要的过程不仅能解决0、1级迷茫,也必须支持破解2、3级迷茫。
按照业界认可的过程的定义,下面的软件过程公理是显而易见的。
公理:过程只能指导我们做已知如何做的事。
由此我们可以到处下列引理。
引理:对于从未做过的事和不知如何做的事,我们无法写不出有效过程的。
多年前,一家软件企业实施CMMI3,他们当时聘请了一个四五个人的咨询团队帮助编写软件过程。经过数个星期的封闭创作,参考各种资料,最终出品了一套非常全面,覆盖CMMI十八个过程域的文档。他们请我评审这些文档的有效性,我说:“我只能说这些文档覆盖了CMMI模型中的内容,但有效性没法判断。项目特点,客户要求,人员能力和内部的各种约束等情况我都不知道啊。”最后我建议他们组织不同类型项目的一线人员根据其职责,评审下和他们工作相关的过程,回答一系列问题。其中一个问题是:如果不对现状做大的改变,你评审的过程可以通过努力在项目中实施吗?如果不可以,请给出原因。结果大部分答案是不可以。常见的原因是,所写过程过于泛泛,对项目实施过程中许多可能碰到的实际问题没有给出有价值的建议。
闭门造车写的过程一般适用性较差
对于有一定复杂度的项目来讲,也就是说其中包含一些从未做过的工作是无法写出有效过程的,许多软件组织在编写过程时往往忽略了这一点。对于这类项目,有效过程的产出物更应该是新知识而不是已知的重复制造的产品或产出物,那么以此匹配的过程也不应该是传统菜单似的,而应该是可以通过反馈支持快速学习。
打个比喻,如果定义明确的传统生产过程输出物是蛋糕,那么复杂软件开发过程的产出物则是做蛋糕的具体程序,在存在迷茫的地方里,敏捷和精益过程让迷茫变成学习创新的机会。
文章来自,老丛讲桌
网友评论