一个程序员的管理心得
管理篇:
这里必须植入一个背景,早期我们团队由于管理计划不明确,人员技能过于单一,再加上系统过于复杂,由简单的WEB系统改造成多进程的分布式系统,涉及技术非常多技能要求也比较搞。导致版本转测试延迟和Bug改不对、修改不全的问题非常严重,经常被客户投诉。我进项目半年内,项目经理、区域经理迫于压力相继离职,每天加班加点老员工也陆续离开,项目已经濒临要黄掉的地步。历时半年勉强交付一个版本,客户要求我带一批人驻场交付。
合作模式:每个版本需求包分成两份,客户+合作方共同开发,合入同一个SVN库,双方投入比例3:7。
独立运作:我们开发模式是敏捷开发,一般2周左右一个迭代,整个开发阶段有4到5个迭代,一个版本大概有4.5万行代码量。
1、任务分配:客户PM跟我划分交付特性,然后我跟骨干员工一起把每个需求划分责任人,这里主要是每个人认领制,也会根据重要程度进行划分;
2、计划制定:我们内部制定了完备的开发流程,所有成员可以根据该流程特性属性2天左右就可以给出交付计划;
3、任务跟踪:采用早会站立会议,每个成员讲述自己的计划完成情况和下一步计划,反馈风险和求助。我主要解决风险和求助,纠正计划偏差;
4、流程保障:我们有专门的SVN目录用于归档开发和日常规范的流程规范文档,有迭代开发流程规范、特性串讲&答辩流程规范、检视格式规范、编码规范(这个包含客户要求的规范)、转测试CheckList规范等等。统一项目人员的操作规范和输出规范,保障交付结果。我也因为有这一系列流程保障,每天投入管理的工作时间可以缩短到2个小时左右,其余时间跟组内成员一起写代码,处处以身作则,迁移组内成员保障流程;
5、技能提升:项目各个模块采用代码责任田制,总共19个模块都有田主和副田主,每人至少有2块以上的田,我们定期进行代码互检挖掘历史版本问题、知识点文档写作,根据知识点文档每周两次下午茶培训,人员技能增长效果非常明显。多个模块都有专家,面对一线紧急问题定位,田主基本都轻松应对;
6、团队活动:我们采取两两一组,每个月组织一次活动,目前已经爬遍深圳各大名山、穿越、烧烤、骑车等等,至今三年以上的老员工占8成;
工作成果:
1、工作1年以上的员工都具备独立开发能力。我们的迭代开发流程:从特性熟悉、概要设计、串讲、模块设计、模块答辩、BBIT用例写作、编码、用例测试、VT、转测试都是有一个开发人员单独完成。涉及到安装、升级、前端等都由特性交付责任人全流程完成开发,而且效率和质量都符合客户要求;
2、项目再次离岸交付。通过一年多驻场改造,我们的交付能力已经跟客户员工基本对等,实现再次离岸交付;
心得:一个团队制定合理的流程规则非常重要,通常一个管理者耗费太多时间和精力在人员管理和任务跟踪上,而团队成员则把时间浪费在琐事上。
1、我们项目管理者在项目前期制定好交付计划,跟客户约定任务下发和反馈机制,维护好跟客户的需求列表,不能让团队成员干了活没地方体现。
2、每天早会把握好计划是否正常进行,解决每个成员当前的困难和求助,让成员都能专心写代码,周边沟通和求助是每个程序员的通病,尤其是外包公司,不要让他们把时间浪费在这个上面。
3、尊重每个成员的想法,培养他们自己计划自己的工作任务能力,我们管理者只需要评估计划的合理性,是否在效率允许和可承受风险范围内,这样才能让团队成员迅速成长,一两年后你的团队不缺乏骨干成员。