技术Leader:像李云龙一样打造学习型团队

今天跟大家分享一下怎么样构建一个学习型的团队。

首先对于计算机行业而言,不明而喻,我们要接受的东西真的太多了。我们接触的信息和变化也太多了。如果只是因循守旧,排斥新东西,那么我们被时代淘汰只是个时间问题。

想当年我大三的时候认识了一个做VB的自有职业的朋友,那是VB开发语言还是很火爆的,我们在喝啤酒的时候,他就跟我说,小蒋,好好学,学好了VB一样,你以后就可以吃香的喝辣的。

时过境迁,我想15年后的今天,应该几乎没有招聘VB的岗位了,别说吃香喝辣,连吃口饭都是问题。

与此同时,在互联网公司里面丰富经验也基本上也往往是低价值的。因为很多时候经验是被旧的产品模式,旧的业务以及旧的技术所积累和沉淀的。但当产品业务和技术发生了天差地别的时候,我们积累那些经验可能完全是无法复用的。

相当年用HTML+CSS的网页制作经验,相信到现在也就是古董了。

比如还有在当前AI时代,原来的产品经验和技术经验可能都是被迭代替换掉的。在AI时代,我们可能就需要用全新的工作方式来面对新的挑战,可能所有产品和技术范式都会被重塑。

聊到这里,大家应该明白,身处计算机行业,构建一个学习型团队对于互联网公司的团队管理来说至关重要。

一方面只有整个团队的知识是迭代是进步的,就能够迎接更好的创新和业务机会。另外一方面,构建学习型团队对每个同学的成长来说也是至关重要的,持续学习的团队可以让每个同学都有接触新技术的机会,可以除了业务之外,能够一个更好学习机会、交流机会,能够迭代和刷新自己的认知和对于技术的了解。

我在面试的时候,不管是校招同学还是社招同学,最后一个问题总会再咨询一个,你平常是怎么样学习新技术的?

从我的经验上面来看,但凡各方面都比较好的同学,往往会对新技术也是非常感兴趣的。反之,如果对学习新技术不感兴趣的同学往往对某一些比较新的技术点的时候,可能同学答的不是很好,或者深度完全不够。这里面体现的就是对于一个技术的兴趣和追求。

那怎么样构建一个学习型团队呢?我认为会有以下几点。

首先,Leader是构建一个学习型团队的核心和灵魂。如果一名Leader没有把重点放在构建学习型的团队上面,团队的同学是没有这个主观能动性的。毕竟在互联网公司最多的事情就是来支持业务上线,也就是我们常见的写代码。就如在早期的时候,基本上在996或者007的这种模式里面,根本没有时间让同学们自己来学习技术,唯有的一点时间就拿来写代码了。

加班到晚上9点,10点再回家,已经疲惫的不可能再拿几本书再去学习新的知识点。相比加过班的同学都深知这一点。

另外对于很多刚刚毕业的同学来说,可能在学习方面很快就会迷失方向。在一个人的思维里面很容易进入一个信息茧房,比如说我学JAVA的,那么我只用JAVA来支持我的业务,在超出我业务范围内的知识我都没有机会去获取,也想不到去获取。或者我们做后端的同学往往没有机会,没有时间去涉及或者了解前端或者客户端相关的知识。同理,做数据的同学往往没有机会去看看后端的架构设计是怎么搞的。而涉略跨方向跨语言甚至跨学科的知识,才能让一位技术同学成长得更快。

我有个前同事兼校友,钉钉总监,微软Azure Identity首席总监,前Office 365首席工程师虞雷就告诉我,程序员最好每半年就学习一门新的技术语言,对自己的编程范式会有质的提高。

反之,时间投入无休止的迭代,会使得我们的技术视野和深度都变得越来越窄。

所以一名Leader要构建一个学习型的团队,就要打造出这种学习成长型的文化,要给团队营造出一个工程师文化的氛围,Leader是团队文化的核心灵魂。李云龙是其打造的“独立团嗷嗷叫的狼性文化”的核心灵魂。

首先,是技术分享。

比如我在团队就定一个规则,两周强制做一次技术分享,做分享的时间纳入到自己的日常工作量上来。与一般的长分享不同,我要求这个技术分享是采用短分享的方式,主要是以某一个同学来起一个自己感兴趣技术主题,收集关键的资料作为主讲人,其他的同学做讨论,然后每两周更换一名同学作为主讲人。

这样既避免了让某一个同学来主导这件事情,花费过多的精力,又能够让其他同学有一个深度参与感。

我之前见过原来的团队组织这种技术分享,一个同学可能要花上一周,两周甚至是一个月的时间来准备PPT,同时在讲解的时候也会挖的特别的深,把很多不常用的长尾的概念也都分析一番,其他同学都不大可能提出具体的问题。这种分享就沦为了一种形式主义。

所以我要求同学们选的主题不要那种特别偏门的,而要求是那种比较新的,比较热门的,比较有实际应用场景的技术主题。

比如我们近期就分享讨论了三个主题,第一个主题是关于Docker的分享,因为我们系统用的就是Docker技术,所以我们在分享这个概念的时候,每个同学都有参与感,在分享期间也频繁提问,也能够加深我们日程发布用到的Docker技术的理解。另外一个技术分享就是AI图生图的技术。这个需求背景是基于我们一个工作台的应用图标变化项目。我们利用AI图生图的方式来对原有的图标做样式和颜色上的重新升级。我们从这个技术里面学习到了很多关于图片处理的一些技术,比如Midjourny。我们还分享了一个关于地球点和点距离和排序的方式,因为我们刚刚做了一个产品功能上线,这个产品就是基于地理位置的一个话题功能,包含“附近”和“同城”,我们设计了一套算法来实现获取当前用户附近的动态内容。

我们这些分享的技术话题都特别的有趣,同时跟我们的工作也息息相关相关,同时也是一个技术前沿性热点内容。

和我之前参与过的技术分享相比非常的枯燥,而我们的短技术分享,每个同学讨论,提问,答疑都非常的热烈。

而这一切就有赖于Leader要构建一个良好的学习型环境,要把技术分享工程师文化写入到我们的团队KPI里面去。

其次,是技术方案Review。

一名技术同学的成长考核,「写一个很好的技术方案」,就是最好的一个标准。技术方案不仅仅是一名程序员解决问题编码能力的体现,更是一名程序员思维方式的体现,也是程序员“技术全局观”的一个投影。

计算机大牛左耳朵耗子就说过,一名程序员80%的精力应该放在写技术方案上,20%才是动手写代码。所以在这里面我们可以看到写好一个技术方案的重要性。到了高手阶段,往往只要你想的清楚,你就能够写的清楚。而想不清楚,也不可能写得出来。因此计算机高手程序员一定不是像黑客那样,坐在屏幕前一通乱敲,反而大部分时间是类似“发呆”一样的组织自己方案。一旦方案清晰了,直接“下笔如有神”。

高手不会像一名初级程序员一样,不管碰到什么问题,上手写代码,然后写着写着发现漏洞百出又重推倒重来。这个就等于一名高手一样,高手过招,是很少直接出剑的,也很少一见面就喊打喊杀,而是面对对手,先做充分缜密的计划、摸索、试探,80%时间在做竞对调研,但是一旦明白了对手底细,就会快速出招,一出就必须要见血,这是同样的概念。

所以我要求团队开发同学在碰到超过三个人日的业务需求上就要准备一份技术方案,技术方案不求宏篇巨论,但求精简清晰。

准备这个技术方案也是同学在构建一个思维的过程,怎么样立体的解决需求。这里面不仅要思考当前的问题,还要思考投入产出比,还要思考核心的解决的架构是什么,里面关键的难点是什么,以及能力复用性。比如用到了什么样的一个技术方案选型,比如在稳定性上面有什么考量,在降级上有怎么考量,能否给其他业务复用,能否具备扩展性。

同时在组织这个技术方案Review的时候,我一般希望尽量所有同学都能够参与,第一个是能够让其他同学可以了解这个技术方案,第二个是给这个技术方案一些自己的思考和建议。这个过程一方面是演讲者自己能够清晰的表达出自己的方案和思考过程,另外一方面也是能够让其他同学来学习这种设计思路或者提出批评建议。

当然这里面还有一个核心的关注点,就是从Leader的角度来关注整个方案的架构是不是合理的,是不是可复用的。会不会踩到一些大坑,会不会使得整个业务出现一个系统性的问题。

所以通过技术Review这样的方式能够锻炼所有团队同学对于系统方案文档产出的一个能力,文档表述的能力以及对于其他同学技术方案的一个理解能力。

最后,是代码review。

归根结底工程师的产出就是代码。虽然我们更看重一名工程师在方案上面的架构设计能力,但最终落到实处的还是代码的能力。因此通过代码Review的方式来学习和提升自己的技能是最具象的。

这也是为什么我在面试P5层级,P6层级和P7同级的同学一定要有代码笔试。一名工程师的动手能力强不强,通过代码笔试完全就能够检测出来。我想这个可能就是诸如谷歌,微软这样的大公司对所有技术职位都要求做算法笔试的一个原因。而且据我所知,像字节跳动这样的公司针对所有层级的程序员都要求写算法代码,这一点我还是非常认同的。

对于代码Review一般采用高层级对低层级进行Review,或者同层级的相互Review。一般来说流程就是在写完程序之后,自测通过了就会把这个代码提交给相关的同学来进行代码Review,然后反复更改确认最后提交发布。

更高阶的工程师一般会从几个角度来看看代码的质量。

比如会关注代码基础规范,代码是不是可复用,之前有没有人写过这段代码,还会关注代码是否优雅,是否有合理的抽象,还会关注代码是否具备了开关和降级能力。对于一些核心主流程的代码还会确认是不是会影响线上稳定的流程。

代码Review对于所有工程师来说来说是一次检查,特别是高阶工程师往往在写代码上面经验非常丰富,通过代码review就能够把自己的经验传达给低阶的开发工程师。对于高级工程师来说,一方面可以学习到其他工程师是怎么样写代码的,另外一方面也能够通过代码Review的方式管把控个系统的稳定性。

作为一个技术团队,从技术分享里面去深挖技术,去讨论技术和学习写代码是最为重要的一个手段。

与此同时,我也特别积极的鼓励同学们参与整个公司的技术分享,积极参与公司举办的各种活动,比如近期的AI大赛。除此之外,我有鼓励团队们在解决日常问题的时候要充分的讨论和相互沟通,比如我们经常就针对于线上发生了抖动、超时的一些根本问题进行深入的分析和探讨。我们团队就有很多同学深入挖掘了诸如大对象导致的FullGC的问题。

我相信只要一个Leader是学习型成长型的Leader,那么整个团队就会是学习型,成长型的团队。

终身学习,我觉得是每一位优秀工程师追求的素养。

   更多原创内容关注公众号:ali老蒋,或点击加我好友深度沟通:ali老蒋 - java开发者

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

boost编译静态库

版本1_83_0 下载地址https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/boost_1_83_0.zip 解压后根目录可见 参考方式:打开index.html 可通过此路径找到编译方法 进入getting started,右下角有linux和windows的下一步可选&#xff0…

IO流(二)

目录 一.文件拷贝 1.小文件拷贝 2.FileInputStream的读取问题 二.捕获异常 三.字符集 1.GBK 英文存储(单字节) 中文存储(双字节) 2.Unicode 3.乱码 原因 规避乱码的方式 四.字符流 FileReader 无参 有参 FileWrit…

pcl的polygonmesh在cloudcompare显示异常

一个polygonMesh文件在PCL显示是这样的: 把它保存成ply,然后用cc打开却是这样的: 这看起来像是某些三角面片没有被保存下来,实际上是因为保存的polygonmesh带有法线信息被pcl区分正反面,这些黑色的小三角它的法线朝向和绿色的不一样. 一个解决办法是清除法线.在cloudcompare选…

AI全栈大模型工程师(二十四)常用的超参

文章目录 七、先介绍几个常用的超参7.1、过拟合与欠拟合7.2、学习率调整策略八、自然语言处理常见的网络结构8.1、文本卷积神经网络 TextCNN8.2、循环神经网络 RNN8.3、Attention (for RNN)后记七、先介绍几个常用的超参 7.1、过拟合与欠拟合 奥卡姆剃刀: 两个处于竞争地位的…

防火墙访问控制、安全审计、网络设备防护检查表

1、访问控制类检查 2、安全审计类检查 3、网络设备防护类检查 原件: 防火墙标准检查表 分类 测评项 预期结果 访问控制 应在网络边界部署访问控制设备,启用访问控制功能 启用了访问控制规则 应能根据会话状态信息为数据流提供明确的允许/拒绝访…

thinkphp连接数据库mysql 报错问题

第一 看报错日志php如果是下面这个报错的话 就是mysql 数据库没有验证连接 ​​​​​​​[2023-12-13T09:57:0108:00][error] [10501]SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client 我们就可以去mysql 的文件检查 验证身份 使…

Nyquist Theorem(取样定理)

取样定理,又称为奈奎斯特定理(Nyquist Theorem),是信号处理领域中一项至关重要的基本原理。它规定了对于连续时间信号,为了能够完全准确地还原出原始信号,即使是在离散时间下进行采样和再构建,都…

十大最好猫主食罐头有哪些品牌?最好猫主食罐头品牌推荐

很多人家里的哈基米是不是吃猫粮吃腻了,或者猫猫平时不喜欢喝水,又或者看猫猫太瘦了想入手几款猫罐头但是又愁于不会选择。而且现在猫罐头风这么大不知道选什么好~ 作为一个经营猫咖5年的老板,大促期间我总能捡漏,屯到一大波好吃…

Appium 自动化测试 —— Appium的环境搭建与设置流程!

1、Appium 环境搭建: 学习 appium 最大的难处之一在于环境的安装,安装流程比较繁琐,安装的工具和步骤也较多,以下是基于 Windows 系统下的 Android 手机端的安装流程。就像我们在用 Selenium 进行 web 自动化测试的时候一样&…

20章节多线程

20.1线程简介 世间有很多工作都是可以同时完成的。例如,人体可以同时进行呼吸、血液循环、思考问题等活用户既可以使用计算机听歌,也可以使用它打印文件。同样,计算机完全可以将多种活动同时进这种思想放在 Java 中被称为并发,而将…

前端八股文

前端八股文 目录 前端八股文1.css选择优先级?2.px与rem区别?3.重绘与重排的区别?4.元素水平垂直居中的方法?5.什么是闭包,闭包有什么特点?6.什么是事件委托?7.什么是原型链?8.new操作…

【Jenkins】Centos环境安装Jenkins(通过rpm安装)

在Centos操作系统中通过rpm安装Jenkins 参考官网 https://www.jenkins.io/doc/book/installing/linux/#red-hat-centos 1、下载安装Jdk17 下载安装 # 更新您的系统,不一定需要 # sudo yum -y update # 安装将用于下载 Java 17 二进制文件的 wget 命令行工具。 s…

C++STL的stack和queue(超详解)

文章目录 前言stack栈的题目最小栈JZ31 栈的压入、弹出序列 stack的模拟实现queue的模拟实现 前言 栈和队列这一块其实有数据结构的基础,学起来非常简单。 stack 栈的成员函数就这么写,除了emplace其他都已经非常熟悉了。 stack没有迭代器吗&#xff…

10个前端开发不容错过的工具网站

作为开发人员,我们经常寻找合适的工具和资源来帮助日常开发工作。但是很多好用的工具网站尤其是国外的网站很多人都错过了。 这里我整理了一份包含 10 个网站的列表,这些网站或许可以帮助到作为前端开发者的你。 1、MDN Web 文档 MDN文档无疑是 Web 开…

【Linux】锁的简单封装以及原理解析

文章目录 一、锁的原理过程1:过程2过程3过程4 二、 锁的简单封装1.LockGuard.hpp2.使用1.正常锁的使用2.使用封装后的 总结 一、锁的原理 为了实现互斥锁操作,大多数体系结构都提供了swap或exchange指令,该指令的作用是把寄存器和内存单元的数据相交换,由于只有一条…

让艺术触手可及!实时云渲染赋能真浪数字艺术馆首展

2023年5月18日,由真浪数字艺术和EZVR联合打造的真浪数字艺术馆首展–「破界交织」让艺术更自由,正式与大家相见。此次展览分为五个主题展馆,汇聚了来自全球各领域的19位青年数字艺术家一同探讨虚实共生、人机共生和万物共生的艺术创作。 真浪…

低代码开发与传统软件开发:未来趋势与竞争格局

近年来,低代码开发平台的快速发展引起了各行各业的广泛关注。低代码开发平台简化了软件开发的复杂性,提供了更快速、更灵活的开发方式。于是,许多人开始产生一个疑问:未来低代码开发是否会取代传统软件开发?今天这篇文…

【网络编程之初出茅庐】

前言:本章主要先讲解一些基本的网络知识,先把基本的知识用起来,后续会更深入的讲解底层原理。 网络编程的概念 网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数…

处理获取当前日期---------------年月日//时分秒

当前时间,先分组匹配,以数组下标索引匹配定义的汉字进行替换 处理日期方法 /* 日期格式化 */ const formatTime function formatTime(time, template) {if (typeof time ! "string") {time new Date().toLocaleString(zh-CN, { hour12: fal…

【学习笔记】Linux(基础知识)

第1章 Linux概况 1.1 Linux起源 四个重要的支柱: ①Unix操作系统; ②Minix操作系统; ③GNU计划; ④Internet网络。 1. Unix操作系统 UNIX的诞生 1971年,用汇编语言首先开发成功16位UNIX系统 1973年,用C语言重写了UNIX系统 创始人:Ken Thompson & Dennis Ritch…