Steve的另一篇blog “(Not) Managing Software Developers”让我从另一个角度去思考软件开发的管理。Steve用非常风趣的语言大大挖苦了一番想成为项目经理的人。根据他的第22条军规,最想成为项目经理的人往往是最不适合的人。他也大大批判了多数公司倚重项目经理给以项目经理比程序员更好待遇的体系——我相信几乎所有国内的软件企业都是属于他所批判的类型——这种体系下,一个好的程序员要么离开;要么忍气吞声;要么变成一个项目经理。在最后一种情况下,公司失去了一个好的程序员而获得了一个糟糕的项目经理。
Steve认为,给项目经理以巨大控制权并指挥程序员的做法是从传统的非高科技企业学来的,而这事实上意味着软件企业变得非高科技,沦为一个传统企业——只等着有一天一个真正的创新者把它取代。
Go visit most tech companies, and all you'll find is a fussy henhouse parading around an aging goose that laid one or two golden eggs. All their innovation happened in the first act, and now they're focused on "managing for success." But that kind of managing is just staving off insolvency until a real innovator takes their business away.
Google的伟大不仅在于技术上的创新,更在于它在企业文化和管理方法的创新。Steve打了一个很好的比方,传统的管理是“推动”式管理,而Google则是一种“润滑油”式管理。
可以说的话题很多,而且每个话题都可以深入展开,我尝试着简单做一个总结吧:
1、不要指望通过项目管理解决程序员能力不足的问题。
这是我自己加入的观点。这也是针对国内的现状而提出的,即很多程序员没有达到基本程序员的水平。如果一个项目的预算不足,好的项目经理应该从精简需求入手而不是去找一批廉价的没有太多经验的程序员。如果程序员不合格,即使你有最好的开发流程(假设存在这么一个开发流程),最好的设计,最好的经理,最终也难逃失败的噩运。要做一个好产品,第一步是找到优秀的人,宁缺毋滥。这也是Google能够采用它独特管理方法的前提。
2、要对程序员有empathy(一直不知道这个词怎么翻译)
Steve反对Agile Programming的一个重要理由是,程序员是人而不是机器,所以会有情绪高低、状态好坏的变化,而Agile要求团队按照很短的工作周期(比如说半个星期)来出结果,违背了程序员作为一个人的生理习惯。他反对的另一个理由是程序员大多数不喜欢早起,而Agile要求每天早上有一个集体例会。
Google的项目经理至少有一半时间仍然用于编程,对程序员自然会有empathy。我相信,脱离了编程的人是无法成为一个好的项目经理的。
3、不要管理,而是去领导你的团队。
通过文化和物质去激励,通过榜样去感染,比跟在后面挥鞭子要有效的多。
虽然这么说,我相信国内多数企业仍然会倾向于挥鞭子的做法。很简单,国内企业多数仍然是以项目为主,以克隆为主,没有很多创新。既然不需要创新,那么干嘛费劲去激励去感染呢?
对于真正想做出一番成绩的企业,必须向Google看齐。