关于模式的思考
本文讨论软件开发模式。
世界上唯一不变的是变化。
中国实行改革开放几十年来的事实证明,应对变化的最好方法就是改革,改变自己,适应环境。
首先分析下我们的“国情”——现状分析。
当前公司开发的软件,技术含量不是很高,80%以上的开发工作都是在做CRUD(增删改查)的工作。很多人比喻CRUD为四轮马车,那么,驾驶这辆四轮马车的人——开发人员被比作马车夫。这种比喻可能会激怒开发人员。开发人员做的是创造性的工作,怎么能比作马车夫呢?!请平静下来,细想下我们的日常工作,是否在做增删改查的工作?我们软件里面,那个功能不是这样实现的?很少!在开发人员看来,实现我们软件的功能,就是把用户输入转变为数据库记录存储,再对这些数据进行各种各样的维护,没多少创造性可言。
有少量的架构设计。可能剩下20%的有创造性的工作就是设计方面的工作了,特别是架构设计,具有很强的挑战性。当前我们的软件,架构设计好以后,功能的实现都是非常简单的事情,即CRUD的工作。拿盖高楼大厦作比喻最最恰当不过了。一幢高楼设计好后,首先搭建的是高楼的框架结构,这个事情有架构师完成;接下来就是在这个框架结构的基础上,砌砖、装修等。架构的搭建是非常重要的,搭建的不好,可能导致整栋楼房坍塌,搭建好了,能够低档几十年的风吹雨打。
外科手术VS盖高楼——模式探索。
外科手术——主刀医生是手术团队的核心,所有重要的工作都是由主刀医生完成,其他团队成员只是帮助主刀医生,帮助拿刀、线等。这种模式是因为其他团队成员没有能力完成主刀医生的工作,另外,手术不是工作量大的工作,而是工作复杂、需要很多知识技能才能做的事情,所以别人也帮不上忙。
盖高楼——首先要有个完善的设计图纸,而后就是组建建设队伍。建设队中,有个总指挥,负责团队的建设和协调、编排计划。有专门负责框架结构的施工队伍,也有专门砌砖的队伍。在这个模式中,设计图纸是至关重要的,它是用于指导施工队伍施工的方案。在建筑队中,有个重要的角色,监理。严格说,建筑监理不属于建筑队,而是对立的一个组织。监理的工作是负责监督施工队伍,看是否按设计图纸进行施工,他有权要求施工队重做某些不符合的工作。在建筑队中,分工是明确的。总指挥不负责搬砖头,设计师不负责搅混泥土,监理不负责指挥。
我们该采用那种模式?
从前面的现状分析看,可能各位都知道答案了。我们大部分工作都不是核心工作、高难度工作,盖高楼的模式可能更加适合我们。
首先要有个远景——盖什么样的高楼,多少层,预算是多少,时间范围等。对我们来说,就是开发什么软件,有那些主要功能,预算是多少,大概的时间范围的确定,投入多少人力、物力,软件的客户是谁等问题。就是把项目的范围明确下来。
成立项目组——有了远景,就要开始实施了。人力在项目中是非常重要的因子。在确定范围后,就要确定人员。
l 项目经理——首先要有个总指挥,负责总体把握项目。项目组成员对项目经理负责。
l 需要需求工程师——负责软件需求的获取和整理。
l 需要设计师——项目组中需要有设计师的角色,设计师将远景描述的更加清晰,有利于项目的实施和考量。
l 需要架构师——软件的架构需要由架构师把控。
l 需要开发工程师——负责各个功能的实现。
l 需要测试工程师——他们验证软件是否符合设计要求。
l 需要质量保障工程师——负责监督项目实施过程。
计划——项目范围、人员确定好后,就要考量实施计划。制定计划需要将项目相关的方方面面的事情考虑进去。这样才能少走弯路。