许多项目有这样几种 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. 提领NULL指针

    通常之中导致程序崩溃的最重要的原因是试图取消引用NULL指针.正如在以前的文章中指出,智能指针RefCountPtr和ScopedPtr它提供了一个诊断的执行时间. 但,并不是所有的指针是所有的对象都 ...

  2. Verifying Checksum ... Bad Data CRC 错误解决

    1.问题描述:使用SAM9X25  内核版本是2.6.39  在启动内核时会出现Verifying Checksum ... Bad Data CRC 错误 2.解决办法: 查看原先uboot参数: ...

  3. 从头来之【图解针对虚拟机iOS开发环境搭建】 (转)

    1.下载Mac OSX10.9. 点击下载 2.下载VMware Workstation 10,点击下载,网页中包含序列号.安装VM. 3.VM10-MacOS补丁.用于创建苹果虚拟机. 安装VM就不 ...

  4. cocos2dx手写js绑定C++

    这两天连续查阅了js绑定c++的非常多文章  , 有手动与自己主动两种方式 . 本来想用自己主动绑定的 , 可是NDK一直下载不下来.....就给算了 . 以下总结一下手动绑定的实现过程 : 一共三步 ...

  5. Mutex(测量)

    游标共享怎样使用Mutex kks 使用mutex以便保护对于下述基于parent cursor父游标和子游标child cursor的一系列操作 对于父游标parent cursor的操作: 基于发 ...

  6. linux下用shell删除三天前或者三天内的文件

    说明:+n 大于 n, -n 小于 n, n 相等于 n. find / -amin -30 -ls # 查找在系统中最后30分钟访问的文件find / -atime -2 -ls # 查找在系统中最 ...

  7. linq 中执行方法

    Database1Entities db = new Database1Entities(); protected void Page_Load(object sender, EventArgs e) ...

  8. gustafson,Sun-Ni,Amdahl

    gustafson 定律由 John Gustafson首先提出.描述:系统优化某部件所获得的系统性能的改善程度,取决于该部件被使用的频率,或所占总执行时间的比例. Gustafson定理中,加速比与 ...

  9. SQLServer2012 分页语句执行分析

    上一篇文章提到了,SQLServer2012在使用Offset,Fetch语句分页时,获取了大量不需要的数据,导致查询效率低的问题. 现在让我们来看看,究竟是什么导致SQLServer不能按需取数呢? ...

  10. 最简单的Java框架

    框架framework的目的是定义骨架式方案,处理各种相同的底层细节:而开发人员使用框架时,能够依照自己的需求实现自己的功能--仅仅须要填入自己的东西/flesh. 最简单的框架,类似于JUnit,它 ...