除了一流软件企业外,软件项目的 Leader(泛指项目经理、技术经理、架构师等)有很大一部分是不够合格的。
注:这里只随便写写人的问题,不讨论项目管理的方法论。
带项目体会 合格的Leader 应该具备什么特质?
许多项目有这样几种 Leader:
1. 泛泛而谈型
很多时候 Leader 仅仅给出一个大方向,提一些高屋建瓴的理论方向,事情还是交由普通开发人员去做。完了可能又会回头埋怨开发人员的水平不行,没有达到他的预期。最终软件产 品磕磕畔畔发布,达不到预期,责任推到开发人员头上,Leader 又高屋建瓴祭出华丽的重构方案或二期方案。
2. 纯技术型
这样的 Leader 也有很多,可能来自于团队内部的大牛升职,也可能来自外部,他们有个共同的特点,爱“玩”技术。这样的 Leader 也许是具备了太多“工程师气质”,可能对于管理,人事,项目进度,客户关系等问题抱有抵触或并不擅长,信奉大型互联网公司自由的工作氛围,推崇“牛逼”的 技术。我遇到过一个20个人的团队 Leader,公司的抱有极大期待的产品,要用 GO 语言去做。
3. 纯管理型
还有许多团队的 Leader,非技术出身,而是纯管理人员。他们中有许多管理能力没有问题,但是对于软件项目,却常常弄得团队疲于奔命。因为软件项目的人员工数很难精确衡量,技术难度(生产性)对于纯管理人员来说很难把握,导致不能全盘把握项目,对于项目中的技术风险,时间风险不能有效控制。
理想中的 Leader 应该至少具备以下特质:
1. 技术实力过硬,但不爱玩技术。
我相信这一点足以 Pass 掉 90% 人,矛盾吗?不矛盾,技术实力过硬,才足以担当软件项目的 Leader 把控全局,这一点毫无疑问。但是他必须有清晰的目标和大局观,知道自己到底在做什么,因为 做技术 和 做项目 是完全两件事。要做项目就不要玩技术,要玩技术请去研究机构。有许多 Leader 在承接新项目时,爱使用自己并不了解的新兴技术,只为在自己的简历中增添一笔,却对其中的风险认识严重不足,甚至最终效果与理想中差之甚远。
2. 有能力降低复杂度,而不是增加复杂度。
这是上一点的延伸,做为一个 Leader,不管是做产品还是做项目,技术不是目标,技术只是实现目标的过程,这个过程,越可靠,越容易,就意味着成本越低,风险越小。强悍的 Leader,能够把复杂的目标需求,高度分解,把复杂的开发技术,抽丝剥茧,带领开发团队一步一步稳扎稳打的向前。
从企业做项目做产品的角度看,技术本身没有“牛逼”与“落后”之分,许多人对两年前的技术嗤之以鼻,对新兴概念趋之若鹜,这样的人,个人认为只能划拨到“软件开发爱好者”当中去。成熟的技术意味着可靠,学习成本低,方案成熟,最最重要的:风险低。
在编码方面,有许多 Leader 推崇一些牛逼的写法,牛逼的设计方法,对一般10行代码完成的工作,缩减到2行,大加赞赏,如果是个人项目,自己开心就好,但是对于团队协作,商业项目, 这是不可取的。所有的目标都应该放在:提高生产性,降低复杂度。二十年前,厉害的编码方法是为了节约存储成本,运行成本,但是当下,存储成本与运行成本与 人力成本相比,已基本不值一提。别人多花半个小时去理解代码的成本,已经大大超过你节约的那几个字节的存储成本,还不包括经验不足的开发人员理解错误所造 成的损失。
3. 有一定的奉献精神,愿意带领大家成长
做软件项目的 Leader 是要有很大奉献精神的,因为传统行业还有拜师这么一说,一日为师,终生为父,但是在 IT 业,还没看到过拜师这一说,开个玩笑。
Leader 要有一个觉悟,苦心培养和教育开发团队,帮忙他们成长,但是懂得感激你,懂你好的人,不会太多。但是依然要去做这件事情,想方设法帮助团队成长,因为更重 要的目标是把项目把产品做好。方法有很多,比如我们过去尝试过组织书友会,当时找的是《代码大全》这本书,每周两次,轮流讲解,也组织过PPT学习,公开 Review等方式,都取得过比较好的效果。
4. 强有力的控制欲与控制力
我认为一个没有控制欲的人是难堪大任的,有了控制欲才能谈控制力。做为软件项目的 Leader,面对复杂的外部环境,内部环境,对控制能力的考验是极大的。
外部环境的风险可能包括企业或客户较高的预期,极具挑战的时间节点,不确定的目标需求,做为 Leader ,必须有能力化解。
内部环境的风险主要来自人员,如缺编,水平参差不齐的团队。
曾经我带过一个基本由新手组成的团队,客户想要的软件产品却要达到较高的设计 指标,并且有着严格的工期要求,此时,控制欲与控制力就发挥了基本的作用,将软件高度模块化,核心功能全部由我自己设计编写,组织团队到会议室看着投影仪 教他们写插件,找一个有代表性的功能进行实现,对实现的方法,编码的风格做强制要求,让他们照抄,要求他们达到代码风格高度统一。对UI部分的所有细节都 进行了高度的强制要求,专门做了一个UI DEMO,对UI上的元素布局方法,间距,边距等进行说明。每周若干次的项目例会以外,至少两次代码 Review,考虑到团队成员的实际水平,开始我会在 Review 时帮着他们重写,一行一行的推敲,告诉他们如何分析,如何设计,如何编写,几次以后再不合规,加班加点也必须重写。
经过一段时间的磨合,大家逐渐进入状 态,形成了较强的凝聚力与战斗力。
5. 诚以待人
虽然放到第5点,但这却是最最重要的一点,这一点做不到,以上所有都是一纸空文。
做为一个团队 Leader,必须和团队成员坦诚相待,能够帮助大家的就用心帮助,对于自己也不是特别擅长的问题,不可以顾左右而言他,对团队成员进行打压,这一点亦有 许多人做不到。此外,团队成员的工作情况,生活情况,都必须有基本的了解,家庭生活压力是否较大,是否有家人需要照顾,住的是远是近,公司给的待遇是否偏 低,都必须在心里有一杆秤。至于怎么做,我想对于一个成年人来说,无需多言。
6. 其它等等基本素养,不再赘述。
这篇随笔想到哪里就写到了哪里,有些凌乱,错漏不全再所难免,欢迎批评指正。
原文:http://www.cnblogs.com/sheng_chao/p/4565529.html