Appearance
我心目中的理想团队
工作多年以来,我对理想团队的理解发生过一些变化。
最初,我希望身边的每一位开发人员都具备较好的专业能力,能够独立完成自己的工作。
后来,我逐渐认识到,现实中的团队不可能完全按照个人的理想配置。企业需要考虑人员成本,成员之间也客观存在能力差异。
再后来,我开始产生另一种想法:既然无法要求每个人一开始就足够优秀,那么能否让团队具备一些条件,帮助能力相对不足的成员逐渐成长?
现在回头看,这些认识大致可以归纳为三个阶段。不过,除了职业早期的一些经历,其他认识是什么时候开始形成的,我已经很难准确回忆。
本文讨论的是软件开发、互联网产品等以实际交付为目标的团队,涉及开发、测试、产品等不同角色。这是一份个人认识的记录,而不是适用于所有企业的团队建设标准。
一、最初:希望每个人都能做好自己的工作
工作最初的一两年,我对理想团队的期待比较简单:希望每个人都有较好的专业能力,能够独立完成分配给自己的工作。
这种期待与当时的经历有关。我曾遇到过一些开发人员,连日常工作都难以独立完成,经常需要其他人协助处理。在当时的我看来,既然大家都从事软件开发,为什么不能各自把工作做好?
例如,开发人员应该熟悉日常开发工具,能够较为熟练地查找代码、定位引用和调试问题。接到一项常规任务,应该能够理解基本要求,遇到问题时也具备一定的独立分析能力。
我并不是要求每个人都精通全部技术,但如果长期无法熟练使用日常工具,或者经常不能独立定位常见问题,以至于明显影响工作效率,我会认为这属于专业能力上的不足。
不过,当时的我也处于学习阶段。
那段时间,我阅读过《Thinking in Java》《Clean Code》以及一些重构相关的书籍。虽然看了不少,但受限于当时的经验,有些知识只是看过,未必真正理解,更谈不上熟练运用。
这种期待并不是建立在自己已经拥有很高专业水平的基础上,而是觉得既然从事软件开发,就应该努力具备与岗位相匹配的能力。
那时,我自己的工作方式也相对简单:接受开发任务,完成自己的部分,必要时与前端、测试联调,然后把结果交给组长。
至于团队应该具备怎样的人员结构,企业为什么招聘不同能力水平的人,以及成员之间应该如何长期培养和协作,我当时并没有深入考虑。
那时我关注的,主要还是每个人能不能做好自己的工作。
二、后来:逐渐接受理想与现实之间的差距
随着工作经历增加,我逐渐意识到,组建团队不是简单地把一群专业能力很强的人招到一起。
企业需要考虑招聘预算、薪资支出、经营成本和实际业务需求。如果只从个人愿望出发,当然希望每个角色中的成员都很优秀,所有工作都能够顺利完成,但这样的人员配置未必符合企业能够承担的成本,也未必符合实际工作需要。
此后相当长一段时间,我逐渐接受了现实中的人员能力差异。至于什么时候开始进一步思考这些问题,现在已经记不清了。
但在后来的工作经历和思考中,有一个问题逐渐引起了我的注意。
2.1 人员工资,等于团队的全部成本吗?
在过去任职过的几家公司中,我能够观察到的人员成本讨论,往往更集中在薪资支出上。
但软件开发并不是一种只要增加人数,就能按比例增加产出的工作。
假设一个开发团队原本有四名成员,现在需要补充人力。一种选择是招聘两名经验相对不足的开发人员,另一种选择是招聘一名专业能力较强的开发人员。
哪一种更划算?
如果只比较工资,似乎很容易得出结论。但真正开始工作以后,还需要考虑新成员熟悉业务、理解系统、接受指导以及处理问题所消耗的时间。
经验不足的成员可能需要其他人解释代码、检查实现、协助排查问题。如果这些工作持续占用原有成员较多的时间,那么团队虽然增加了人数,实际交付效率却未必提高。
甚至可能形成一种恶性循环:经验不足的成员缺少有效指导,成长缓慢;因为成长缓慢,又长期需要别人协助;原有成员不得不反复投入时间,从而影响自身的工作和团队的整体交付。
工资是容易观察的人力成本,但沟通、指导、返工和交付延迟,同样可能带来实际成本。
对于这样的人员配置,我现在有自己的倾向。
如果业务比较复杂,现有团队又缺少足够的培养条件,我更倾向于选择一名能够独立承担工作、具备正常协作能力的高级开发人员。因为复杂业务的理解、试错和返工成本往往更高,当指导资源不足时,增加经验不足的成员未必能够迅速形成有效产出。
但如果工作规则明确、容易拆分,团队也有人能够提供适当指导,那么两名具备基础胜任能力的初级开发人员,同样可能是合理的选择。
项目周期、工作内容和团队现有能力,都会影响结果。
真正值得比较的,不只是招聘了多少人、支付多少工资,而是新增人员以后,团队能否以合理的投入完成更多有效工作。
2.2 成本约束,也需要面对实际工作效果
企业控制人员成本有其合理性,但某种人员配置是否真正节省了成本,还需要观察它对实际工作的影响。
如果一名成员长期无法完成与岗位相匹配的常规任务,团队又缺少有效的培养条件,那么这种配置就值得重新审视。
接受现实中的能力差异,不等于认为所有差异都不需要改善。
三、现在:我更期待能够帮助成员成长的团队
后来,我开始重新思考最初的期待。
既然很难要求所有成员从一开始就具备较强的专业能力,那么能不能给他们一些时间、机会和适当的帮助,让他们逐渐成长?
这并不是放弃第一阶段的理想。
我仍然希望大家能够做好自己的工作,只是不再要求每个人一开始就达到较高的能力水平。
相比于一个天然由优秀成员组成的团队,我现在更期待一个能够帮助成员逐步提高能力的团队。
这种成长既可以发生在个人身上,也可以发生在团队共同解决问题、积累经验的过程中。
3.1 各角色的专业骨干与正常协作
我希望开发、测试、产品等不同角色中,都有专业能力较强、能够发挥骨干作用的成员。
这并不是要求整个团队只有两三个优秀的人,也不意味着每个角色都必须配置固定数量的骨干。我更看重的是,当某个角色遇到复杂问题时,团队是否具备相应的专业判断和解决能力。
同时,团队成员不必拥有完全相同的优势。
假设有两位开发人员。
甲专业能力很强,能够独立解决复杂问题,也能正常参与团队协作,但不喜欢长期培训别人。
乙的专业能力同样不错,而且擅长讲解问题、分享经验,愿意帮助其他成员成长。
这两个人都可以是团队中有价值的成员。一个人不愿意承担额外的培训任务,不能因此否定他的专业价值。
但正常协作是另一回事。
如果一名开发人员虽然技术水平很高,却长期无法与产品、测试或者其他开发人员有效协作,导致团队整体工作受到影响,那么协作能力上的不足同样值得重视。
一个人可以不愿意带人,但不能因此拒绝正常的团队协作。
理想团队应该允许不同优势的成员共同存在,而不是要求每个人都成为同一种类型的优秀员工。
3.2 有人愿意教,也需要有人愿意学
在实际工作中,我曾指导过实习生。因为我们需要共同完成工作,所以帮助他熟悉业务、分配适合的任务、解决开发问题,是当时工作的一部分。
对于其他同事,如果有人主动询问技术问题,而我知道怎样处理,通常也愿意提供帮助。大家都是普通人,工作中相互帮助很正常。
不过,别人愿不愿意教,与自己愿不愿意学,是两个不同的问题。
对于刚参加工作的成员,可以给予更多基础指导,帮助他们熟悉工具、系统和工作方式。对于已经有一定经验的成员,则可以有不同的能力期待。
但无论处于什么阶段,成长最终仍然需要个人主动参与。团队可以提供指导和机会,却无法代替一个人理解问题、练习技能和积累经验。
如果同样的问题反复需要他人帮助,而自己始终不愿主动理解和尝试解决,那么即使有人愿意指导,也很难真正形成独立工作的能力。
因此,理想团队需要有人能够提供帮助,也需要接受帮助的成员愿意为自己的成长付出努力。
3.3 日常互助,不等于长期培养机制
在过去的工作经历中,我见过同事之间的互相帮助,也亲自参与过指导工作。但在自己任职过的团队中,我还没有遇到过一套能够长期、稳定帮助成员成长的成熟培养机制。
个人愿意帮助同事,与团队能够持续培养成员,是两件事。
例如,一位经验丰富的开发人员,可以在同事遇到困难时提供指导。但如果公司希望他长期承担新人培养、任务拆分、技术培训和知识分享,就意味着持续投入时间与精力。
如果原本的开发任务没有调整,培养工作又没有得到合理认可,这部分投入就可能变成个人额外承担的工作。
反过来,如果公司招聘了需要一定培养的成员,却没有提供必要的适应条件,同时又希望他们很快达到较高的交付要求,那么培养所需的投入实际上并没有得到充分安排。
如果组织希望获得持续的知识传递,就应该为此提供相应条件。
例如,把指导时间纳入正常工作安排,适当调整其他开发任务,并对承担培养工作的成员给予合理认可或回报。这里讨论的是投入与责任的匹配,而不是具体的薪酬或绩效制度。
日常互助可以来自个人意愿,但持续培养不能完全依赖个人热心。
3.4 培养有成本,不培养同样可能有成本
培养新人需要投入时间,但不培养,并不意味着这些时间就一定能够节省下来。
如果一名经验不足的成员长期无法独立处理常规工作,其他成员就可能不断重复解释相同的业务规则、技术问题和操作方法。这部分时间同样是成本。
如果经过适当指导,他逐渐能够独立完成原来需要协助的任务,那么此前的培养投入,就可能在后续工作中产生收益。
这里可以考虑一个假设。
公司花费一年时间培养了一名开发人员。随着专业能力提高,他逐渐能够独立完成工作,却又因为获得更好的职业机会而离职。
是否意味着之前的培养投入全部白费?
我倾向于认为,不能仅凭最终离职这个结果否定培养价值。
因为培养期间,员工已经完成的实际工作、逐渐减少的重复指导以及提高的交付效率,都可能是已经实现的收益。
离职影响的是原本期待在未来继续获得的收益,并不会让过去已经创造的价值全部消失。
当然,这并不意味着任何培养投入都值得。如果指导方式无效、投入过高,或者培养的能力与实际工作需要不匹配,就需要重新评估。
但同样不能因为担心人员未来离职,就完全放弃成员能力建设。
3.5 从共同经历的问题中积累经验
帮助成员成长,不只有经验丰富的人指导经验不足的人。团队还可以通过共同解决问题、总结经验,让成员逐渐提高工作能力。
例如,某种错误第一次出现,可能是因为此前没有识别相关风险。但当同类问题再次发生时,就值得分析之前的处理是否有效、是否存在可以改进的地方。
如果相同原因导致的可避免问题,在采取改进措施后仍然不断出现,那么团队就需要重新审视自己的问题分析与改进能力。
这并不是规定某个错误只能出现几次,而是关注团队能否通过复盘,让成员下次遇到类似问题时,比过去更有经验。
知识分享是在传递已有经验,问题复盘则是在形成新的经验。两者都可能帮助成员成长。
四、现实中的取舍:成员成长与实际交付
理想团队应该为成员创造成长机会,但这不意味着每个任务都必须成为一次培训机会。
假设一项工作由经验丰富的开发人员独立完成只需要一小时,如果带着新人一起完成,可能需要半天。当任务确实紧急时,可以优先让熟练人员完成,确保交付。
之后,如果新人有必要掌握这类工作,再安排指导;如果没有相关需要,也不必为了培训而培训。
这不是认为交付永远高于培养,而是承认两者都需要时间和资源。
对于软件开发、互联网产品等团队而言,最终仍然需要完成实际交付。交付不只是把代码写完,也包括开发、测试、产品等角色之间的协作,以及必要的质量保障和风险沟通。
如果交付出现问题,需要区分具体原因。有些问题来自团队内部的专业能力不足、沟通不畅或重复返工,也有些问题来自需求频繁变化、外部依赖或其他团队无法直接控制的条件。
团队应该优先改善自身能够控制的问题,但不能把所有交付问题都简单归结为执行人员的能力不足。
人员配置与培养同样受到现实条件的影响。
例如,一个短期项目如果交付时间紧张、业务又比较复杂,可能更需要能够迅速独立承担工作的成员;而一个计划长期维护的系统,则可能有更多机会通过合理分工和指导,让经验不足的成员逐步成长。
但项目周期并不能单独决定人员配置。还要看工作是否容易拆分、现有成员是否有指导能力,以及企业能够承担多少投入。
不同选择可能适合不同的情况,却不能因此放弃岗位基本胜任能力、必要的团队协作,以及与业务相匹配的质量要求。
成本可以影响实现目标的方式,但不能完全代替目标本身。
如今,我更希望团队能够理解这些取舍:需要紧急交付时,可以优先由熟练成员完成;具备培养条件且确有长期工作需要时,也应该让经验不足的成员获得成长机会。
两种安排并不存在天然的高低之分,关键在于是否符合当时的工作目标与现实条件。
五、结语:理想没有消失
回头看,我仍然希望团队中的成员能够具备较好的专业能力,共同完成工作。
只是现在,我更愿意接受成员之间暂时存在的能力差异,也更加关注一个团队有没有条件帮助成员逐步改善这种差异。
理想没有完全改变,改变的是我对实现理想所需条件的认识。
这是我目前基于个人经历形成的判断。未来遇到新的团队、经历新的问题,这份理想也可能继续变化。