如何让研发新同学快速 Onboarding ?
如何让研发新同学快速 Onboarding ?
这个问题牵涉了很多角色,除了研发新同学和 Mentor,还有团队 Leader、架构师,HR 也可能要关注这个问题,尤其是在公司技术转型的过程中。
在我司服务端入职培训过程中,新同学要面临两项挑战,一是语言关,二是项目关。为了降低新同学培训成本,让新同学更快、更好地助力团队提升交付能力,有必要对新同学进行入职培训,让 Mentor 指导新同学有条不紊地进入工作状态。本文提出了一个研发新同学和 Mentor 的协作框架, 旨在帮助新同学快速 Onboarding,如下图所示:
语言共识
一般,我们通过讨论编程语言的作用、选择、学习等几个方面,可以与新同学达成共识,即:
可以使用任意编程语言对问题求解
选择一门具有领域优势的编程语言
通过语言特性来整体把握一门编程语言
语言的作用
在《计算机系统概论》一书中,作者向我们揭示了编程语言与计算机系统的关系。概括地讲,编程语言是描述算法——可计算性问题解法的一种工具,编程语言的一端是人,另一端是机器,整个层次抽象体系围绕人机关系展开,人通过程序控制机器。
我们将算法视为思维层面的东西,是核心的;编程语言视为表达层面的东西,是非核心的——语言只是是思维的物质外壳。
如果我们工作在 N 层,我们只需要关注 N 层,至多关注 N ± 1 层。通常,我们只需要关注编程语言的应用,而不需要关注编程语言的实现。
总之,语言是实现价值的手段,而不是目的。
语言的选择
一般地,一个算法可以用任意编程语言描述。为什么选择编程语言 X 而不是 Y?又或选择一门终极编程语言 Z ?
针对编程语言选择的问题,与其说是在选择一门编程语言,毋宁说是在选择一个生态——围绕编程语言而产生的库、框架、工具等。而且,编程语言的选择超出了语言本身的考量,需要结合客户、业务、团队进行综合考量。
通常,SRE 选择 Go 或 Python ,QA 和实施选择 Python,服务端和数据端选择 Scala 或 Java ,特别地,也用 Lua、Go 和 Ruby。加上数据采集 SDK,涉及的编程语言会更多。
我们要拥有一个开放的心态,打破“一门编程语言搞定一切”的思维,选择一门最适合应用领域的编程语言。
语言的学习
在《程序设计语言原理》一书中,作者向我们介绍了主流编程语言的主要构件及特性,我们可以以此为纲,通过语言特性来把握一门编程语言。对于通用语言特性,我们可以借助已有的编程语言使用经验进行快速学习;对于特有的语言特性,我们则需要重点学习。
一种语言特性,在语法层面上有多种表述,但其思维内核是相通的,所以,我们应将语言特性的学习作为第一位,语法学习次之。
快速学习
如何快速学习?诀窍是——获取最少必要知识,即将主要精力放在最少必要知识的学习上。
接下来,我们将使用通用特性、快学标签、项目导向,划分出能够支持新同学上手一门编程语言的最少必要知识,从而给新同学制定明确的学习目标。
通用特性
掌握编程语言的通用特性,有助于学习新的编程语言。这些通用特性包括而不限于:
变量和函数
基本运算符(算数运算、逻辑运算、关系运算、位运算)、运算符的优先级和结合性
表达式和语句
控制流程
类型系统、类型推导
面向对象
函数式
并发、异步
这就要求新同学对通用语言特性有一定的认知。
快学标签
Scala 的创始人 Martin Odersky 对应用程序开发工程师和类库设计人员所需的专业知识技能的层级进行了定义,如下图所示:
《快学 Scala》根据上述经验层级,对 Scala 语言知识进行了标记,让学习者能够有选择地阅读和复习,我称之为快学标签 。
我们通过快学标签,来引导新同学学习的方向及内容,一般是 A1 -> A2 -> L1 -> …的顺序。
项目导向
在实践过程中,我们发现项目中使用的关键语言特性并没有包含在合适的快学标签中,由此,在 A 标签 和 L 标签的基础上,我们引入 P 标签,根据新同学上手项目使用的关键语言特性,对编程语言知识加以标识。
这样,我们可以更细粒度的划分最少必要知识,让新同学的学习目标更聚焦。
最佳实践
在新同学上手编程语言和上手项目的过程中,我们尝试引入两个最佳实践—— 实验驱动开发和测试驱动开发。
我们推荐新同学,通过实验驱动开发,来尝试学习编程语言特性;通过测试驱动开发,来完成上手项目。
实验驱动开发
实验驱动开发就是开发者在写测试或生产代码前,先花点时间在交互环境或REPL里做实验。
《深入理解 Scala》一书中,对使用 REPL(Read- Evaluate-Print-Loop) 进行实验驱动开发的价值进行了阐释:
REPL 是开始学习面向表达式编程的极佳方法。
REPL 是一种测试 Scala 语言及其类型系统的强有力手段。
REPL 是一种快速测试 Web 服务或 REST API 的方法。
REPL 帮助开发者确保其设计的 API 在类型系统里能表达得出来。
REPL 是教学 Scala 的最好工具。
测试驱动开发
我们推荐新同学在开发上手项目的过程中,能够先写测试代码,再写产品代码,并在代码重构的过程中,能够思考出更好的设计。
在这里,我们强调测试驱动开发的两个好处,一个是保证质量,另一个是辅助设计。保证质量能让新同学更有信心地交付自己的产出,辅助设计能让新同学交付更好的产出。
上手项目
经过两周的编程语言学习(如果有相关的编程语言背景,这个过程可以略过),新同学通常可以开始上手项目,项目由 Mentor 和团队 Leader 共同指定。在新同学上手项目的过程中,要遵循公司的产研流程和规范——Jira Ticket 规范、技术文档设计规范、MR 规范、代码规范,Mentor 及其他同学在审查新同学代码过程中,要积极地给予指导意见。
写给新同学
新同学要遵循测试驱动开发规则,对没有掌握的编程语言知识,通过 REPL 进行实验。实验代码和项目代码都可以通过 GitLab 找 Mentor 评审。
此外,新同学要主动向 Mentor 反馈问题。
写给 Mentor
Mentor 需要帮助新同学确定最少必要知识和上手项目,之后与新同学的交流可以通过 GitLab 进行,点评新同学的代码,给出指导意见。
代码审查的结果可以作为新同学入职复盘的参考。
此外,Mentor 要及时响应新同学反馈的问题。
结语
本文尝试解决“如何让研发同学快速 Onboarding”,对新同学和 Mentor 的行为进行规范,让新同学在 Mentor 的指导下进行快速上手语言,快速上手项目,快速 Onboarding,更好地助力团队提升交付能力。
招聘信息
GrowingIO技术团队是一个活力四射、对技术充满激情的团队,多个岗位持续招聘中!诚招 大数据工程师 / Java工程师 / 数据挖掘工程师
等。欢迎有兴趣的同学投递简历至:jianli@growingio.com(邮件标题请注明具体岗位名称)。更多职位及信息可进入招聘官网查看!
关于 GrowingIO
GrowingIO 是国内领先的一站式数据增长引擎整体方案服务商,创立于2015年,以数据智能分析能力为核心,通过构建客户数据平台,打造增长营销闭环,帮助企业提升数据驱动能力,赋能商业决策、实现业务增长。
点击「此处」获取 GrowingIO 15 天免费试用!
如何让研发新同学快速 Onboarding ?相关推荐
- 凹凸技术揭秘 · Tide 研发平台 · 布局研发新基建
背景 随着前端技术领域的高速发展,前端开发也变得越来越复杂.业务扩张,小程序平台井喷式增加,都导致开发者肩上的负担越来越重.为了提升研发效率,减少人力浪费,我们开发了开放式跨端跨框架解决方案 Taro ...
- 华为“721法则”:如何让新员工快速融入“狼群”
来源:华夏基石e洞察(ID:chnstonewx) 为帮助团队成员不断超越自我,公司建立了各种培训中心,培训很重要,它是贯彻公司战略意图.推动管理进步和培训干部的重要手段,是公司通向未来.通向明天的重 ...
- java设计按月每天签到_活动攻略|新同学新签到,欢乐福利全都要!
12月03日[每日一题答案]- 枫叶书签 答对问题即有机会获得金币.道具.积分,还有宠物好奇星噢~ 12月来了,和12月一起来的 是我们的新同学--花轮! 谁不喜欢浪漫体贴的小少爷呢! 喵星星感觉 自 ...
- 滴滴顺风车女乘客遇害;华为法律应对澳 5G 禁令;苹果研发新背板技术|极客头条...
「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有料的新闻资讯,让所有技术人,时刻紧跟业界潮流. 快讯速知 滴 ...
- 研发新员工培训流程(待续)
序号 划分时间段 工作项目 子项分类 预计时间 责任人 完成情况说明 备注 培训考察重点 1 第一阶段 新员工入职参加公司培训阶段 1.熟悉办公网环境 a)介绍办公使用系统 b)介绍各种日常办公工具 ...
- 计算机辅助药物设计 中药,基于系统生物学的计算机辅助药物设计中药研发新模式...
基于系统生物学的计算机辅助药物设计中药研发新模式 随着人们对疾病的复杂发病机制的认识逐步加深,使得多靶标的药物开发成为一种必然趋势.中药以其多成分.多靶标整体调节的作用特点而受到越来越多的关注.从整体 ...
- 中国科学家研发新的全基因组组装算法
重磅!中国科学家研发新的全基因组组装算法 2019-12-10 00:01 北京时间12月10日0时,<自然-方法学>在线发表了第一个能够跟上基因组测序产生速度的组装算法. 这篇论文只有两 ...
- 新科技快速指南系列之“5G”:历史、现在与未来
来源:36氪 摘要:5G仍然让人感觉很遥远.但是这些碎片正在拼凑在一起. 未来取决于连通性(connectivity).从人工智能和自动驾驶汽车到远程医疗和混合现实,再到迄今为止无法想象的技术,所有我 ...
- 笑脸喜迎新同学,热情送给新伙伴
" 大家好,我是雄雄,欢迎关注微信公众号:????雄雄的小课堂????. " 今天,于我和王老师来说,是个非同寻常的一天. 那是因为,今天迎来了4班的40余位新同学们! 一大早,同 ...
最新文章
- Gartner评出2017年最值得关注的11个顶级信息安全技术
- C#之foreach语句
- 最短网络 Agri-Net
- 20161114记录一件工作的事
- python如何创建excel文件_Python xlrd/xlwt 创建excel文件及常用操作
- c语言十佳运动员有奖评选系统_2019年沃德十佳内饰解读
- Java Bean验证基础
- linux 修改网卡报错xe,centos修改端口出现Failed to start OpenSSH server daemon 启动报错和-xe报错的解决方法...
- Mybatis(2)-注解使用-IDEA
- 逻辑回归算法识别Minst手写集
- glnxa64 matlab 什么版本_Matlab 2014a 免费版-Matlab2014 Mac版下载 V2014b免费版-PC6苹果网...
- java 图片 文字_java实现 给图片加上文字
- 利用word2007插入参考文献
- 我的世界正版端游服务器ip地址,我的世界1period;8小游戏服务器ip地址 | 手游网游页游攻略大全...
- Redis集群端口等
- 银行账户管理系统(一)
- python爬取王者荣耀皮肤高清图
- python爬虫浏览器伪装和设置代理ip
- python中列表概念_详解python列表
- 遇见你,用尽了我一生的幸运