2012.10.08 关于 开发计划制定、项目管理、功能设计 的想法记录
现在我们公司制定开发计划的方式是这样的:
1. 定出大的功能模块
2. 将功能模块分配给团队的几个人负责
3. 对每个人按模块进行开发计划制定,每个模块分配一个天数。加上测试所需的时间或缓冲。
这个就是我们的计划,这里不包含测试组的测试时间,仅开发团队的开发和测试时间。
其实这样分貌似也没什么问题,不过我们团队在开发过程中却确实遇到了一些问题。
因为一个完整的业务周期需要经历几乎所有的功能模块 ,而经过这些模块有先后之分,分配工作后,多个团队成员需要同时进行开发。
这就造成了,某些模块在开发中途不方便测试,因为测试数据和一些业务状态需要从上一个模块获得。而上一个模块也在开发中,甚至完成时间在当前模块之后。这给开发部分模块带来了一定的困难。
再次,因为开发中有很多优化用户体验、为了操作便捷、美化外观的功能或工作量,这些往往不是业务中关键流程所需的功能,属于锦上添花型功能,但是这些功能却往往耗费的时间远大于关键流程上的功能。而在我们现在的开发模式下,对一个功能模块的开发是否完成的定义为:完成了模块中所有基本的和锦上添花的功能。这就更加导致了完整的业务周期跑起来的时间更加延后,也就是所有的功能模块更晚才能连贯起来,测试和开发的困难会一直存在知道全部模块的全部功能开发完成。
而这其中,我觉得最严重的问题是,逻辑、需求和设计上的缺陷要在开发的末期才能暴露出来,这样返工的风险和工作量会激增。这是一切悲剧的根源,大家都懂的。现在的开发过程中,我们也意识到一些这个问题,所以决定一些太优化用户体验和便捷用户的功能可以先不做出来,先让业务跑通。之后再慢慢添加上这些功能,同时对不合理的地方做一些调整。 而且,由于我们设计的功力不足,在模块间的衔接上,肯定还有问题,也要分出时间来处理。
这次项目,开发进度已经走到后期,虽然开发计划有定出10多天的测试缓冲,可以同时进行测试、修改和调整,不过我觉得时间依然不充裕,因为中间出了要处理各种问题、增加便捷的功能、优化用户体验外,还需要根据用户(或对用户比较了解的同事)提出的意见进行调整。所以我觉得项目延期的风险是非常高的。只能通过加班来尽量避免。
但无论如何,经过这次项目,也总结出一些想法,在以后的项目中吸取教训,总结如下:
1。 在设计功能时,一定要搞清楚,哪些是业务跑通的必须功能,哪些是锦上添花的功能(如批量导入导出),甚至哪些模块是业务跑通必须的,哪些是辅助的。并根据这些定出优先级。
2. 制定开发计划时,最好不要根据功能模块进行划分,因为多人协作的团队,在以实现业务为目的的项目中,多个模块在业务中一般有先后顺序,而开发是同时进行的,若不能让功能模块跑通,出了开发和测试上的困难,还有很多设计上的问题是很难发现的。所以计划中应该以”让业务跑通、各个必要模块能串联起来“为首要目标来制定,在完成这个前提后,再加上送测、优化开发、调整等开发任务。 就我们目前开发的项目来看,有几个较复杂的模块至少能划分到2个阶段,第一阶段开发必要功能,第二阶段开发辅助和便捷功能。就好像做一个船的模型,先完成骨架,再填充船底、船身、甲板的木料。当然,更复杂的模块可以划分成更多的阶段。而目的就是让各个模块能尽早的衔接跑通。
以上只是以我现在所在团队、所见系统情况并根据我所掌握的知识得出的总结,不一定正确。可能几年后我会有完全不同的结论。 上学时也听过在不同模块间通讯时,先设计一些虚拟的接口,模拟真实数据和行为,在此环境下进行开发。但是暂时还不知道如何应用在当前的项目中。当然,一些规模较大的系统,我说的方法(先让全部必要模块串联起来)可能是完全行不通的,例如做一个操作系统,现在的我也无法想象做一个操作系统要如何制定计划或划分模块。
今天就到这里。
-- 2012.10.08