四、学习过去
  你的小组在过去承担的一些项目有可能没有取得完全的成功。甚至在成功的项目上,我们也能经常认为一些事情我们下次会作得更好。当你进入了新的领导角色,需要花点时间了解早期的项目为什么失败,并要计划避免犯同样的错误。对于软件开发,每位经理花时间处理每种可能要发生的错误是非常困难的,学习过去的成功和失败是个成功的开始。
  可以从过去你们小组承担的一个没有经过检查评估的项目着手,不要管其成功还是失败,实施项目后的回顾(有时称作事后调查分析)。你的目标不是判定责任,而是为了在将来项目中作得更好。借此,可以了解什么已经作得很好,什么应该作得更好。在当前每个项目的主要里程碑时,通过集体讨论或公平的组织者,用同样的方式,领导小组用头脑风暴的方式对其展开分析。
  另外,要了解领悟已有的软件工业的佳准则。一个好的起点是Steve McConnell的Jolt Award获奖作品:快速开发(Rapid Development,Microsoft Press, 1996)的第三部分,叙述了27个佳准则。也要避免McConnell叙述的36个常见的软件开发错误。你的组员也许反对新的工作方式,但是你的角色是作为一名领导,要确保团队一致连续地使用佳可用的方法、过程和工具。积极促进组员之间的信息共享,这样局部单个好的实践经验能成为每个开发人员的工具箱的一部分。
  五、建立改进目标
  一旦你对过去的项目建立起了回顾,确立了质量对小组的意义,你要建立短期以及长期改进的一些目标。目标要尽可能量化,所以你要划分几个简单的阶段,标明你是否采取了适当的过程朝着目标前进。
  例如,如果你认定由于需求的不稳定导致项目经常延期,你可以建立一个改进需求稳定的目标,在6个月内提高50%。这样一个目标需要你确切知道每周或每月需求的变化数,清楚他们的出处,采取行动控制那些变更。这可能要求你要改变与那些提交需求改变的人的交流方式。
  你的目标和阶段是软件过程改进程序的组成部分,你要使之有序。作为缺乏创造力的官僚主义的后避难所,轻视“过程”很流行。虽然事实上,每个小组都能找到改进其工作的方式。当然,如果你总是用已有的工作方式工作,你也不要期望你会得到比以前更好的结果。有两个强烈的原因要求改进过程:校正问题,防止问题。确保你的改进努力要围绕着已知的或可预知的可能威胁项目成功的问题。领导你的小组找出当前正在使用的方法的长处和短处,以及项目面临的风险。
  我的小组召开了一次“两段式头脑风暴”练习,来确定改进软件生产力和质量过程的绊脚石。在第一次会议中,参会者在便条上写出他们关于会议主题的想法,一个便条一个想法。组织者将他们写在便条上的想法收集上来并分组。后,我们会得到一打主要的分类,并将其记录到活动挂图上。
  第二次会议,相同的参会者在便笺上写出解决这些障碍的思路,并贴在挂图的合适位置。进一步细化,归纳出一些详细的活动,可以成为我们努力的一部分,清除障碍,帮助组员实现软件的质量和生产力的目标。
  建立可度量和可达到的目标,便于你集中精力实现改进。要使目标具有明显的优先级,并可周期性地监视过程。记住你的目的是,提高你的项目和公司完成的技术和业务上成功,不要满足于一些过程改进书籍里提到的期望细节。要把改进的工作视为迷你项目,具有可分发、资源、计划和有责任的小项目。否则,过程改进活动将总处于比诱人的技术工作低的优先级上。
  六、缓慢的开始
  这篇文章提供了许多建议,帮助你,一位软件经理新人,带领你的小组走向伟大的成功。在日复一日新的工作压力面前,要努力保持你的头脑清醒。
  在长时间的塑造软件开发小组的文化和习惯上,你还是个非常重要的角色。你不必一次性都作完,可以选择跟环境相关的的几个开始。作为软件经理,除了项目要按时按照预算完成外,你要担负的责任还很多。你还要:领导技术人员,将他们形成一个具有凝聚力的团队;建立协同团队工作的环境;鼓励和奖赏高级软件工程师的实践应用;平衡来自客户、公司,组员和你自己的需求。