自学编程难不难系列 之 项目管理 ..

作者: 一了 <1liao3@funlang.org>
日期: 2017-12-31

上一篇 自学编程难不难系列 之 后端 提及的队列术, 在本文介绍的项目中也是作为一项核心技术在使用. 只不过本文重点不在讲技术, 而是讲项目管理.

我是从 2002 年下半年进入飞利信, 当时还是一名小兵, 参与的是一个当时被团队称为 GMIS 的通用信息系统的开发, 然后从 GMIS 衍生配置出一个人力资源管理系统. 我本人的开发工作完成之余, 大 Boss 让我了解公司的传统业务即会议系统软件, 并逐步深入参与. 在 2002 年末之前, 陆陆续续维护了几个 Delphi 写的会议系统有关软件, 如远程报到系统, 会务管理系统, 文稿导读系统等.

时间到了 2003 年, 老板让我主管开发一个电子票箱系统.

飞利信之前已经尝试开发过该系统, 不过因为各种原因, 并没有完成. 我接手以后, 先是了解需求, 写了一点文档, 然后和开发老系统的团队的人开会了解情况. 这里还有一个插曲, 当时一个新的组员年轻气盛(其实比我好像还要大一岁), 在老团队介绍经验教训时, 居然出言不逊, 搞的气氛一时非常尴尬, 我赶紧打圆场. 须知老团队的领队是公司的股东之一, 而且也是有很强的专业背景, 可能只是机缘巧合不到位, 系统才没有开发成功.

当时的飞利信其实也很小, 软件技术人员应该也就在 10 人上下, 公司为票箱系统一共配置了包括我本人在内的 4 名开发人员. 这里大致介绍一个背景, 除我之外, 其中一人是会议系统的维护者(也开发了部分), 对 Delphi 和会议系统都比较熟, 另一个是 .NET 开发人员, 对 Delphi 也不熟, 就是刚才说的"年轻气盛"者, 最后一个是工程部的技术支持, 完全没有技术开发背景, 不会写代码.

这样的团队背景, 必然是我自己要完成所有的需求收集和设计工作, 而且还要编写核心模块, 监控所有的代码实现, 了解所有的细节.

当然, 这个项目非常成功的完成了. 这里说的非常成功, 是指项目完成的期限跟计划的时间一天都不差, 完全吻合, 而且完成的目标没有打一点折扣, 是真正的不折不扣的完成.

下面贴一下当时的两张甘特图:





上面的那张甘特图是计划, 下面的甘特图是实际执行情况, 二者的结束日期完全一致, 功能全部完成.

这里再贴一下当时的部分文档:



因为这个项目产生了一项发明专利(2006100007449/CN100426315C), 属于公开技术, 我在这里贴出来并不会造成泄密情况.

这样的一个系统, 说简单也简单, 说复杂也复杂, 18 个工作日完成, 我觉得还是属于成功的项目案例. 项目是一个分布式系统, 各个主机之间通过 UDP 通信, 任务完全队列化, 当时为了可靠, 连 SQL 语句都存为日志. 主机之间采用伸缩架构, 可以随意切换主从配置. 有选票的设计器, 学习功能, 选票识别, 人工干预(另选他人时), 报表等.

我个人在主管这个项目之前, 多数经历都是自己单独开发软件, 参与团队开发也仅仅几个月的时间, 属于非常业余的状态. 甘特图也是临时抱佛脚学来的, 并没有多么善于使用, 连文档也只会用 Word 来画, 只能凑合的表达自己的意图, 如此而已.

事后回想起来, 这个项目成功有这样几个最关键的要素:

1. 老板的完全授权. 我可以完全决定项目的走向, 做哪些功能以及怎么做, 由我自己决定, 没有任何不明确的需求, 任何新加的需求我可以直接拒绝;

2. 团队成员只完成单一任务. 除了我同时也在负责另一个新版会议系统的开发主管(不参与开发)工作之外, 小组成员没有任何其他任务, 所有工作只为完成这个项目;

3. 每天的目标明确. 每天我会对照甘特图, 把当天的工作写在黑板上, 当天完成的就划掉, 没完成的大家都看得到, 会力求完成, 实在完成不了的, 可以带到下一天.

整个项目期间, 很少加班, 因为上班的时间足够多了, 认认真真的干活, 哪里会需要加班呢!? 只有在测试阶段冲刺一下, 才有加班情况.

每个人都期望项目成功, 只期待成功, 项目是不会自己成功的!

 
 
有兴趣的人去了解一下诺曼底登陆, 就明白项目计划和管理是怎么一回事了