软件开发真是一个有趣的行业。
今天有幸读到Andrew和Barbara著的<C++沉思录>,发现作者的视角相当广--超出了C++作为一种技术的范畴。
其中作者谈到一个观点:
软件制造的规模和其经济效益不成正比
作者提到,绝大多数程序员能在一两小时内完成一个100行代码的程序,而在大项目中,通常每个程序员每天只写10行代码。在这里姑且不论100与10的准确性,但项目管理在软件成本中的开销确实是不可忽视的。
100与10,作者强调的重点,我个人认为是保证项目成员之间完成的工作要相对独立,不会在完成自己这部分工作的同时,还要花很多时间去和项目中的其他同事沟通。而作者解决这个问题的方法,就是抽象。
作为OA项目的项目经理兼构架师,我每天至少要花两小时在项目管理上,大致做的事情如下:
- 代码检查
- 客户的邮件处理
- 进度调整
- 内部讨论
- 找出关键问题的解决方案
以上的工作,其针对性如下
- 确保项目中的每个成员在项目中的编码风格统一;确保项目成员正确使用了基础类或基础算法
- 跟踪客户的需求和想法,帮助客户找到问题的解决方案,为项目组寻找新的价值
- 根据当前项目中出现的突发问题或是客户反馈,调整项目进度,使项团队的价值能够正确反映为客户所需要的价值
- 确保项目成员能够正确实施分配的任务,可能的话,还会找到更优的处理方案
- 尽量避免出现阻碍项目进度的瓶颈
尽管这样,目前的项目质量仍然存在部分问题,没有达到我的预期。这也许就是作者嗤之以鼻的项目管理--付出了很多,但不是很有效。
当然,项目中,问题的复杂性,想光用“抽象”二字,岂能解决。但是,或许可以从这里找到一个新的思路。