From programmer to project manager: thinking is changing

From programmer to project manager: thinking is changing

Programmers and project managers are two completely different jobs and work in very different ways. It used to be done by one person alone, but now it is done by a team. In the past, it was done by myself, but now it is done by directing others. This is a huge change. To adapt to this change, we must first change the thinking mode. Thought determines behavior, and the mode of thinking is like a map for finding your way in a strange city. With an outdated map, you will naturally be unable to reach the goal you want to go. Thinking does not change the old way, thinking changes the world wide.

1. From solo to group work

From programmer to project manager, not only the change of position, but also the fundamental change in the nature of the work. In short, it is a process from working alone to working in groups.

Strictly speaking, programmers do not work alone, they are also in a team and need to have the spirit of teamwork, but in fact, the work of programmers has a strong single-person feature. In a project, the basic work of the programmer is to complete the development tasks assigned by the project manager, and these development tasks are small work packages after the project manager or team has broken down the work, and are a definite function point. It is competent, so programmers only need to conceive and code by themselves, and do not need many people to work together to complete.

The project manager is different. What he faces is not a certain function point, but the entire project. It cannot be completed by one person. The entire project team must work together to do it. This is group work, that is, team fighting. The project manager not only needs team spirit, but also needs to be able to inspire the team spirit of others.

Let's take a look at a comparison of the two roles of programmer and project manager:

 

Role

Main features

Target

The main work

cooperate

Skill requirements

programmer

go it alone

Complete the development tasks assigned by the project manager

coding

Requires team spirit and ability to work with others to complete tasks

development ability

project manager

team fight

"Fast, better and more economical" to achieve project acceptance and satisfy all parties

Develop plans, direct and schedule work, project monitoring, team building, etc.

Make the team more cooperative and build a gel team

Leadership (Managing People)

Executive power (director)

 

As Huang Jianxiang famously said: "You are not fighting alone!" Project managers should always keep this in mind, and don't just focus on coding. Only by learning to exert the power of the team can we manage the project well and become a truly qualified project manager.

2. Why software companies are difficult to manage

From working alone to fighting in teams, the biggest change for project managers is that before, they only had to manage one person, but now you have to manage a team. You used to be alone, but now you need to help others. It can be said that the most important job of a project manager is to manage people.

但是软件企业的人是出名的难管。软件公司的经理管人有两难,一是留人难,人才流失成了很多公司的心病;二是用人难,要把程序员用好,把大家的潜力发挥出来,决非易事。

(1)留人难

每年春节过后大约三月份,是很多软件公司的人力资源部经理最“兴奋”的时候,一方面他们要大量招人,另一方面,大量程序员辞职流失,让他们叫苦不迭。

程序员的离职率高,一直是行业的普遍存在的问题。据前程无忧网站2012提供给《中国经济周刊》的信息表明,IT行业人才流失率高居所有行业的首位。另外据CSDN的一份调查显示,43.6%的开发者在5年内换了3份以上的工作,这么高的跳槽频率真是让人瞠目结舌。我们不禁要问,为什么程序员这么“喜欢”跳槽呢?

我曾经接触过数以百计的人员离职,根据对他们的分析,我将程序员离职的主要原因分为三种:

表 程序员离职原因分析

 

类别

原因

分析

行业原因

程序员就业情况比较好

既然选择多,也就没有必要担心离职问题了。

行业不成熟

很多软件企业生存艰难,大部分软件企业给员工提供的薪资福利有限。 

行业内“贫富差距”大

少数优秀的公司如阿里巴巴的高薪,导致程序员这山望着那山高,影响了员工作稳定性。

公司原因

人际关系紧张

人人都向往愉快、和谐的工作环境。

对公司前景没有信心

如果说公司是大海中的一条船,没有人愿意待在一条没有方向,船身也破破烂烂、摇摇晃晃的小船上,不如趁早离开,找一条更大更坚固的船。

晋升机会少,个人能力得不到发挥。

   良禽择木而栖,既然英雄无用武之地,那也没有必要在一棵书上吊死。

工作压力太大,或长期出差

要钱也要命啊。为了工作可以忍一时之苦,但长期搏命,那就要考虑值不值得了。很少有公司真的把员工当作家庭成员,那只是说说而已,同样也不要指望员工真的把公司当成自己的家,把公司的事当成自己的事

个人原因

期望获得更高的薪酬

跳槽是公认的涨薪最快的方式。

想换多换几个公司,多学一点东西,开阔视野

自己有一身武功,到哪里都会吃亏。在一个小环境中待久了,不了解外面的世界,能学到的东西也有限。

有些人抱着“此处不留爷,自有留爷处”的想法,不认真对待工作

既然这样,公司也不会认真对待他们,更加不会委以重任,最后他们也就边缘化为可有可无的人物了,跳槽也就成了唯一的出路。

 

以上枚举显然不能穷尽所有的问题,但能抓住主要原因就可以了。

这么多问题中,最重要的还是薪资问题。据《北京青年报》的调查显示,“职业收入高低”是促使人们跳槽和选择新职业的首要原因。然而在这一问题上,公司其实也有其苦衷。

很多人从学校毕业,对开发基本上一无所知,经过在公司一年多的培训学习,取得了巨大进步,个人能力提升很快,此时必然对薪资要求也比较高,这是可以理解的。然而,站在公司的角度,这一年你基本上还谈不上什么贡献,公司却付出了较大的成本,大幅加薪一时难以接受,难道我把你招进来就是为了培训然后再涨工资干活吗?你也许会认为公司非常短视,这样的公司不待也罢,殊不知,软件行业看似光鲜,其实大量的企业挣扎在生死线的边缘。据工信部统计,2011年上半年我国软件行业利润仅占软件业务收入的1.28%,这么低的利润率,能活下来就是成功,对公司提出过高的要求也是不现实的。

在这一场博弈中,没有谁对谁错,但公司肯定是受伤的一方。真正将员工利益与公司利益统一起来的凤毛麟角,大部分公司里,公司和员工就像一对冤家,虽然互相需要,却又矛盾重重。

当然,其实公司也应该转变思路,不要总抱着我培养了你、你应该感谢我的心态,在程序员进步巨大的情况下,还是要给员工相应的薪酬,真正留住人才,毕竟软件项目禁不起人员剧烈变动的折腾,从长远来看,公司还是划算的。

(2)用人难

留人难,用人更难,要把程序员用好,则是难上加难。员工用得好,每个人都奋勇当先,以一当十。用得不好,员工死气沉沉,没有朝气和干劲。在我所见过的软件项目中,虽然有不少程序员工作主动积极、富有效率,但更多的是缺乏激情、消极怠工、甚至不服从项目经理工作安排情况。

为什么软件开发人才就这么难用呢?这是由多方面的因素所决定的:

●软件开发的特点

软件产品有一个非常显著的特征,就是它是一种无形的东西,在生产过程中看不见也摸不着,完成以后可以看到运行效果,但你还是无法知道它是不是一个“豆腐渣工程”。它里面暗藏的问题也许若干年后才能看到,也就是说它的质量评价非常困难。这与传统的制造行业有着非常大的差别,比如你是造一栋房子,生产过程中我们就能看到它的结构设计是怎样的,它的地基是不是够牢固,它有没有用“牙签钢筋”等等。

第二个重要特点是对人的依赖性非常大。同样的一个功能点,由不同的程序员来做,所花的时间可能会相差很远,比如有经验的人来做可能只要1天,没经验的人来做,可能1周甚至1个月都完成不了,做出来的质量也可能有天壤之别。即使是同一个人,由于其工作状态的差别,也会产生巨大的差异,如果主动积极做,可能只要1天,消极怠工的做,就无法预期了。这样的情况,在传统行业是无法想象的,只要按规定的程序和规范来做,即使换一拨工人,也可以在同样的时间建造出来,建出来的房子的质量也不会相差太远。要知道,再烂的挖土机也能挖出一个大坑。

总之,软件开发存在非常多的不确定性,非常依赖于每一个开发人员。虽然管理专家们发明了很多方法企图来减少这种不确定性,减少对人的依赖,让软件开发像传统行业一样变得可控,但迄今为止,仍然没有一个通用的行之有效的方法,专家们也不得不无奈的发出“没有银弹”的感慨。

● 程序员的个性比较强

不得不承认,与其它行业人员相比,程序员显得更加内向、不合群,有些人自视甚高,看不起别人。他们做事冲动、不服管,也就不足为奇了。

●程序员的想法比较多

程序员都很聪明,对自己的期望值也很高,不会满足于现状。有想法本来是好事,但人人都很有想法时,经理就没那么好当了,没有高超的领导技能是难以应付的。

综上所述,软件企业对人的依赖性非常强,却又面临着留人难和用人难这样两难的困境。要解决这些问题,一方面要求软件企业真正要做到以人为本,另一方面也对管理者提出更高的要求。

3.转换思维提升领导力

留人难、用人难,难道我们真的就无能为力了吗?这两难困境中,有行业原因、有公司原因,对于这些,作为项目经理也许力不从心;但也有程序员的原因和项目经理自身的原因,对于这一类问题,项目经理并非无能为力。即使在同一个公司,不同项目组中的人员流失情况、团队士气也会有很大的差别,这说明项目经理完全是可以有所作为的。对于有强大领导力的项目经理而言,人员的流失率会更小,工作效率会更高。要提升领导力,首要的是转换思维。

在前面博文中曾介绍了管理的五大思维:以目标为中心的思维、整体思维、平衡思维、以人为中心的思维、团队思维。其中前面三项与理事有关,而后面两项与管人有关。下面我们对这两种思维进行详细的解析:

表 管人的两大思维

 

思维

主要观点

分析

以人为中心的思维

软件产品主要取决于人

虽然流程、规范也很重要,但软件产品的质量,项目的进度、成本等因素,更多取决于每个人的技能与投入程度。

人的潜力是巨大的

一个人的能力就像海上的冰山,项目经理无所作为,你得到就只是露出水面的那5%。一个优秀的项目经理可以通过其领导力,将员工的潜力挖掘出来。

人是有感情的

员工绝不是木头,可以随便搬来搬去,搬到哪里都是一块木头。首先项目经理不可以做伤害下属感情或面子的事情,进一步可以利用这一点,适当使用感情牌,提高团队的凝聚力。

人是有动机的

员工可以努力工作,但这有动机的,要学会分析、利用员工的动机,并采用合适的激励手段。

人与人之间是有差异的

每个人在能力方面和思维方面均存在差异。这一方面要求项目经理不能吹毛求疵,要容忍员工的不足,另一方面,项目经理不能一味以己之心,度人之腹,要尊重人的个性思维。

团队思维

团队的力量可以是1+1>2,也可以是1+1<2

“三个和尚没水吃”,这是典型的1+1<2,其根本原因是他们之间没有建立坦诚相待、团结合作的关系。一个项目团队也是如此,不要以为人多就力量大,那还要看项目经理会不会领导团队,会不会用人。

团队成员之间相互影响

近朱者赤,近墨者黑。正面的情绪也会给别人施加正面的影响,不好的因素同样会扩散,而且会更快、影响更大。因此,项目经理必须要带动正能量,并注意将那些负面的东西扼杀在萌芽状态。

团队之间的协用程度是团队战斗力的关键

团结就是力量。一个木桶能装多少水,不仅取决于每块木板的长度,还取决于木板之间结合是否紧密。项目经理的领导力,就是木板之间缝隙的粘合剂。

项目经理在团队中起着至关重要的作用

一头狮子领着一群羊,要胜过一只羊带着一群狮子。项目经理是团队的核心,他在团队中起着协调作用、激励作用、榜样作用,可以说他直接决定了团队的战斗力。

 

可以看出,这种以人为中心的思维和团队思维,真正体现了以人为本的思想。它们与程序员的机器思维、单干思维大相径庭。许多项目中的问题,就是由于项目经理的思维还停留在程序员阶段造成的。

管理学之父彼德.德鲁克说:“管理是一门反映人的内心,与人性息息相关的科学。”项目经理只有跳出程序员思维的局限,实现思维的转换,尊重人性、遵循人的社会法则,才能真正把人留住、用好,项目团队才能具有更强的战斗力。

 

4.项目经理也是人事经理

在管人的方面,除了要建立上面两大思维之外,还要提高一项认识,那就是项目经理其实也是整个团队的人事经理。

很多项目经理对下属关注的重点往往是他有哪些具体技能,比如他有几年工作经验,他会用JQuery吗,熟悉NHibernate吗等等,而对于项目组成员培训、薪资、离职这些事情,则认为统统是部门经理或人力资源经理的事情。如果将问题交给人力资源部,需要跨部门协调,比较麻烦,因此干脆直接全部推给部门经理。

我担任部门经理的时候,曾无数次遇到这样的情况:

项目经理找到我说:“经理,某某要辞职了,帮我安排一个人。”

“你跟他谈过没有?”我问道。

“还没有。”

“他为什么辞职?”

“还不清楚,可能是工资问题吧。”

我找员工沟通过之后,原因自然是五花八门,有要求加薪的,有抱怨环境的,还有跟项目经理合不来的,不一而足。经过多轮沟通,该开导的开导,有合理要求的尽力帮助争取,还有一部分可以承诺延迟满足,或者用前景来“诱惑”等等,采取这些方法之后,还是有不少人愿意留下来继续做的。其实,大部分辞职的人并不是喜欢换工作,而是有一个心结,需要上司来帮他打开。

其实我做的这些工作,项目经理一样可以做。项目经理与员工朝夕相处,要时刻关注员工的动态,发现异常情况,及早介入沟通,也就不需要其上司费尽心力了,而且员工可能根本不会走到辞职这一步,沟通效果会更好。

项目经理还有一个普遍存在的误区,就是在评价下属时,习惯于说某某不听话、不好管。殊不知,一个员工好不好管,其实也取决于项目经理本人的态度和做法。一个看似不好管的员工,经过引导,同样可以成为项目的骨干,这样的例子屡见不鲜。

所以项目经理在碰到管人的难题时,不要再总是想“这个我管不了”、“那个我没办法”,而应该抱着“我也是人事经理”这样的心态,主动沟通、想办法。如果经过分析或者努力后,确实需要上司出马的,才去请上司来帮忙解决。直接把问题丢出去,当然是最简单,但这样做一方面你在团队中的威望会受到影响,项目的凝聚力下降,另一方面你的个人价值也大打折扣。

5.打造“凝胶型”团队

著名职业经理人唐骏说,管理的任务就是“造一条船,然后让船划起来”。对项目经理而言,我们已经有了一条船——就是项目团队,现在的任务要把它划起来。

软件质量之父沃兹.汉弗莱曾经提出,一支高效的团队应该是一种“凝胶型”的团队。在这样的团队中,大家有着清晰的共同目标,彼此合拍,每个人都全身心投入,团队显示出超常的战斗力。

我曾有经过一次项目灾难拯救的经历,这一段时间我真正体会到了凝胶型团队的力量。项目上线后发现软件运行效率极低,故障不断,人人疲于奔命,客户发出最后通牒,三天之内搞不定就下线。在这种情况下我临危受命,临时接管项目。接手后我主要做了以下几项工作:

1.找出当前影响最大的几个问题,采用头脑风暴法一起找出解决方案,在短时间内让客户体验有较大改善,让客户重拾信心,然后不失时机安抚客户情绪;

2.每天客户下班后开会,与项目组成员一起进一步研究项目存在的问题,按轻重缓急做成任务列表,制定阶段目标,并检查上一阶段完成情况,更新任务列表;

3.向公司申请了充足的经费,保障后勤,改善工作环境和吃、住条件,解除后顾之忧;

4.与团队一起加班加点,一起分析问题,并亲自完成一些力所能及的功能修改。

有随后一段时间里,项目团队的状态让人难以置信。项目组虽然夜以继日的工作,却没有一个人说出一句怨言。其中一位同事才刚当上爸爸一个星期,就驻现场无法回家;还有两位同事的女朋友半夜打电话过来,他们只能躲在一边苦苦安慰;还有一位同事,由于个人原因早先已经申请了离职,仍然与我们一起奋战到最后一刻…… 经过一个多月辛苦修改完善,项目总算彻底摆脱了危机,项目组高高兴兴打道回府。

在这一次经历中,虽然大家都很辛苦,但每个人都过得很充实。大家同心合力,每个人都贡献了自己全部的智慧和力量,也都做到了以前难以想象的事情。

我为什么举这个一个非正常项目(陷入灾难)的例子呢?这是因为要建设一个真正的凝胶型团队非常不易,不只是依赖于项目经理和每一位成员,还与公司的制度、氛围、项目的任务特点等多方面的因素密切相关。在这个例子中,项目灾难显然也是激发大家战斗力的一个重要因素。不过,即使是不能完全做到,但通过项目经理努力,还是可以近似实现的。

根据项目经理团队中充当的角色和发挥作用的不同,凝胶型团队可以分为两种,即星型和网络型,如下图所示:

 


图 两种“凝胶型”的团队
● 星型

项目经理处于中心位置,好比一颗红太阳,把大家吸引在自己的周围,整个项目组依靠项目经理领导力团结在一起。这要求项目经理个人能力极强,富有魅力,具有绝对的权威。星型团队的决策方式常常是这样的:项目经理收集意见,项目经理决策,再反馈给大家,或者由项目经理单独决策,再分发给大家。

● 网络型

网络型的团队中,项目经理看似在其中不占主导地位,项目经理的权威被弱化,实则项目经理的对团队的控制已经内化到每个人的潜意识之中,达到了一种近似于“无为而治”的境界,因此对项目经理的要求更高。

这种团队的决策方式一般采用民主制或民主集中制。把大家联结在一起的不只是项目经理领导力,更是富有挑战性、具有吸引力的目标,以及共同的认识和价值观。项目经理往往是外柔内刚,能够不动声色,于无形中实现对项目掌控。

能够建成星型团队的项目经理已经寥寥,能做到网络型更是可遇不可求。不管有多难,目标不能丢。我们就好比是一群已经出发的登山者,来到了山脚下,怎么能够因为看到山太高太难爬就放弃攀登呢?

 

from   http://developer.51cto.com/art/201211/364725.htm

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326464707&siteId=291194637