我过去常对有些国家的人有着这样的印象,他们在工作上有着出色的表现,其实并非完全如此。当你有机会和他们一起工作的时候,你就会发现。
在一年多的和一个团队工作中,我一直在观察他们的运作方式,我发现一个团队很容易崩溃,如果没有一个有经验的,负责任的管理者,或者是不幸有一个不负责任的管理者。特别是当他们正在开发新的产品的时候,而这个时候,他们所现有的成员对于新的技能一无所知。
当团队的管理者开始为团队构建而招摹新的工作成员的时候,所招摹的对象通常是有着良好经验的程序员,在开发的第一阶段,这些程序员会贡献出他们对于项目的看法,以及为新的产品构建计划,虽然这个时候团队的管理者颇为兴奋的了解到这些新的技术和可能性,但是通常他们会犯一个错误,就是给予这些新的成员过多的依赖,从而让新的成员认为他们在为这个项目负责,更糟糕的是,他们可能认为这个应用就是他们所计划的那样。
当开发开始的时候,团队原来的人员也会加入到开发的团队中来,虽然他们对于这种新的技术一无所知,但是,对于他们而言,边学习便开发已经成为了习惯,项目的管理者期待着事情像想象中的那样顺利,在预定的时间得到预定的结果,但是,他忘记了给予团队的成员他们的明确的职责分配,谁应该工作在那一部分的,谁应该管理那一部分的代码,结果是,事情向着无法预期的方向发展,当新的成员开始检查代码的时候,他们发现这些老的成员所写的代码,并没有按照预期他们计划的那样,所以他们开始觉得有必要和老的成员协商,交谈,并不断的解释,试图告诉他们,这个应用应该是怎样的。
看上去他们是在尝试帮助,实际上他们也自认为是在帮助,并且确实是想要让团队的成员了解这些新的技术以及专业的代码组织方式,但是这是一个错误。因为他们忘记了,这些成员其实已经在所在的公司工作了5年或者更长的时间,他们已经习惯了他们自己的那种工作方式,所以你不可能让他们去尝试改变,并且不要期待他们会听你的。
而当这发生之后,事情就会变得很难看,我们无法否认通常而言,程序员是比较傲慢的群体,这种傲慢甚至于好像一种职业疾病,不管是这个程序员知道或者不知道这些新的技能,他们已经工作了多年,有着丰富的经验和产品开发的经历,所以对于那些在他们面前唠叨不停的新成员而言,是有点对他们专业的侮辱。所以一开始,他们尝试回避对话,然后他们可能会粗鲁的停止对话,这个时候新成员才意识到问题所在。
当到了这个阶段的时候,是应该管理者显示其魅力的时候了,如果说一个项目管理者只是纠结于矛盾中的个人情节,比如不愉快的对话,或者是粗鲁的尖锐的措辞,并只是尝试解决这样的问题,他就会失败。以为他没有回顾到问题的所在,并且没有对于问题有着很好的思考,显然管理者不应该只是期待项目赶快完成,产品开发出来,然后去卖钱,而是关注开发的问题所在。
个人认为,其实解决方法是,对于新的成员而言,尽管他们定义了产品,并且有着丰富的经验,专业的代码能力,熟知这些新的技术,但是要让他们知道,他们并不主导整个开发,对于团队而言,首先应该挑选一个开发计划,然后不管这个开发计划如何,新的成员都应该按照开发计划,也许这个开发计划并不是他们所预想的那样。
对于原来的成员,他们在公司工作了很长的时间,他们应该负责建立计划,尽管他们对于新的技术知道的很少,或者自以为知道的很多,也不管从专业的角度看,他们的计划可能并不怎样,也可能看上去愚蠢,但是所有的成员应该按照其去做,因为一旦计划选定,其产品就已经确定。并不是所有的公司在一开始都值得拥有一个好的产品,不过他们都在成长中,对于公司而言,最重要的是,维持团队的稳定,从而维护其产品和业务。
一个团队很容易失败,因为如果管理者不看问题所在,只是纠结于其中的个人情节,因为所有的这些个人情节,不愉快的事情本身都不是原因,原因始终都是由于他的计划不周全,或者是他所犯的错误,而他常常否认的那种。
I usually got impression from different source about people in some other countries, and they are superior at their work, that‘s not all true. When you get to work with some of them, you will know what they are...
Being yearly working with a team and observing how it works, I found a team is easily to collapse if there is no experienced and responsible manager, or there is an irresponsible manager. Especially when they are developing new product and all those previous member doesn‘t know it at all.
When the team manager to construct the team by recruit new members, those new members usually had good experiences on their works, and from the first phrase of development, those new members will contribute their idea and build the plan for the new product, at this moment, team manager usually made a mistake, to give those new members too much credits, so they are thinking they are responsible for the project, and the product should be the app what they have planned.
As the development begin, those previous team members who don‘t know about those new skills well also join in, and team manager expected that things going as well as what he expected, he didn‘t clearly let all members knew about their position, who will be in charge of what part of the work, so things start to run into an unexpected way, those new members who think they have planned the app, they think the app they are working on, should always follow their plan and when they find that those previous team members who didn‘t do it, they begin to negotiate with them, try to discuss with them, explain to them, as they think they are helping.
But they are wrong, indeed in their opinion, they are really trying to help others to understand the project well, to know how to be more professional in new skills, but they forgot all those previous members, most of them have been working at the company for about more than five years, and commonly those people have get used to the way they are working with their team, and they won‘t change and listen to other members.
When it happened, things will go ugly, we all can‘t deny a fact that programmers usually arrogant, it‘s like a decease rooted in programmers mind, whatever they know or don‘t know the new skill, if they have many years of experiences on programming, they will regard that those programmers who are telling them how to do, a bit insulting, at first they just ignore the conversation, and later they will shutdown it, this time, those new members start realize what happened.
Usually when a team go into this kind situation, it‘s time for team manager to show his charming power to handle it, if a team manager only focus on those personal issues like unpleasant conversation, being rude and sharp words, he will be failed, because he didn‘t track back to the real problem, and take a reasonable thinking about it, team manager should not be the guy who only push their members to be working efficiently, get the work done, and get the money earned, but see the problem of development.
Actually the solution is, for new members, even though they knew all about this new app, and they probably have a thorough thinking and very good plan on it, professional and writing beautiful code on it, but they should know they are not in charge of the development, and the whole team should pick a plan first, and to work on that PLAN whatever it was or not their plan, even its not good enough, they should follow that.
Those previous members, who have been working at the company for years, they should be responsible and making the PLAN, even its bad, awkward, or sometimes stupid from professional view, but all team members should stick on it, the way the app will be, is the way the team chose, not all company deserve a great app at beginning, but they are growing up, for the company, the most important part is, to sustain the stable of team, and maintain their business easily and well.
A Team will be Failed, if the team manager didn‘t look into the real problem of the team, to discard all those personal issues, because all of them, are not the reason, the reason always happened on his PLAN, and his mistakes, and usually what he denied.