读后感之:与团队协作 ¶
摘录笔记 ¶
作为程序员,你职业生涯里的大部分时间都是与团队中的其他人一起工作。 与同事相处和与团队伙伴相处,是有很大不同的。 高效能的团队要比团队里所有个体的能力之和更为有效。这就是所谓的协同。无效的团队可能会比团队里效率最低的那个人还要低效。
与测试人员相处。大多数测试人员都不是软件开发者。即使测试人员知道如何编写代码,也可能并不像开发者那么不擅长编写代码或者做好系统的架构设计。要先测试一下自己的东西,尽一切可能避免陷入“发现bug-修复bug-验证bug是否被修复”的连环套中。另外,帮助测试人员实现自动化测试是一个非常好的做法,也是体现自身能力的一种方式。
赞美一个故意羞辱你的人是很不容易的,但这是更高明的套路。在很多情况下,这个人只是在寻找一些承认与认可,一旦你给予他们认可,他们就会跟紧你。一点儿真诚与诚挚的赞许就能起到很大的作用,记住这一点。
与团队目标一致。团队,一荣俱荣,一损俱损。
人类的天性就是要先为自己的最大利益服务。 如果团队里的成员将各自的命运联系在一起,一荣俱荣一损俱损,那么团队中每个成员的最大利益就等同于团队的最大利益。
软件开发团队普遍存在的问题之一就是,他们以过于宽泛的方式分散了团队成员彼此之间的任务。太多的团队采用了分而治之的方法,而不是一种群体进击的方法。
作为团队中的软件开发者,你可以做这样一件事:当你还能对其他团队成员已经在进行中的工作有所贡献时,你就不会选择开始新的工作任务。在敏捷开发环境中,这意味着不需要自己处理一个新的待办事项,而是去发现已经在处理积压任务的团队成员,并帮助他们在进入下一项工作任务之前完成这些待办事项。在看板式的软件开发中,这被称为限制WIP(Work in Progress,进行中的工作),这是一种有效的方法,可以使更多的积压工作更快地通过瓶颈。
你不能强迫别人与你合作,但是你可以给他们一些帮助,只是不要让他们看起来像是需要帮助一样。
对团队负责。专注于你自己的目的和目标,把团队的目标放在第二位,这种做法很有诱惑力,但却是错的。 许多软件开发者错误地认为,通过努力寻求成为第一名,他们就是在为自己的职业生涯做最好的事。很少会出现这种情况。 虽然个人的表现也很重要,但是大多数软件开发行业的管理者更关心团队的整体表现(管理者视角)。
最好的软件开发者,是通过自己编写代码或自己工作来达到最大产出效率的开发者; 杰出的软件开发者,是能使周围其他人都变得更好、提高团队整体作战能力的开发者。
例如,Jerry不好好工作,他整天坐在办公桌前刷手机视频。
你可以暗自抱怨一句“Jerry为什么还不备开除”,然后尽你所能做好自己的工作,任由Jerry继续无所事事。这样做对团队没有任何帮助。 无论你发挥的作用有多大,如果因为Jerry的问题而整个团队目标没有实现,那么你的成功将是相当苍白的。
相反,即使你没有被要求,即使你不是团队的领导者或管理者,你也可以对整个团队负责,包括Jerry。 你可以去和Jerry直接谈一下,问问他遇到什么问题,或者是否有你可以帮助他的。 也就是说,即使你不是团队的领导者,在团队中,你依然可以通过自身的影响力,鼓励Jerry和其他团队成员,提醒他们你在依靠他们,信任他们,大家也是相互依靠相互信任。有时候你可能需要花时间指导其他开发者,帮助他们将自己的技能提升到同等水平,承担了一部分管理者的工作。
所以,如果你真想引起关注,成为人人都争相聘用、人人都想拥有的软件开发者,那就去成为那种对整个团队的能力和绩效更为关心的软件开发者,不要做那种只关心自己的人,这包括要对一些你无法直接控制的事情承担责任(做到这一点很不容易)。今后你在找一份好工作时永远不会遇到问题,而且你也一定可以获得晋升。
**沟通与协调**是成为一名高效能的团队成员的必备技能。你需要让团队其他成员都知道你在做什么、你遇到了哪些问题,这样你才能从团队的集体智慧和能力中受益,也才能对团队有所贡献。 作为一名软件开发者,很容易采取这样的做事态度:告诉我你想做什么,然后就别烦我了,我会完成的。
团队沟通要坦诚也要机智。最糟糕的团队就是团队里每个人都彬彬有礼,没有人会直接反对别人的意见。 尽量避免冲突是人的本性,但是健康的团队,就如同健康的人际关系一样,要有一定程度的良性冲突。如果你想成为一个团队中有价值的一员,你就不能做一个到处吹吹拍拍的好好先生。当出现问题的时候,或者你有不同的意见时,你一定要说出来。 当一名团队成员没有全力以赴,拖累了整个团队,或者另一名团队成员搞砸了事情,造成了混乱,阻碍了团队去实现目标,你不能袖手旁观,也不能认为:“这不是我的问题。” 良性的冲突来自在交流对立的想法时,或者在讨论问题时,不会采取直接攻击他人的方式。说某些话之前,先想想别人听到时的感受。换位思考,如果一个团队成员对你说了你将要说的这些话,你会有怎样的感受。
请牢记,大多数程序员都可以写代码、修bug、独立的完成开发任务,但是如果你真的希望成为一名高效能的程序员,希望拥有一个成功的软件开发职业生涯,那么你需要学会如何与团队协作。