软件开发者最常见的面试问题之一是他们是否认为自己具有良好的团队精神。 虽然这个问题问得有些泛滥,但也很值得一问,因为:团队合作是很重要的。 作为一个程序员,你职业生涯的大部分是要与团队成员共同工作的。 有效团队的效力大于所有单个成员能力之和。 这就是所谓的协同作用。 低效团队的效力比团队中能力最差成员的效力还要低下。 这意味着你们都要被解雇了,项目注定失败,你们最好开始寻找下一份工作。 所有这些可能都因为一颗老鼠屎坏一锅粥。这篇文章是为了让你避免成为那颗老鼠屎。 团队成败一体 对于团队你首先要了解的是团队成败一体。 在任何团队中,如果成员之间有竞争感,或其中某个成员成功而其他成员失败(亦或反之),那么这个团队就危险了,因为优先考虑自己的利益是人类的本性。 如果团队命运一体, 或者成败都是团队层面上的结果, 而非个人结果,那么团队的最大利益就等同于每个成员各自的最大利益。 在我们生活的现实世界中,我理解情况并不总是这样的。你或许根本无权决定你团队的成败。老板或组织可能把你放进了一个每个个体都要分别评定的团队中,整个团队很难保持“我们是一体”的态度。 这并不意味着你就束手无策。你可以做那个先行者,指出团队成员的命运紧紧相连,成功源于整个团队,那么整个团队的效力就会更高。 你可以非正式的、用行动展现出这种态度。你可以通过语言或行动表现出你相信整个团队的成功比个体成员的成功更重要,以此树立榜样。你可以选择放慢脚步去帮助落后的团队伙伴,而不是只顾自己争金夺银,以此来展现团队精神。 一个人的影响和带头作用可以非常有力。 团队拥有共同的目标 团队的命运不仅通过成败紧紧相连,也因为团队具有共同的目标。 我看到软件开发团队最大的问题之一是成员之间的任务太过分散。太多团队采取的都是分而治之的方法,而不是群策群力的方法。别误会,因为厨师太多也会坏了肉汤, 但团队尽可能多的合作是很理想的。 合作不仅有助于强化共命运的感觉, 往往还会带来更多协同作用的成果。如果团队里的每个人都孤立的完成自己的任务,而并没有真正在一起工作的话,那么并不会有团队合作问题。当然,一个星期可能会有一个共同的大目标来完成项目或者完成安排的任务,但一个团队的优势实际上完全没有被利用到。 没错,但现实是你可能没法直接控制你团队的目标,但你仍然可以影响他们。 作为一个软件开发者,你在团队里可以做的其中一件事就是确保在另外一个团队成员工作时你也可以做些贡献,而不是接新的工作。 在敏捷软件开发环境中,这意味着不能再自行处理新的积压任务,而是应该去看看团队成员已经着手处理的任务,并帮助他们一起完成,之后再开始下一项任务。 在看板式软件开发中,这被称为工作进程限制, 是一个有效的技巧,使积压任务得以更快地进入流水线。 对团队负责 团队中并非人人都能理解什么是好团队,什么是团队工作,但这并不影响你帮助团队取得成功。 我们更容易关注自己的目标目的,而把团队目标放到第二位。 事实上,许多软件开发人员错误地认为努力成为第一,是他们能为自己职业生涯做的最好的事情。 很少会出现这种情况。虽然个人表现很重要,大多数软件开发经理更关心团队的整体表现。在一个整体水平差劲的球队联赛,即便你是全明星MVP球员,也无济于事。 没错,人人都知道你很棒,但你所在的团队还是会输,也就是说,你也还是输。一个人只能做这么多。 即使是最好的软件开发者在编写代码或自己的工作时其生产效率也会是极其有限的。一个出色的软件开发人员会带动周边的人变得更好,而且还能提高整个团队的能力。 如果你真的想获得关注,并成为人人都想邀请加入自己团队的软件开发人员,那么请多关心下整个团队的能力和效能,而不是只关注你自己的。这可不是一件容易的事情。 Jerry 不干活,成天坐着看网上的小猫视频。 你可以说“我才不管Jerry” ,并尽力做好自己的工作,任由Jerry什么都不做。 但这对团队会造成什么影响呢? 还是那句话,无视懒惰的Jerry,你可能是个出色的程序员。但报告项目情况时,你的工作都完成了,却因为Jerry没有尽力而使得整个团队的目标未能达到,那么你个人的成功也就白费了,是不是? 即便你没有被质问,即便你不是团队领导或项目经理,你也要为整个团队负责——包括Jerry。 这并不意味着你必须跑到Jerry桌前,指责他是一个懒鬼,但却意味着你或许可以到他身旁问问哪里出了问题,或者有哪些你能帮忙的地方。 这可能意味着你必须鼓励Jerry和其他团队成员,提醒大家你需要他们,需要他们每一个人。 这可能意味着你必须走出自己的圈子去指导其他开发人员,帮助他们把他们的技能运用在工作中。 对团队负责不是一件容易的事,但它不仅对团队本身有着巨大影响,更会令你的职业生涯大有不同。如果大家都知道你是那种只能独立优秀地完成自己的工作,却不能带动真个团队表现的软件开发人员,那么你就不会找到好工作, 也不会有升职的机会。 沟通和协作 作为软件开发人员,很容易产生这样的态度:告诉我你想做什么,让我一个人待着,我会做好的。很容易就自己宅在屋里,敲几行代码,直到编写和测试完毕你才露面——你确实进行了测试,是不是? 但作为团队的一员,意味着交流与协作。想做高效的团队成员,你必须做一个高效的沟通者。你必须让其他团队成员知道你在做什么,遇到了哪些问题,这样你才能从团队积累的知识技能中获益,或者为团队积累知识技能做贡献。 真的,这就是团队的意义。做到这一点并不难,但你必须养成这个习惯。尽可能多地与团队成员合作,而不是独自工作。 可能技术熟练的你自己编写这个功能代码会快得多,让新同事弗雷德的加入反而会降低你的速度,但与这个经验不足的弗雷德一起工作,你可以提升他的技能,虽然这会使你的速度有所减慢。而弗雷德呢,虽然经验不足,但他或许能够以不同的眼光看问题,或许会注意到你忽略了的明显的问题,节省你好几个小时的时间。 诚实,但要机智 有种最糟糕的团队就是,团队中人人都非常礼貌,没人肯直接地反对别人的意见。尽量避免冲突是人的本性,但是一个健康的团队是有一定程度上的良性冲突的。 如果你想成为一个有价值的团队成员, 你就不能四处转悠着乱拍马屁。当哪里出了错误,或是你有不同的意见,就需要说出来。当有成员没能尽职尽责而拖累团队,或者有成员引起项目中断,妨碍团队实现目标,你就不能袖手旁观,并且还想着“这不是我的问题。” 这就是你的问题。 这是团队里每个成员的问题。 记住,团队成败一体。 所以,要诚实。说出你的想法。别太介意你自己的事情。 但是请机智一些。同一件事情可以用不同的方式去沟通。健康的冲突来自于对立观点的沟通和不以人身攻击的方式处理问题。 在你说什么之前,想想它有什么影响。想想看,如果一个团队成员对你说,你到底想说什么,你什么感受。谨慎行事。 语言可以造成巨大伤害。它们也可以带来益处,所有要好好利用它们。 记住,很多软件开发人员都可以写代码、修bug、独立开发软件。但是如果你想尽可能的高效,如果你想有一个成功的作为软件开发者的职业生涯,你得学会与团队相处。 本文摘自可译网 作者:John Sonmez |
|