许多项目有这样几种 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

带项目的一些体会以及合格的 Leader 应该具备什么特质?(转)的更多相关文章

  1. Tomcat增加Context配置不带项目名访问导致启动的时候项目加载两次

    eclipse发布web应用至tomcat,默认方式下访问该项目是需要带项目名称的,例http://localhost:8080/myapp/.现在需要改成这样访问http://localhost.修 ...

  2. 2."结对项目"的心得体会

    上个星期,老师给我们布置了个课堂小作业:   某公司程序员二柱的小孩上了小学二年级,老师让家长每天出30道(100以内)四则运算题目给小学生做.二柱立马就想到写一个小程序来做这件事. 这个事情可以用很 ...

  3. 抒发一下这些天用django做web项目的一些体会

    最近接触了一段时间的python,觉得python写脚本还是挺方便的,做一个简单的桌面应用也很nice,但是随着深入,对python做功能复杂的web项目我彻底死心了​,每个环节都是一堆的坑,部署阶段 ...

  4. 在Intellij IDEA 下通过Maven新建项目的一些体会

    因为习惯的原因,一直在用jetbrain的IDE,最近的在开发javaEE项目,并尝试用maven来管理依赖,那这中间又出了什么让我不得不写下来的呢 一.先来看看在IDEA下怎么用maven建项目 1 ...

  5. HNU_小中初数学学习软件(可视化编程)_结对项目总结与体会

    前言 经过将近一周的共同努力,HnuLyx和我终于完成了项目,期间心酸苦辣,受益良多,请允许我一一道来. 问题(需求要求的

  6. C#生成带项目编号的Word段落

    using System; using Microsoft.Office.Interop.Word; using Word = Microsoft.Office.Interop.Word; names ...

  7. 详解一名合格PHP工程师应该具备的基本知识结构

    在学习php时的一些小沉淀,供童鞋们欣赏哈.. 1.掌握语言本身的语法,熟悉常用类库是必须的: 2.面向对象最为当今的主流也是必须掌握的: 3.常用设计模式必须掌握,设计模式是前辈的总结.经验: 4. ...

  8. 带UI 的小初高数学学习系统 —结对编程项目总结

    一. 项目综述 本系统是基于QT Creator 4.3.0开发环境,开发语言C++,能够实现用户注册,发送短信验证码,用户登陆,用户选择题目类型和数量,显示用户本次答题基本功能.支持对用户账号查重, ...

  9. 采用apicloud开发移动端项目心得体会

    作为第一批吃螃蟹的,来说一说apicloud做移动端项目的一些体会. 刚开始接到项目,需要移动端开发两个项目,公司人员里面没有一个会原生android或者ios开发的,目前能出的技术也就是web,后端 ...

随机推荐

  1. Android拖动和缩放图片

    Android拖动和缩放图片 2014年5月9日 我们在使用应用其中常常须要浏览图片.比方在微信其中.点击图片之后能够对图片进行缩放. 本博客介绍怎样对图片进行拖拽和缩放.这首先要了解Android中 ...

  2. H3C低端交换机MAC绑定

    1.MAC地址和端口的绑定<h3c>system[h3c]interface e0/1[h3c-interface]mac-address max-count #关闭交换机端口的MAC学习 ...

  3. EBS并发管理器请求汇总(按照并发消耗时间,等待时间,平均等待事件等汇总)

    此数据集用于确定正在使用中并发管理器,并可与实际的在启动时分配的并发管理器.而且考虑完成状态为 正常/警告 的请求. select q.concurrent_queue_name, count(*) ...

  4. Eclipse中的SVN的冲突解决方案详解

    版本冲突原因: 假设A.B两个用户都在版本号为100的时候,更新了kingtuns.txt这个文件,A用户在修改完成之后提交kingtuns.txt到服务器,这个时候提交成功,这个时候kingtuns ...

  5. excel单元格中批量加入固定字符

    excel单元格前怎么批量加字母 现在我要在联系人这列,每个姓名前加入衡阳的首字母简写(HY). 3 在同行上面随便找列,我找D列.输入公式:="HY"&A2. 5 输入后 ...

  6. Extjs4.0.7 实现Grid的嵌套

    网上相关资料非常少,我看过的大多是Extjs 3.0 急以前版本的解决方案. 比如:http://mikhailstadnik.com/ext/examples/nested-grid.htm  (E ...

  7. linuxserver启动过程

    随着Linux的应用日益广泛.特别是在网络应用方面,有大量的网络server使用Linux操作系统.因为Linux的桌面应用和Windows相比另一 定的差距.所以在企业应用中往往是Linux和Win ...

  8. HTML中&lt;input&gt;參数,以及文本输入框,文本域的解说

    <form> <input type="text/password" name="名称" value="文本" /> ...

  9. iOS使用CoreImage处理图像40中可用的滤镜名称

    NSString* localPath = [[NSBundle mainBundle] pathForResource:@"1" ofType:@"jpg"] ...

  10. [Web Chart系列之五] 6. 实战draw2d之ConnectionRouter

    前言 ConnectionRouter 的作用是定义连线的展示样式. 是直线连接还是曲线连接(好像也是基于Bezier曲线) 位于包: draw2d.layout.connection 下. 常见的有 ...