三年时间,我们基础设施团队从1人变成了现在的4+1人小队。同事戏称之为“西天取经四人组”。我首先得申明:我没有在几十人的纯运维团队待过,以下内容,只是我个人经验,仅供参考,学习。

现在想想,就因为我没有受传统的运维团队的洗礼,反倒成了我的优势。

基础设施团队的职责

基础设施团队的职责是什么呢?我常常对其他小伙伴说:除了业务开发,我们什么都要做。

在说这句话时,我忘记了大家对于“业务开发”的理解是不一致的。也存在一定的误导性。

以至于真正的业务开发人员认为:他们只需要懂业务和CURD,而软件工程基本通识,如构建工具的知识、网络的基本知识、网关的基本认知、监控的基础知识、什么是持续集成、什么叫单元测试,他们一点都不需要懂。

换句话说,我认为是软件工程的基本通识,而业务开发并不认为是(时间久了,我发现,这些知识对整个行业似乎都不是通识)。

当你跟他们说,这是“软件工程的基本通识”时,他们会跟老板说:学习成本太高了,业务开发人员就应该只需要懂业务开发。(你该如何反驳这句话呢?文章最后有说明)

这个认知上的偏差可能导致的问题有:

  1. 业务开发人员认为基础设施人员就是一个被“指使”的团队,而不是一个协作的存在。整个软件行业似乎都是这样的一个风气;

  2. 业务开发开发出来的东西:不可测、不利于部署、不可监控;

  3. 基础设施团队人力不足,他们也就没有了时间去做有意义的基础设施升级。

正确的认知应该是:

  1. 业务开发人员不应该只要懂业务开发。他们还必须具体最基本的“软件工程基本通识”。比如持续集成是什么、云原生的基本原则、如何做到程序的可测性和可部署性等;没有这些软件工程基本通识,开发出来的软件质量是打折的;

  2. 基础设施团队和业务开发人员是协作的关系,只是分工的不同。分工的目的是为了达到整个团队乃至整个公司的最高效率。基础设施团队的部分工作也可以让业务开发人员完成,比配置方式的升级、为应用增加监控指标等。

这个认知偏差,我花了很多时间去纠正,效果甚微。走了很多弯路。现在看来,更合理的做法可能是:

  1. 从最上面的人的认知开始改变:即让最有权力的人给你站台;

  2. 培训所有人基本的软件工程通识。甚至在所有新人入职时就强调基础设施团队的职责;

说回我们一开始问题。基础设施团队的回答应该是:基础设施团队的职责是提高整个团队及至公司的软件工程效率和软件的可用性。同时,我们也要说明:软件工程效率和软件的可用性是需要所有人的协作的,并不只是基础设施团队的事情。

团队内部怎么分工?

前面,本质上说的是如何在基础设施团队和其它团队之间进行分工。现在我们讲一下团队内部该如何分工。

分工是一把双刃剑。分工太细,会导致资源浪费,因为并不是每种工都时时刻刻有活的。分工太粗糙,导致工作相互推诿,因为活的边界并不是时时刻刻清晰的。

这3年,我基本没有对团队的3人(包括我)进行细分工。我更希望团队内每个人都能成为独挡一面的能手,又能主动成为leader。

但是,我们该如何分工呢?工作总要分到一个个具体的人身上吧?以下是我们这3年的经验。

把所有的工作看作一个队列,三个人根据擅长+优先级两个维度进行分工。如下图:

同时,使用GitLab的Issue Dashboard进行协作。每个人完成任务后,另一个人负责进行check。通过这个check的过程,让另一个人成为backup。这个check的过程才是看板管理的核心。没有这个过程,看板会成为摆设。

如果硬要我说3年里,以上分工方式的不足,我会说:应该在团队里尽早将”不强制分工,但是强调每个人的主要工作方向“这一理念传送给团队里的每个人。

底层运维向左,业务运维向右

根据经验,可以把基础设施团队可分成底层运维和业务运维两个方向。那么他们具体是做什么的?

  • 底层运维:他们负责操作系统、虚拟机、硬件机器、基础网络等的管理

  • 业务运维:他们负责服务的CICD、监控告警、业务应用的架构等

但是我们也强调底层运维并不是不能做业务运维的活,业务运维并不是不能做底层运维的活。

工作没有贵贱高低。业务运维必须将尽可能多的工作进行自动化,让底层运维也能接手。底层运维必须尽可能将工作文档化,让业务运维也方便协作。

招更多人?

3年里,虽然我们有理由,也有机会要求更多的人,但是我们基本没有主动要求更多的人。原因:

  1. 我们认为团队就应该少而精,不希望招来一个人后,我们还要招另一个人来管他;

  2. 我们的工作理念(Everything as Code)和用到的技术栈,很难招到人;

  3. 我们希望业务开发也参与基础设施的建设,比如可观测性的库的实现、配置管理、自动化测试等。我们始终强调,基础设施是所有的团队协作的结果;

  4. 自动化做到一定程度后,就不再需要那么多人了。

小结

总结下来,3年里,并不是所有的人都会成为独挡一面的人,包括我自己。我至今不擅长做硬件方面、操作系统层面的底层运维。而且,我也没有强烈地成为这方面的运维人员。同时,从招聘方面来看,能独挡一面的人太少了,我们几乎没有遇到。那么,我们在管理更大型的团队时,应该如何分工呢?这是本篇文章留下来的问题。

如何反驳业务开发人员

  1. 当他们说“业务开发人员就应该只需要懂业务开发”。你可以反问业务开发人员:Git是不是业务开发的知识?既然它不是业务开发,那你们为什么要懂Git?如果答案都是肯定的。那么“业务开发人员就应该只需要懂业务开发”,就不成立。网关的部署你可以不关心,但是,网关的概念,你是不是业务开发,你都需要懂。

往期好文推荐:

  • 另类的思路CMDB建设思路

  • 经验谈:如何培养团队使用看板的习惯

小基础设施团队的分工思路相关推荐

  1. 《小团团团队》第四次作业:项目需求调研与分析

    项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验八 团队作业4:基于原型的团队项目需求调研与分析 团队名称 小团团团队 作业学习目标 (1)体验以原型设计为基础的团队 ...

  2. 《小团团团队》第五次作业:项目需求分析改进与系统设计

    项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验九 团队作业5-团队项目需求改进与系统设计 团队名称 小团团团队 作业学习目标 (1)掌握面向对象需求分析方法:(2) ...

  3. NPDP产品经理小知识-团队发展的五个阶段(塔克曼模型)

    NPDP产品经理小知识-团队发展的五个阶段(塔克曼模型) 心理学教授布鲁斯·塔克曼(Bruce W.Tuckman)在 1965年提出了团队发展阶段模型:组建期(Forming).激荡期(Stormi ...

  4. 哈佛大学庄小威团队破解衰老大脑的关键变化

    "了解衰老是生物医学最重要的目标之一,同时这也是一个非常具有挑战性的问题."哈佛大学终身教授庄小威说,"造成挑战的原因之一在于大脑非常复杂,细胞种类繁多,许多不同类型的神 ...

  5. 微信小程序团队开发项目环境准备以及版本管理工具的基本使用

    团队开发之开发环境准备以及版本管理 序言 一.导入项目 二.初始化版本管理工具 三.工具的使用 示例环境:win10 + 码云 序言 在微信小程序团队开发项目中,如何使用版本管理工具呢?以下内容可以解 ...

  6. 孙文智/胡霁/汪小京团队揭示延迟满足的神经基础

    来源:北京脑 编辑:绿萝 导语:20 世纪 60-70 年代,斯坦福大学心理学家瓦尔特•米舍尔团队进行了一系列有关自制力的心理学实验,其中包括著名的棉花糖实验,得出结论:「能为偏爱的奖励坚持忍耐更长时 ...

  7. 团队任务分工用哪一个团队管理工具分配工作

    团队管理者如果想要做任务分工的话一定要找一款好用的团队工作分配工具,只有透明化的分工,才能让小组成员之间更好的配合工作,有哪些适合团队任务分工用的工具呢? 现在适合小组成员之间相互协同办公的工具是比较 ...

  8. webserver获取http请求方的服务器ip_光大科技基础设施团队剖析HTTP协议

    /HTTP协议剖析/ 团队简介 我们是光大科技有限公司智能云计算部基础设施团队,致力于规划.设计.运维管理集团基础设施环境,保障集团基础设施环境稳定运行,我们团队拥有经验丰富的网络,应用交付,安全专家 ...

  9. ASR项目实战-交付团队的分工

    ASR项目实战-交付团队的分工 对于通常的软件项目,参与角色,比如可以有用户,消费者,产品团队,研发团队(研发团队包括开发和测试),运营团队,运维团队,管理团队. 通常认为,用户,负责购买服务的群体, ...

最新文章

  1. Cognitive Inference:认知推理下的常识知识库资源、常识推理测试评估与中文实践项目索引...
  2. 好消息:Sci-Hub解封了!可以看2021新文献了!附可用网址
  3. linux 下创建文件的方法
  4. 机器学习在高德用户反馈信息处理中的实践
  5. python怎么打开程序管理器_Python 进程管理工具 Supervisor 使用教程
  6. Python 线程池 ThreadPoolExecutor(二) - Python零基础入门教程
  7. python文件下载速度 装饰器_python学习笔记之---装饰器
  8. 今日起开始预约!北京将发放5万份数字人民币红包
  9. nodejs实践录:基于koa的简单web服务器
  10. Mathematica图片修复
  11. [SHELL进阶] (转)最牛B的 Linux Shell 命令 (三)
  12. 2021-08-08备份数据库
  13. hdu4588Count The Carries
  14. Mybatis-plus 多表联查实现(非手写sql)
  15. Web 应用程序测试工具
  16. 基于python下django框架 实现旅游景区景点售票系统详细设计
  17. pubg解封验证计算机怎么验证,绝地求生解封教程
  18. [NOIP 2018]龙虎斗 题解(Python)
  19. 计算机32位操作系统指什么,电脑操作系统的32位和64位有什么区别
  20. 从工具了解大数据之Kettle

热门文章

  1. python中怎么表示一个数的几次方
  2. Verilog语法之运算符
  3. Vue-Router前端路由的两种模式、区别、原理?
  4. 将base64转换为图片
  5. 《程序员》专访:对话张宏江
  6. Python 实现 周志华 《机器学习》 BP算法
  7. wps-- 打开文档目录
  8. 什么是模块化?模块化的好处
  9. js数组array的常用方法
  10. CentOS 初次登录mysql