软件开发不会死得太惨的几个要素(项目管理篇)
项目管理:
1.客户每天见面,能聊到私人话题.
反例1:
一天一封email,最后交货的时候再和客户见面
反例2:
认为客户写下来的东西即使违反常识,也不应该向客户反映.
反例3:
认为象奴隶一样的无条件服从就能使客户满意
2.以诚相待项目组内的所有人,尊重每一个人,平等对待每一个人,注意细节.
反例1:
一个项目组,10个人,坐在一个长桌子边开会,项目组长总是坐在蒋委员长爱
坐的位置上,西装笔挺.项目组内每个人都板着脸,一本正经.
反例2:
项目组内的一个"高级"程序员对项目组内的"低级"程序员说,"去,给我到杯水
来"
反例3:
组长请项目组内的人吃饭,但是"低级"程序员不请
反例4:
把组内的工作分类成低级和高级的
反例5:
把"软件蓝领"挂在嘴边
反例6:
总和组内的固定一些人一起吃饭,吸烟,聊天
正例1:
给组内的"低级"程序员倒茶
3. 项目管理者本人够专业.
正例1:
懂得一般程序的通用调试技术和高级调试技术
正例2:
能够估计模块的基本功能点数
正例3:
读过<代码大全>,知道辨别代码的质量.
正例4:
懂得接口设计,和程序设计的一般技术(多态,回调函数,抽象数据类型,查表法)
正例5:
掌握一般脚本技术,能够使用脚本自动化项目管理
反例1:
不懂技术的人可以搞管理
反例2:
管理不需要技术(即使是管理技术)
4.制定质量标准,能够在开发实践中贯彻基本的软件工程技术
正例1:
知道使用断言(assert)
正例2:
同级互查
正例3:
必要的时候能够板起脸来,把不能坚持质量标准的人开除.
正例4:
对领导说,"我辞职, 如果不能..."
反例1:
交货期快到了,只要编译通过的代码就可以交给qa了.
反例2:
注释越多,代码质量越好
5. 鼓励组内沟通
正例1:
即使一个白痴程序员说了一些很违反常识的话,请先习惯性地说出以下地话,"很有意思,我怎么没想到呢,请继续说下去"
正例2:
"虽然文档上已经这样写了,我也是这样理解文档地...但是我觉得你说的还是有道理地,这样你写份书面报告,我们讨论一下,然后我帮你转给客户"
正例3:
"我不知道..."
正例4:
"我们有以下几个选择....,我没有漏掉什么备选方案吧?"
正例4:
"你觉得哪个方案好,为什么"
正例5:
"听你的"
反例1:
"文档上是这样写,客户是这样说地,我是这样理解地...所以就这么办了"
反例2:
"我来负责"
反例3:
"我觉得,我分析,我想..."
反例4:
"我来做个总结..."
6. 从项目一开始就建立测试系统和防错系统
反例1:
错误处理只有开发航天飞机地软件才需要
反例2:
断言是什么?
反例3:
低级程序员不能理解断言
反例4:
交货那天发觉构建地系统不能在目标平台上编译和运行
正例1:
在写代码之前先写安装打包教本
7. 在开始大规模构建软件前写原型.
反例1:
明天就要交货,今天赶快请技术高手对这个技术问题进行攻关
8. build开始后制定详细到天到人地计划,每天检查,测试
正例1:
检查测试程度到代码行地粒度
正例2:
数数
反例1:
这个模块是这样地,一个礼拜后交给我
反例2:
文档很详细地,你照着做就可以了,不要问我什么问题
9.制定备用方案,留出余量,不要告诉领导
反例1:
因为deadline是这样这样的,所以我们需要每两天每人
完成一个窗体的逻辑和界面
10. 多读书,少发镖