畅享博客 > 人月神话的Blog > IT项目管理 > 软件开发-人的因素
2007-7-17 13:13:55

软件开发-人的因素

程序员的工作既不是线性的,也不是非线性的。付出的时间和取得的产出之间是一种复杂的模型,程序员的思考质量,思考速度,编码效率和当时心情都影响着实际的工作产出。我们只能大概的得出每周适宜的工作时间,在这个时间里面程序员往往能全身心的投入获得最大的成果。

人是自发冲动的,人类富有个性。他们随着时间,年龄,文化,环境而变化。个人的风格和外在的因素都会对个性特征造成影响。文化和环境对个体的影响是强大的,有共同追逐的目标和价值观的群体才可能形成真正的团队并肩战斗,取得最大的效益。

每个人都有自己分析和解决问题的方法,不要自找麻烦的去试图达到完成的统一。团队运作需要制定统一的规程,但这不应该约束每个人的个性。如果将每个人的思维方式都进行了统一,那整个团队势必也成为了一个没有创造力和竞争优势的团队。团队只能做重复性工作而不是挑战性的工作。

最好的程序员被派去管理以群初学者。由于缺少辅导新手的耐心,他们往往自己把代码修改掉了事。虽然他的设计很出色,但他的团队既不会得到工作的乐趣,也不会增加相关的编程知识。好的程序员关注自己的优秀,团队管理者关注整团队的优秀。所以好的程序员能充当起教练的角色是向管理者发展的重要一步。

团队的风格会受到团队领导者和企业文化的双重影响。当企业文化和团队领导发生变化的时候,团队都得花时间去适应,当领导风格差异很大的时候适应时间往往很长。

团队中具有多样化的人才是件好事-抽象思维者和具体思维者,严格的方法和宽松的方法,有人爱专研系统内部,有人喜欢设计用户界面,有人偏爱系统结构文档,有人擅长最终推销产品。团队中拥有不同特征的人可以让每一个人都充分发挥自己的长处。交流困难和个性冲突表现出的多样性也会提高效率。所以不要期望或去做把团队每个人都变成毫无个性的机器。

人类的缺点往往会作为工作失误的借口。程序员应该正视自己可能存在的缺点,只有看到自己的问题才可能想方法去避免和改进。1)会犯错误 2)墨守成规 3)只想创新 4)积习难改 5)变化无常。敏捷开发,XP,迭代增量,CRC卡片,PSP等等都为我们提供很好的借鉴。

每个程序员身上你都可以发现相应的优点,这些优点可以推动项目走向成功,团队领导者应该更多的规避缺点而强化优点。1)善于寻找 2)持续学习 3)有可塑性 4)为工作自豪 5)为贡献自豪 6)采取主动

天赋-尽管团队领导可以通过鼓励团队学习和让他们接收培训来增长他们的技能,但他不能改变团队成员的天赋,一位有天赋的设计者仍然能够比一位普通优秀技能的设计者做的更好。

只利用人们的为工作自豪,公民感,集体,善于寻找,采取主动的特点构建一个开发方法论可行吗?

推荐到鲜果:

评论

您正在以 匿名用户 的身份发表评论  快速登录
(不得超过 50 个汉字)
       看不清,换一个
提示消息
(输入完内容可以直接按Ctrl+Enter提交)