包括整个系统运行的环境、完成后的扩展性、对外提供的接口标准、约束条件等都要一一考虑到,并将所有需要在这个项目中解决的问题、或者需要攻克的问题按优先级列出,制定相应的计划,逐一解决。
虽然在立项之初已经有了总体技术规划,但是正如前面分析的,这时总体技术规划的可行性还没有得到验证,必须首先对技术规划、总体设计进行全面的分析和优化。也许最初制定规划的人并没有加入项目组,那么对总体技术规划的重新梳理也是对此前规划的一个学习。虽然已有的技术路线并未得到验证,但这并不代表我们可以轻易的否定以前的设计。
无论我们觉得以前的设计有多么不可行,也要谨慎处理,当出现与以前设计不同的考虑时,有可能是我们现在忽视了某个问题或者约束。即便真的以前的设计出现了错误,那么出错的地方和原因都是对我们的警示和可汲取的经验教训。
2、项目的阶段目标。
研发类项目往往都有一个宏大的目标。对待这类宏大的目标一定要小心,因为那可能是一个以现有技术或者成本代价不可能完成的任务。但是如果一旦确定目标是必须要达到的,则必须要对完成这个目标多要经历的过程作出规划。项目目标可能无法一次达到,即便需要在这个项目中全部完成,也应该适当的划分出不同的阶段,制定相应的阶段目标。这样有助于对项目进度进行控制,同时不断取得的阶段性成果也会激励项目组成员不断努力。
设定项目的阶段目标不同于传统软件项目按照设计、开发、测试等的阶段划分。在这里每个划分出来的阶段都需要有一个看得见、摸得着的成果。这个成果可以是一个可以独立运行并能显现执行结果的模块或者组件,也可以是一组为今后研发提供帮助的API。总之,我认为应该是一些足以让项目组成员感受到成就感的实体。这样的阶段划分,可以给成员、项目组、企业都带来信心,以使项目可以更好的进行下去。
3、坚持技术标准。
如果项目最终的目标或者技术沉淀的目标是形成一个产品,则在项目的研发过程中坚持国际、国内标准就尤为重要。因为作为一个产品,它所需要解决的用户需求就不仅仅是当前用户的需求,产品今后所面对的需求会更加多样。如何使产品适应更多用户的需求不在本文的讨论范围之内,但是在项目研发过程中坚持标准则是这个项目今后能顺利产品化的基础。
用户的需求可能是多变的,唯一不变的只有标准,即使是用户也不能超越标准。当需要与第三方软硬件集成时要用标准接口,当设计流程时要用标准的定义规范,如此等等。如果标准与项目用户的实际要求产生冲突时,一定要注意将“标准”与用户需求通过接口、WebService等方法隔离开来,使“标准”与用户需求处于松耦合的状态。即便这样做要增加难度和工作量都是值得的。
4、技术沉淀。
研发型项目最重要的任务就是尝试新技术、新产品,并拿出创新的系统(至少对于项目组所属企业来说)。完成这种项目给团队和企业带来的技术积累和经验教训的价值,远远高于项目本身的价格。通过项目沉淀技术,甚至形成产品,有时是一个企业之所以要进行这样一个项目的最主要的目的。
技术沉淀可以在项目完成之后总结,但是更应该在项目开始之初,在做总体规划时,就对希望通过项目沉淀下来的技术或者产品作出规划,在后续的设计及开发过程中,都要遵循这样一个思路,避免使项目的研发被单一的项目需求所左右。
5、团队凝聚力。
研发型项目的诸多不确定性在给技术研发方面带来困难之外,对整个项目组的所有成员的精神也是非常严峻的考验。不断的失败、不断的自我否定,项目完成期限的