如何成为一个优秀的技术小组长

《如何成为卓越的工程师》 一文中写了如何成为一个卓越的下属,那在《技术为径》里第二部分就是写如何成为优秀的小组长,最后是优秀的经理。

小组长在很多公司都缺乏一个完整的定义,很多时候都是由一些资深的工程师来兼任的,比如原先我司的纯业就是一个优秀的资深工程师。

个人感觉主要比一般工程师多以下两点能力,技术能力本身是比较高的,但不一定是最高的。

  1. 沟通能力:组内沟通和外部沟通(如产品团队,销售和运营团队,以及管理层)
  2. 项目管理能力:项目分解以及如何按时并保证质量的上线。

技术小组长除了推动项目跟好进展外,还应该利用自己的技术优势帮助整个团队提高效率。

书中列了优秀技术小组长的成长秘诀:取舍

  1. 学会管理和分配时间:一定要管住自己去做那些熟知和喜欢的事情,而应该去做那些感觉无从下手的事情。
  2. 在专注交付新功能的同时关注项目的整体进展。
  3. 学会把自己的工作切分成小块,从而避免出现那种需要连续几天时间才能完成的难题。但是要给团队其他成员创造连续时间,以便他们专注解决技术问题。

下面是技术小组长的主要职责:

  1. 系统分析师和业务分析师:找出哪些功能是项目的关键需求,并且分析需要修改哪些系统,以满足这些需求。为项目的排序和排期提供一些结构上的依据。这个过程无需面面俱到。但是详细分析项目存在的困难和外部依赖关系是非常重要的,做好这些工作需要充分了解系统的整体架构,同时需要理解如何着手设计实现一个复杂系统。
  2. 项目计划师:项目计划工作需要将整体工作划分为一个个小型交付物。这里的难点是如何保证团队内部可保持并行工作,而不是你依赖我,我依赖他。另一项工作是安排优先级:哪些工作时关键任务,哪些是锦上添花的。
  3. 软件工程师与团队带头人: 你需要亲自编码,与团队沟通工作难点,学会委派任务。大部分小组长都愿意编码,但是这个不是这个岗位主要的工作。
  4. 项目管理:项目管理不能事无巨细地进行。制定项目计划的这个过程强迫工程师在动手实干之前,先对项目进行一些深度思考。制定项目计划的真正目标在于推动工程师在合适的地方进行合理的预测,并制定针对意外的应对计划

作者也花了点篇幅说如何做好

  1. 多花点时间阐明自己的观点,一些基础概念不同岗位的人理解是不一样的,一些技术的优劣对比也是需要清晰的说明。当然首先是自己要完全掌握。不然也是滥竽充数。

  2. 如何管理好一个项目:就是将一个复杂的最终目标拆分成一些小项目,同时将这些小项目以最高效的方式进行排序,识别出其中可以并行开展的工作,以及这些工作前后的依赖关系。同时还应该试图找出那些可能导致项目延期或者彻底失败的高风险环节。项目管理的过程就是将不确定的部分更确定化、将不可知的问题变成可知问题的过程。同时我们也应该认识到这个过程中犯错误和漏掉的一些未知风险是不可避免的。

    2.1 将工作进行拆分:这个必须小组长亲自完成,这样才能整体上都了解。

    2.2 继续关注细节和未知部分

    2.3 真正落实项目计划并时刻调整

    2.4 利用计划过程中获得的知识来管理需求变更:了解每项细分工作所需的时间,甚至可以割舍一些工作来 平衡项目的质量、进度与交付时间。

    2.5 随着项目的推进不断完善细节信息:可以考虑进行一次复盘模拟。制定一份发布计划,再制定一份回滚计划,当然发布成功的庆祝环节也很重要。

大部分工程师其实内心都是觉得当一个资深工程师是更自在的事情,毕竟只需要关注技术上的事情,这些都是完全自己可把控的,而当管理者以后很多东西都是无法把控的,工程师工作之余还可以写博客、写书、演讲、发布开源项目,甚至在业界获得一定知名度。

最后书中列了如何成为一个优秀的技术小组长:

  1. 维持团队关系:挖掘团队内部的潜力,千万不要自己都冲在最前面
  2. 主导技术决策过程:参与决策,而不是你来完全决定,需要咨询团队成员的意见。你需要决定哪些决策由你个人决定,哪些由团队内的技术专家来排版,或者整体来拍板。
  3. 对内对外的沟通:善于在人前演讲。但是发言的时候也要懂得倾听,要给团队其他成员创造发言的机会,并倾听他们的的意见。