分析业务团队如何进行技术建设

news2024/11/20 18:43:50

背景

大部分中大型的互联网公司,会按照一个技术团队 + 多个业务团队的组织形式。技术团队负责技术基础建设,而业务部门更多的聚焦在业务迭代上。

这种组织形式有其优越性:

  • 可以避免大量重复技术建设

  • 减少上下文,降低沟通成本

技术成长上,技术部门的同学拥有更多的时间进行技术钻研,往往能够得到快速的技术成长。

反观业务团队,快速的业务迭代已经占据了心力,对技术往往浅尝辄止,导致在技术成长上陷入瓶颈。

用一个同学的话来说就是:需求都做不完了,还有精力分析源码?😅

本文并非探讨部门孰优孰劣,仅以解决问题角度出发。业务部门同学能够更加深入地理解业务,拥有更广阔的业务视角。对技术部门的同学来说也是适用的:如果连业务都不了解,技术产出无法反哺业务,于公司有何用?

回到问题本身:业务同学忙于业务,如何获取技术成长?

理想的解决办法是:不加班,业务排期松,给予团队成员更充足的学习时间。但内卷时代,业务压力摆在那,为了个人成长而影响了业务的短期输出,老板的脸色可能也不太好看。(如果有哪个业务团队是这么做的,请联系 hhh 😁)

单纯给予个人更多学习时间不可行,那团队是否可以采取一些手段,来实现业务和技术双赢、个人和团队共同成长呢?本文将以团队视角,对这个话题进行探讨 🚀。

如何进行技术建设

笔者认为可以从以下几方面入手

  • 维护团队知识库

  • 建设业务架构虚拟团队

  • 高效地造有用的轮子

维护团队知识库

建设团队知识库,是团队进行技术建设的第一步。

大到团队规范、业务介绍、新人指南,小到需求纬度的技术预研、问题排查、总结复盘等,都可以往上放。

知识库的组织格式上没有规定,每个团队或项目组根据自己的习惯编排即可。

这里分享一个示例:

- 新人专区
  - 新人指引
  - 业务介绍
- 团队分享 # 方向上可以包含业务分享和技术分享
  - 对内
  - 对外 # 数据脱敏,补充更多上下文
- 团队规范
  - 研发规范 # 包括代码规范、Git 协作规范等
  - 上线规范 # 包括灰度上线环节,发版流程等
- 技术沉淀
  - 事故复盘
  - 问题排查
  - 技术预研
  - 总结规划
- ... 

此外,团队知识库的重点不在于发起,而在于持续维护

不断输出文档,于个人而言有助于提高思考总结能力,于团队而言有利于提高效率、培养技术氛围,实现共同成长。

谁能参与?

人人都能做,人人都应该做,但参与的顺序有所要求。

首先,应由 Leader 带头,按照团队自身的特点去组织文档库的结构,并邀请团队核心成员先输出范例文档。

正所谓人类的本质是模仿,在先有了一些优秀的文档沉淀之后,一些文档能力较差的成员也可以学习参考以至于更好的去输出文档。

何时进行?

伴随着业务迭代的生命周期,各个阶段都可进行文档沉淀。

  • 前:技术预研、方案设计

  • 中:问题排查

  • 后:总结复盘、技术分享

大部分人往往是惰性的,最好有一定的奖励机制确保文档沉淀这件事。

打造业务架构虚拟团队

团队技术建设的第二步,即打造业务架构虚拟团队。

何为业务架构?每个人对业务架构的理解不同,笔者认为,将业务中所涉及的技术细节,基于效率质量的目标进行组织和抽象,形成通用化场景和方案,即为业务架构。

那又为什么是虚拟团队?还是那个老问题,如果让单独一部分成员来负责业务架构,那么另一部分同学又会陷入技术成长的困境。

业务架构组织形式

业务架构的核心目标只有一个:帮助业务同学高效且高质量地完成需求开发

基于这个目标,可以按场景和方案的形式组织业务架构:

  • 方案:结合业务,针对效率和质量的具体解决方案,比如 SSR、CI/CD 等。

  • 场景:针对特定场景,结合业务特点,整合解决方案,形成业务场景,比如中后台、跨端。

上图为一个示例,每个节点均为一个领域方向,由一至多个成员负责。具体拥有哪些领域,还是以各自团队的业务场景来定。

培养接口人

在有了业务架构的概念后,接下来就是培养各个领域的接口人。

培养标准:

  • 根据团队成员兴趣偏好和技术深度来设置对应领域的接口人

  • 尽量保证每个同学都能分配到一或多个领域(允许一个领域有多个接口人)

当团队同学遇到某个方向上的疑惑,找相关接口人了解即可,既减少了人力投入,又加强了团队交流。

举个例子 🌰 :新同学要开发一个 h5 活动页,正常来说需要花一些时间做技术预研,比如离线化、动效选型、兼容性等等。而如果此时有「活动领域接口人」的话,那么直接寻求结论,再配合上一步说的「维护团队知识库」所输出的文档,直接省去了技术预研的人力。

工作开展

首先,笔者认为,每个业务团队都应该有自己的 Monorepo 技术仓库

Monorepo 和 Multirepo 的对比网上已有较多讨论,此处不过多介绍。

简单来说,Monorepo 的核心优势在于风格统一和开发提效。相比之下, Multirepo 每次都需要新建仓库、配置工程化、配置 CI/CD ,非常浪费人力,容易降低团队新人的建设积极性

另外,对于 Monorepo 的前期搭建,笔者认为,前面应该由团队中经验丰富的同学来做,避免新人在上手这块遇到太多问题而降低积极性,或者设计不规范导致维护成本高(🩸血泪教训)。

之后,将业务架构各个领域的技术产出和文档维护在仓库中,并通过 VuePress 等方案搭建文档站点方便阅读。

那么问题来了,技术产出是做什么?造轮子?接口人的主要工作又是什么?

笔者认为,接口人的工作主要分为两方面:

  1. 关注发展趋势,梳理技术文档,完成技术分享

  2. 高效地造有用的轮子

业务同学很难对所有方向都保持关注,而通过建立领域接口人的方式,有利于加强团队分享和交流,提升每个成员的技术广度。

高效地造有用的轮子,意思是说,不需要每个领域都造轮子,如果已有现成的比较好用的轮子,那就不要再造了;如果现成的轮子不好用,那也要考虑投入产出比,后面会细讲。

而如果评估下来无需造轮子,也得了解轮子的原理,知其然且知其所以然,方能成为领域专家。

高效地造有用的轮子

世界上本没有轮子,造的人多了,便处处是轮子

毫无疑问,造轮子是提升技术能力的最佳途径之一。其收益不仅仅在于轮子本身,更是能够让团队同学了解底层技术,体会工程化思想,提升技术积累。且当轮子足够知名时,还能提升个人和团队的影响力。

但随之而来的问题是,前端轮子已经非常多了,几乎开发中遇到的各个方向都有大量现成的轮子,那么是否还有必要继续造轮子

先给出笔者的看法:

  • 基于业务驱动的轮子可以造:有些轮子与业务紧密结合,比如 B 端的业务组件库等,没有可代替的轮子

  • 基于技术驱动的轮子需要评估收益产出比:不能仅仅因为某个现成的轮子不好用,或者基于学习驱动,就去造轮子。

  • 无论造什么轮子,都需要关注优先级

知乎上有个讨论可以看看:外界人总爱说程序员喜欢重复造轮子,对此你怎么看?https://www.zhihu.com/question/407370305

总的来说需要关注「高效」和「有用

可以从哪些地方入手?

业务架构的每个领域都可以入手,并基于不同驱动,投入人力的优先级也不同。

基于业务驱动

深入分析业务,总有场景可以抽象成公共模块,为业务提效。比如:

  • 业务组件库:可复用的 UI 组件

  • 业务工具库:业务 hooks、数据格式化、请求库、bridge 等等

基于技术驱动

相比业务驱动,技术驱动层面的轮子在公司内外基本有比较多的实现了。如果觉得现有的轮子不好用想再造一个,需要做好 ROI、优先级的评估。

依然以效率和质量领域入手,常见的轮子有:

  • 效率

  • 脚手架

  • 联调工具

  • CI/CD

  • 质量

  • 自动化测试

  • 安全检测

  • 监控报警

如何平衡造轮子的人力浪费

造轮子无可避免的会造成人力浪费,如何平衡才是关键。笔者认为可以从以下几点考虑

1 | 评估造轮子的 ROI

  • 人力成本评估:造轮子所需的人力,是否可以在后续同学的使用中节约回来

  • 易用性和性能收益评估:已有轮子无法完全满足需求,自建轮子能够提高多少易用性,对项目带来多少性能收益

举一个笔者业务上遇到的造轮子例子:业务 PC 站点的服务端渲染方案是自建的,而不用社区的 SSR 轮子。主要是考虑到几方面:

1. 易用性:项目长期维护,可以定制各种逻辑
2. 维护性:自己写的 SSR 代码遇到问题更容易排查,而使用社区轮子的话,对于上层不够透明
3. 团队成长:团队中的每个成员都可以接触这项技术的核心原理,有利于团队成员技术提升

2 | 评估优先级

评估通过,并非立即进行,应该和日常业务需求一样放入技术需求池,之后按照「紧急、重要」四象限来决定何时进行资源投入

做好团队技术建设,有什么用?

技术成长

回到最开始业务同学的技术焦虑问题。

笔者认为,在技术氛围较好的团队中个人的进步会更快,另一方面团队的技术积累也是由一个个成员们贡献出来的。

通过推动团队成员参与技术建设,可以解决焦虑问题。

团队影响力

简单来说,有利于招聘

现在招人难,招到合适的人更难。

一般来说,转岗或者应聘者很难了解业务部门的技术状态。而通过本文提到几个方向,可以增加业务部门曝光度,提升技术品牌认知,更容易招到志同道合的伙伴。

总结

本文简单探讨了前端业务团队如何进行技术建设的问题。以维护团队知识库为起点,打造业务架构虚拟团队,并高效地造有用的轮子。通过这些方向,推动团队成员进行技术产出,解决技术焦虑问题。

由于笔者经验不足,本文仅仅作为抛砖引玉,还望有所帮助,或探讨指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/790561.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全 Day20-计算机网络基础知识05(网络原理)

计算机网络基础知识05(网络原理) 1. OSI 模型2. VMware虚拟机NAT模式下上网原理3. 不能上网故障排查 1. OSI 模型 OSI 7层网络通信原理模型 OSI 国际网互联 OSI 数据包封装解封装过程 北京局域网主机A到深圳局域网主机B数据工作流程 2. VMware虚拟机N…

Qt+GDAL开发笔记(一):在windows系统mingw32编译GDAL库、搭建开发环境和基础Demo

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/131931309 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

腾讯云 Cloud Studio 实战训练营——快速构建React完成点餐H5页面

目录 ​编辑 一、前言 1、什么是腾讯云 Cloud Studio 2、本文实验介绍 二、前期准备工作 1、注册 Cloud Studio 2、初始化工作空间 三、开发一个简版的点餐系统页面 1、安装依赖 1.1、安装 antd-mobile 1.2、安装 less 和 less-loader 1.3、暴露 webpack 配置文件 …

Linux JDK 安装详解

安装JDK 1.1 下载jdk压缩包 下载地址: Java Downloads | Oracle Java Downloads | Oracle 下载完成之后上传到服务器 # 1.将JDK解压缩到指定目录 tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/ 注意:-C参数是将JDK解压之后文件放入usr目录中 # 2.进入jdk解压缩目录…

前端Vue仿支付宝自定义可滑动轮播分页宫格菜单组件,可支持九宫格 十二宫格 十五宫格

背景介绍 随着技术的不断发展,传统的开发方式使得系统的复杂度越来越高。在传统开发过程中,一个小小的改动或者一个小功能的增加可能会导致整体逻辑的修改,造成牵一发而动全身的情况。为了解决这个问题,我们采用了组件化的开发模…

SpringBoot+Prometheus+Grafana实现系统可视化监控

场景 SpringBoot中集成Actuator实现监控系统运行状态: SpringBoot中集成Actuator实现监控系统运行状态_springboot actuator 获取系统运行时长_霸道流氓气质的博客-CSDN博客 基于以上Actuator实现系统监控,还可采用如下方案。 Prometheus Prometheu…

EC200U-CN学习(一)

EC200U系列内置丰富的网络协议,集成多个工业标准接口,并支持多种驱动和软件功能(适用于Windows 7/8/8.1/10、Linux和Android等操作系统下的USB驱动),极大地拓展了其在M2M领域的应用范围,如POS、POC、ETC、共…

PMP项目成本管理-控制成本-挣值分析

适用于控制成本过程的数据分析技术包括: 挣值分析 (EVA Earned value analysis) 挣值分析将实际进度和成本绩效与绩效测量基准进行比较。EVM(Earned value Management)把范围基准、成本基准和进度基准整合起来,形成绩效测量基准。它针对每个工作包和控制账户&…

MPAS跨尺度、可变分辨率模式

跨尺度预测模式(The Model for Prediction Across Scales - MPAS)是由洛斯阿拉莫斯实验室和美国国家大气研究中心(NCAR)共同开发,其由3个部分组成,分别称为 MPAS-A(大气模型)、MPAS-O(海洋模型&…

【LeetCode】19.删除链表的倒数第N个结点

题目 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入:head [1], n 1 输出:[]示例 3&…

Stable Diffusion - 扩展 SegmentAnything 和 GroundingDINO 实例分割算法 插件的配置与使用

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/131918652 Paper and GitHub: Segment Anything: SAM - Segment Anything GitHub: https://github.com/facebookresearch/s…

HCIA 第二课总结

配置网络设备的明文密钥实验组网 实验拓扑 将一个路由器使用配置口进行连接 sys #进入系统视图模式 sysname RTA #给设备命名 user-interface console 0 #进入用户接口配置界面 authentication-mode password #配置认证模式为密钥认证 set authentication password ciphe…

【优选算法题练习】day8

文章目录 一、974. 和可被 K 整除的子数组1.题目简介2.解题思路3.代码4.运行结果 二、525. 连续数组1.题目简介2.解题思路3.代码4.运行结果 三、560. 和为 K 的子数组1.题目简介2.解题思路3.代码4.运行结果 总结 一、974. 和可被 K 整除的子数组 1.题目简介 974. 和可被 K 整…

Vue3+ElementPlus实际项目快速开发模板Pure Admin

发现了一个超好用的模板项目,不仅有很全面的完整版,还有精简的可以直接拿来用的后台管理框架。文档很全面,甚至有B站配套视频! PureAdmin保姆级文档 vue-pure-admin快速开发教程(使用Vue3、Vite、Element-Plus、TypeScript、Tail…

基于nodejs+vue微信小程序加油站服务管理系统

开发语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 基于微信小程序加油站服务 系统分为用户和管理员两个角色 用户微信端的主要功能有: 1.用户注册和登陆小程序 2.用户…

【C#】微软的Roslyn 是个啥?

一、说明 Roslyn 是微软重写的C#编译器并开源。 Roslyn 是 C# 和 Visual Basic.NET 开源编译器的代号。以下是它如何在过去十年企业Microsoft的最黑暗中开始,并成为所有C#(和VB)的开源,跨平台,公共语言引擎&#xff0c…

LiveGBS流媒体平台GB/T28181功能-设备树自定义分组自定义组织机构选择通道共享给上级国标平台配置权限给指定用户

LiveGBS流媒体平设备树自定义分组自定义组织机构选择通道共享给上级国标平台权限给指定用户 1、背景2、分组2.1、新建分组2.2、选择通道2.3、导入设备2.4、编辑名称2.5、删除分组2.6、移除分组 3、国标级联3.1、分组共享节点3.1.1、共享给上级平台3.1.2、分配权限给用户 3.2、级…

智能制造RFID设备包括哪些?

智能制造是现代制造业的重要发展方向,其核心是数字化、网络化和智能化。而在智能制造中,RFID设备是一种不可或缺的技术手段,主要用于实现物品的识别、追踪和化管理。以下是智能制造中常用的RFID设备及其功能: 1、 RFID读写器 RFID…

环境搭建和HelloWorld

文章目录 环境搭建和HelloWorld计算机基础知识计算机诞生计算机发展历程计算机硬件计算机软件 DOS命令概述打开命令提示符窗口常用DOS命令 Java概述和环境搭建诞生和发展Java平台版本和作用Java语言特点Win64系统搭建Java8开发环境 第一行代码--HelloWorld创建Java文件编写Java…

PGembedding 代码分析

pgembedding 存储结构 pg embedding 数据是存在共享内存中的,pg down 之后索引数据就没了,但索引对象本身还在,第一次访问时会重新创建。 数据以 plain 的形式存储,其中每个点是这样的结构: idx_size: 表…