本文是基于《阿里工程师的自我休养》进行的提炼和总结:阿里的技术领导们从各自的角度讲述了他们的职业成长经历,技术领导应具备的技术能力要求和他们对团队建设的经验技巧;
下面从5个方面进行介绍如何构建一个(Java)技术团队;分别是:基础设施,技术栈,开发规范和流程,成员,团队,文化;

为了更好的简化以及便于理解这里的团队是指:使用相同知识领域,工具,使用相同的规范和流程的组织;不同于职能部门,这里讲的团队更具体的是指技能团队,比如:java开发后端团队,web前端团队等各自是独立的团队;而设计团队和开发团队,因为知识领域和工具都不同,就属于不同的团队范畴;前端团队和后端团队虽然会亲密合作,大部分知识领域有重叠部分,但是又不完全一样,其实也应该划分成不同的团队;
而项目团队则需要多个职能部门和技能团队的组合和配置,就不在本次的讨论范围,同时也不适合跨部门和跨团队的合作,仅限于专业团队内部治理;
image.png

基础设施

宽敞明亮的办公室,舒服的工位,电脑笔记本,网络电源灯光,饮水饮料零食,属于基本的基础设施,而技术团队需要的软硬件基础设施还包括:服务器,数据库,测试环境,运行环境,Git代码协同库,Maven环境,Jenkins自动化流水线,DevOps环境,日历写通过,任务协同系统,进度跟进,项目管理等方便成员工作,团队协同的软硬件环境和设施;

基础设施看似不重要,但是缺少基础设施建设则可能会拖累团队的效率和士气;比如如果网络环境不给力或者中断,比如服务器宕机,数据库崩溃;比如饮水机没有水;比如代码库连不上;比如停电了,比如项目协同系统突然件不能用了;对于上面运行的团队都会造成很大的影响;

一般我们将基础设施归为几大环境:

  • 办公环境
  • 会议环境
  • 网络环境
  • 开发环境
  • 运行环境
  • 测试环境
  • Git协同环境
  • 数据库环境
  • Maven环境
  • Jenkins自动构建环境
  • DevOps环境
  • Docker环境
  • K8S环境
  • 任务协同环境
  • 进度根据环境
  • 项目管理环境

良好和完善的基础设施建设对团队绩效有着潜移默化的帮助和提高;

技术栈

技术栈是团队需要使用的知识领域;
一个团队应该保持一个稳定而持续更新的技术栈,新人进入团队往往都带着自己的技术进入团队,有些已经重叠,甚至会超约现有的技术栈范围,应该吸收并沉淀到技术栈中;
原由团队的成员可能受益于新人,新人也会受益于当前的团队技术栈;很多人可能感受不到技术栈的存在;但是技术栈真真正正的存在着;

为什么要打造技术栈:为了培训新人,为了让团队成员保持技术的统一和规范,为了更好的协同和工作;
打造一个什么样的技术栈:后端团队肯定要打造属于后端的技术栈,能够解决公司和团队遇到的问题,同时保持技术的先进性更好的解决问题,更高效的解决问题;
如何打造技术栈:团队应该有技术知识库,定时更新团队需要的技术和文章,约定哪些技术是团队需要的,哪些技术团队成员应该掌握到什么程度,定时的进行人员的培训和考试;

相对于后端技术开发同学:

  • java基础技术
  • javaweb技术
  • 数据库技术
  • 多线程
  • 网络安全
  • Java8的Lambda表达式和Stream
  • java常用的开发框架
  • java常用的工具库
  • java常用的设计模式
  • java常用的编程范式
  • java常用的算法
  • 开源框架
  • 团队使用的框架
  • 不同场景业务下使用的框架

规范和流程

规范和流程分为两类:1:指导性标准协议和程序;2:约束性标准协议和程序;前者是在你不知道如何做的情况下参考学习使用;后者则要求严格遵守,是一种强制性约束;
技术团队的规范和流程不同于公司的规范如此多,也没有产品研发流程那样面面俱到需要多个角色和部门协作;但是技术团队的流程可能更加的专业和细化;比如:

  • 敏捷开发流程
  • GIT使用规范,分支规范,commit规范,
  • 代码风格规范
  • 注释规范
  • Maven使用规范,
  • 命名规范,
  • API规范,
  • 日志规范,
  • 框架使用说明范式
  • 工具库和算法使用说明
  • 代码评审流程
  • 技术方案评审流程
  • 技术选型规范和新技术研发流程

等等;都非常的具体,强调细节和执行;是需要团队成员每个人都应该参考学习并遵守和执行的协议和程序;

成员

所有的一切都离不开人,基础设施是为人准备的,是为人和工作服务的;成员又是团队的组成部分,是技术栈的制定者又是知识的载体,是规范流程的制定者优势规范流程的执行者;同时也是维护技术栈和流程库的主体;

假设一个新的成员进入团队成为团队一份子的过程:
image.png
1:新员工进入办公场所,被分配新的办公电脑或者带着自己的笔记本,坐到自己的工位,接入了公司的网络;(使用基础设施)
2:新成员了解团队的使用的技术以及和自己使用的技术,开始学习团队的技术栈,并发现当前技术栈的问题并进行反馈和更新;(学习并更新技术栈)
3:开始对新成员进行培训团队的规范和流程,以方便接入团队并开始贡献价值;(培训规范流程并熟练使用)

一个成员大概要经历这么一个过程,新加入,经过培训的员工,经过培训合格的员工,团队中的一员,团队中紧密合作的一员,团队成员的重要组成部分;

团队

独木不成林,单丝不成线,一个伟大的工程往往需要一群优秀的工程师亲密的合作才能实现出来;而优秀的团队成员以及良好的团队协作流程和规范是一个优秀团队必不可少的部分;

并不是一群人在一起就是一个团队了,一个优秀和亲密合作的团队是需要经过训练和建设才能获得的;经过建设和训练的团队才有可能成为优秀的团队;如果获得一个优秀的团队,这里从,团队建设,团队训练,团队治理三个方面讲解;

团队建设

技术团队从无到有的建设过程,从需要什么团队,从定义团队开始,团队人员的招募,团队成员应该具备的知识技能和能力,团队成员配备的装备,团队成员应具备的精神面貌;团队成员规模和组成部分,岗位,角色,分工,权利,职责,层级;这些都是团队建设的内容,定义并实现你的团队;其中最重要的是,这个团队是什么,这个团队要做什么,这个团队需要什么;还需要定义的内容,团队内部如何进行决策,团队内部如何进行分工协作,团队内部的是否标准判断,团队内部如何奖功罚过;

团队训练

当组建好了团队之后,最重要的是训练,通过培训和训练使团队成员掌握相关的知识,熟练使用工具,熟悉环境,具备应该有的能力,最终的目的使实现团队的目标,价值和使命;团队的训练可以通过培训,训练,演练,实战等多种方式进行训练;

团队治理

在团队运作和履行使命的过程种,多少会出现懈怠,差错,或者偏离原先设定的目标和愿景,这个时候就需要进行偏差分析和纠偏;
也有可能随着团队的成长和成熟,团队会获得比原先更强的能力和发展出新的技能和科技,这个时候要及时的发现并予以表彰,将好的基因和文化进行固化和推广;让团队的生命力更加的旺盛,让团队可以繁衍;

文化

最后讲的文化,文化是一个团队外在的表现和内在的团队环境;一个运作良好的团队会给人以朝气蓬勃,高效严谨的外在形象;同时团队内的成员也会感到自我实现和自我驱动的价值和文化;

团队文化取决于公司的环境因素,成员个性,团队成员的互动,知识,技术,经验,工具;以及在团队环境中团体所作的事情;团队文化同样影响着团队的成员;人首先是环境的产物,而人类的活动又会反过来影响到所在的环境;

新的成员尤其容易受到团队文化的影响,当然新的成员也会影响团队文化,如果对团队文化不加以引导和限制的话,团队的文化可能朝着任何一个方向发展;所以要对团队文化进行正确的引导,弘扬正确的团队文化,及时纠正错误的团队文化;

充分的信任和良好的合作,更多的彼此认同以及良好的处理冲突和矛盾的机制是一个优秀团队应该打造的团队文化;好的团队文化对工作效率,团队成员的身心,技术的沟通交流进步都会有极大的促进作用,相反糟糕的团队文化,则会起到限制作用;

好的团队文化总是相同的:彼此信任的合作,坦诚公开的沟通,开放和包容的心态,积极主动的行动和对话;糟糕的团队文化则又各种各样的不同;下面列举一些糟糕的团队文化:
喜欢相互推卸责任,甩锅同事;
无法正视问题,解决问题;
不求有功但求无过,懒惰僵化;
责任权利混淆不清;没有边界感;
不能够正确的做事情,或者过度的做了很多,或者做的不够;

这些糟糕的文化的形成,有时候是因为团队成员的个性,有时候是因为团队环境造成的;如果要想改变需要分析并找到原因,寻找可能解决的方案进而尝试解决;