Gahing's blog Gahing's blog
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Gahing / francecil

To be best
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 个人效率

  • 工作方法

  • 沟通表达

  • 思维发展

  • 写作分享

  • 心理管理

  • 团队管理

    • 业务理解

    • 团队制度

    • 团队建设

    • 导师

    • 技术建设

      • 如何做好技术规划
      • 分析前端业务团队如何进行技术建设
        • 背景
        • 如何进行技术建设
          • 维护团队知识库
          • 谁能参与?
          • 何时进行?
          • 打造业务架构虚拟团队
          • 业务架构组织形式
          • 培养接口人
          • 工作开展
          • 高效地造有用的轮子
          • 可以从哪些地方入手?
          • 基于业务驱动
          • 基于技术驱动
          • 如何平衡造轮子的人力浪费
          • 1 | 评估造轮子的 ROI
          • 2 | 评估优先级
        • 做好团队技术建设,有什么用?
          • 技术成长
          • 团队影响力
        • 总结
        • 拓展阅读
    • 项目管理

  • 职业发展

  • 软素质
  • 团队管理
  • 技术建设
gahing
2022-07-25
目录

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

概述:业务同学忙于业务迭代,缺少时间进行技术钻研,往往有技术成长的诉求。本文将以团队视角,探讨业务团队如何进行技术建设。

# 背景

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

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

  • 可以避免大量重复技术建设
  • 减少上下文,降低沟通成本

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

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

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

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

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

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

image.png

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

# 如何进行技术建设

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

  • 维护团队知识库
  • 建设业务架构虚拟团队
  • 高效地造有用的轮子

# 维护团队知识库

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

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

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

这里分享一个示例:

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

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

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

# 谁能参与?

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

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

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

# 何时进行?

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

  • 前:技术预研、方案设计
  • 中:问题排查
  • 后:总结复盘、技术分享

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

# 打造业务架构虚拟团队

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

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

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

# 业务架构组织形式

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

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

  • 方案:结合业务,针对效率和质量的具体解决方案,比如 SSR、CI/CD 等。
  • 场景:针对特定场景,结合业务特点,整合解决方案,形成业务场景,比如中后台、跨端。

image.png

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

# 培养接口人

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

培养标准:

  • 根据团队成员兴趣偏好和技术深度来设置对应领域的接口人
  • 尽量保证每个同学都能分配到一或多个领域(允许一个领域有多个接口人)

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

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

# 工作开展

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

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

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

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

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

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

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

  1. 关注发展趋势,梳理技术文档,完成技术分享
  2. 高效地造有用的轮子

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

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

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

# 高效地造有用的轮子

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

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

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

先给出笔者的看法:

  • 基于业务驱动的轮子可以造:有些轮子与业务紧密结合,比如 B 端的业务组件库等,没有可代替的轮子
  • 基于技术驱动的轮子需要评估收益产出比:不能仅仅因为某个现成的轮子不好用,或者基于学习驱动,就去造轮子。
  • 无论造什么轮子,都需要关注优先级

知乎上有个讨论可以看看:外界人总爱说程序员喜欢重复造轮子,对此你怎么看? (opens new window)

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

# 可以从哪些地方入手?

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

# 基于业务驱动

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

  • 业务组件库:可复用的 UI 组件
  • 业务工具库:业务 hooks、数据格式化、请求库、bridge 等等
  • ...

# 基于技术驱动

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

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

  • 效率
    • 脚手架
    • 联调工具
    • CI/CD
    • ...
  • 质量
    • 自动化测试
    • 安全检测
    • 监控报警
    • ...

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

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

# 1 | 评估造轮子的 ROI

  • 人力成本评估:造轮子所需的人力,是否可以在后续同学的使用中节约回来
  • 易用性和性能收益评估:已有轮子无法完全满足需求,自建轮子能够提高多少易用性,对项目带来多少性能收益

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

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

# 2 | 评估优先级

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

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

# 技术成长

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

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

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

# 团队影响力

简单来说,有利于招聘

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

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

# 总结

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

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

# 拓展阅读

  • 技术同学在业务中的成长 (opens new window)
  • 程序员为什么热衷造轮子 (opens new window)
  • 前端小团队如何培养技术积累 (opens new window)
  • 跑赢业务的同时如何实现技术成长? (opens new window)
编辑 (opens new window)
上次更新: 2024/09/01, 23:56:56
如何做好技术规划
Owner角色认知

← 如何做好技术规划 Owner角色认知→

最近更新
01
浅谈代码质量与量化指标
08-27
02
快速理解 JS 装饰器
08-26
03
Vue 项目中的 data-v-xxx 是怎么生成的
09-19
更多文章>
Theme by Vdoing | Copyright © 2016-2024 Gahing | 闽ICP备19024221号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式