反思一波:针对新人如何提供帮助

团队越来越大,对于每一个leader都是一次精力和灵魂的考验。
在规模不大的时候,大家还能口耳相传,很容易达到团队规范。偶有例外,也能把影响控制到很小的范围,并且通过一次次高强度的code review,保证最终的代码质量。但是新人不断加入,让整个过程管理变得不那么丝滑。

有人可能会说,需要通过积累靠谱的文档,让新人起步得更容易。这的确有一定道理,我也是这样做的。主流且必要的方式如下:

  1. 从项目开始以来,我们不断地编写模块,业务逻辑以及构建的指南文档,把相关的知识也进行了详尽的归档.
  2. 每次迭代周期里面,我们定期也做文档实时性的维护,保证文档和最新稳定版本是一致的。每次更新文档也会同步通知给相关调用方。
  3. 团队任何成员都可以随时找到相关熟悉业务模块的人进行沟通确认,整个团队的知识体系是共享的。
  4. 如何科学寻找资料和文档,以及分析问题,拆解问题的方法建议,我都在新人培养的过程里面反复讲解,也做了必要示范。

但是就是如此,也不能保证所有人100%都能得到成长和相应的知识。文档只是一种呈现知识和技能传承的方法,也不是适合每一个人。有的人需要手把手教,甚至需要多次演示,最终仍然get不到。

而且个人驱动往往是一个漫长的过程,需要自发的去反思,然后真正去改进甚至改变自己。

所以我一直在思考如何帮助新人,也如何做知识的传递和消化。这种思考还在继续。

本文转载于网络 如有侵权请联系删除

相关文章

  • 下一代前端构建工具 ViteJS 技术解读,尤雨溪diss:Webpack!

    做积极向上的前端人!作者:清秋 https://juejin.cn/post/6937176680251424775关于Vite,来看看作者本人怎么说。本视频是Vue以及Vite作者尤雨溪在2021年2月12日在Twitch上做客GitHubOpenSourceFriday节目的直播视频。在视频里有尤大关于Vite的各项功能的详细阐述、大神在线编码、在线Debug、大佬disswebpack以及对Vite的哲学思考。本视频很长,接近70分钟,下面是视频摘录,强烈建议大家观看视频,里面有很多细节相信大家会有收获。 Vite的发音问题有关Vite发音的灵魂拷问:既然Vite使用的是其法语发音,那为什么Vue不用它的法语发音呢?(大概是因为法语读音不好听吧)。尤大告诉我们,作者说怎么读那就怎么读吧。个人认为Vue和Vite的文档堪称良心了,首先就交代自己名字的发音,让全球开发者统一认知。再来看Svelte,别说发音了,至今拼写还记不住。Vite是什么尤大自己也说,很难一句话描述清楚Vite到底是什么。主要原因可能是它主要包括两个部分,一个基于ESM的利用esbuild的开发服务器,另一个部分

  • 微信小程序入门开发指南

    小程序简介小程序是一种不需要下载安装即可使用的应用,它是连接用户与服务的新方式,它实现了应用“触手可及”的梦想。用户扫一扫或者搜一下即可打开应用,也体现了“用完即走”的理念。用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又“无需安装下载”此篇是微信小程序开发的一个简明介绍和关键说明,微信小程序的主要开发语言是JavaScript,如果你使用过Vue或者React,你将会对微信小程序的开发有一种亲切感,它们的一些理念有一些类似,比如数据绑定、数据驱动视图等。准备工作注册小程序账号 注册地址获取AppID 位于小程序管理平台的菜单“开发”-“开发设置”安装小程序开发工具 下载地址配置项目1.打开小程序开发者工具,用微信扫码登录开发者工具2.新建项目3.选择小程序项目4.选择本地存放路径5.填写上面获取到的AppID6.完成项目创建一些重要的概念小程序的组成 小程序包含一个描述整体程序的app和多个描述各自页面的page。一个小程序主体部分由三个文件组成,必须放在项目的根目录:app.js——小程序逻辑app.json——小程序公共配置app.wxss——小程序公共样式表3

  • 【crossbeam系列】4 crossbeam-channel:加强版channel

    这一期的内容会轻松一些,讲讲crossbeam中的channel。可是有人就要问了在标准库里面已经有了std::sync::mpsc,为什么crossbeam又要搞出一套channel呢?首先我们来看看标准库中的channel有哪些不足吧标准库中channel的不足Receiver不能被clone,是MPSC的channel。理想状况我们希望能有MPMC的channelSender和Receiver不是Sync。在Go语言中,channel一般和select语句一起使用,但是标准库中的channel并不支持select有限容量(Bounded)的channel内部实现就是一个简单的Mutex<VecDeque<T>>,性能比Go语言的channel还差有Sender(=Unbouded)和SyncSender(=Bounded)的区分,用起来不统一。crossbeam中加强版的channel首先,无论容量是否有限,Sender类型统一成一种,这样用起来就很方便。其次对有限容量的channel进行了重写(还记得上一期我们讲的Deque其实就是为了消除Mutex&l

  • 《请回答1988》弹幕分析

    《请回答1988》弹幕分析本文是从B站提取弹幕,并生成《请回答1988》用户点评的词云图,具体代码参见请回答1988弹幕词云请回答1988弹幕词云图B站弹幕提取首先,通过b站网址,查看到《请回答1988》木鱼水心弹幕最多的一集,其URL如下:https://www.bilibili.com/video/BV1g7411d7v7?from=search&seid=4258323448425596581通过b站的如下api接口,获取视频片段信息:https://api.bilibili.com/x/player/pagelist?bvid=BV1g7411d7v7&jsonp=jsonp得到的json形式结果如下:{ "code":0, "message":"0", "ttl":1, "data":[ { "cid":166505309, "page":1, "from":"vupload", &

  • 【leetcode刷题】20T11-最接近的三数之和

    木又同学2020年第11篇解题报告leetcode第16题:最接近的三数之和https://leetcode-cn.com/problems/3sum-closest【题目】给定一个包括n个整数的数组nums和一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组nums=[-1,2,1,-4],和target=1.与target最接近的三个数的和为2.(-1+2+1=2).【思路】暴力解法,三层循环,得到所有的三数相加和,进而得到距离最近三数和,时间复杂度为O(n^3)。可以对数组排序后,对于每个元素,使用两数之和等于target的类似方法得到三个数距离target较近的和。【代码】 python版本classSolution(object): defthreeSumClosest(self,nums,target): """ :typenums:List[int] :typetarget:int :rtype:int """ nums

  • 设计模式之备忘录模式

    定义备忘录模式(MomentoPattern):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。又叫快照模式。备忘录模式是一个比较简单的模式,用于备份对象状态。通常可以与命令模式等一起使用。角色备忘录模式有三个角色:备忘录(Memento)角色,发起人(Originator)角色,负责人(Caretaker)角色。从类图上可以看出,发起人和备忘录角色都有state属性,其实可以把备忘录角色当作发起人角色的属性容器,发起人决定要备份哪些状态,并将状态放到备忘录中,备忘录存储这些状态,并且可以被保存起来,在需要的时候提供给发起人用于恢复到以前。模式说明我们结合命令模式来说明备忘录模式,依然使用浏览器的返回场景来说明。用户在浏览器中点击某个超链接跳到另一个页面,点击返回回到上一个链接页面,我们将点击抽象成命令,将返回抽象成恢复状态,浏览器就是我们的发起人角色。/** *在浏览器中是URL跳转 */ publicinterfaceCommand<T>{ voidexecute(Tparam); voidba

  • 一起学Rust-结构体

    最近一段时间没有坚持写学习记录,总是给自己加班很晚,工作很忙这些理由来自我安慰,回想来属实有些羞愧,总是暗示自己没有时间,但是真正空闲的时间却在我一边安慰自己一边做着一些没啥太大意义的事情的过程中流逝了。所以要想让自己能够有进步,不逼自己一把是不行的。本节学习分为四部分:结构体定义结构体使用元组结构体结构体内存 一、结构体定义学习过C语言的同学都不会陌生,结构体在C中的使用不亚于指针的使用,是非常好用的一种组织不同类型数据的结构,同时又可以集合一些结构体的方法,对于非面向对象的C语言来说,结构体就类似类的作用。 话说回来,Rust中的结构体的意义基本与C中大体相同。下面看一下Rust中如何定义一个普通的结构体:structRect{ width:i32, height:i32, } //也可以定义空的结构体,仅仅用于需要实现结构体方法且不需要成员变量时使用 structEmptyStruct{}复制结构体使用struct关键字定义,后面跟随结构体名称,如果使用IDE,会建议使用大驼峰来命名结构体名称,结构体内成员在定义时需要标明类型。 结构体既可以定义在方法之外(直接定义在最外层),

  • 【带着canvas去流浪(9)】粒子动画

    一.粒子特效粒子特效一般指密集点阵效果,它并不是canvas独有的,这个名词更多出现在AE,cocos2d,Unity相关的教程中,并且提供了方便的编辑插件让使用者可以轻松地做出例如烟火,流星,光晕等等动态变化的效果,看起来非常酷炫。如果你接触过Three.js,会发现三维空间的点阵效果看起来更生动。粒子特效的本质还是一个逐帧动画,所以我们仍然可以使用上一节中提到的动画编程范式来实现它。本节的教程将实现下面这样一个粒子效果:这是笔者第5个版本,看起来还挺像回事的吧,本篇中我们将逐步实现这样一个酷炫的粒子动画,也邀请你一起来看看开发过程中那些各种令人哭笑不得的问号黑人脸时刻。二.开发中遇到的问题2.1卡顿想实现上面的动画,我们首先要做的是构建一个静态的粒子点阵,构建的过程并不复杂,无非就是x和y两个方向上以固定间距来画点。如果我们将单个粒子定义为精灵,而不是粒子群,那么按照上一节的开发范式,我们会在逐帧动画的执行函数step中按照如下的方式来更新粒子点阵的状态:functionstep(){ ... particles.map(particle=>{ particle.update

  • 自动化监控(一)之zabbix安装与配置

    1.1Zabbix简介  Zabbix是一个企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利。官方网站:http://www.zabbix.com官方文档:http://www.zabbix.com/documentation/2.2/manual/。Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置。Zabbix运行条件:Server:ZabbixServer需运行在LAMP(Linux+Apache+Mysql+PHP)环境下,对硬件要求低。Agent:目前已有的agent基本支持市面常见的OS,包含Linux、HPUX、Solaris、Sun、windows。SNMP:支持各类常见的网络设备1.2Zabbix功能  具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库性能监控、FTP等通用协议监控、多种告警方式、详细的报表图表绘制)支持自动发现网络设备和服务器;支持分布式,能集中展示、管理分布式的监控点;扩展性强,server提供通用接口,可以自己开发完善各类监控。1.

  • 腾讯信鸽担任统一推送联盟副理事长:提高用户体验,规范推送服务

    今日,统一推送联盟成立大会在京成功举办,国内安卓生态统一联盟正式成立。腾讯移动推送信鸽(以下简称为信鸽)作为第三方推送行业的杰出代表,出席并发表了主题演讲,同时表达了对统一推送联盟的大力支持与高度期望。在本次联盟成立大会中,信鸽被选举为副理事长单位,信鸽将坚持为开发者提供便捷、可靠的服务,并致力于推动推送行业规范化,持续优化和改善用户体验。信鸽作为业内标杆的第三方推送服务商,一直坚持为开发者提供贴心服务、助力开发者高效运营、解决开发者运营难题的原则。在之前,由于没有统一的推送服务,国内的Android生态一直比较混乱,App自启和应用间的相互唤醒让手机耗电严重,也是造成手机卡顿的重要原因。信鸽在保证Android端服务质量与提高手机用户体验方面也做了很多尝试,包括业界独创的双Service保活策略,既能保证消息稳定到达,又能保证省电省流量,提高到达率,提升点击效果转化。但面对市场上各类的第三方与手机厂商的推送服务,出于优化推送效果的需求,开发者往往会选择多次接入不同的推送渠道,造成手机内多条推送渠道共存的现象。一来给开发者造成了多次接入的工作量,二来多方后台进程并存,也不利于手机性能的

  • CDQ分治学习笔记

    upd:整体二分也顺便学了,比较简单不写。 概述 CDQ分治主要用于解决偏序问题。 通常是先按某一维排序,再递归处理分出来的左子问题对右子问题的答案,最后合并。 经典问题-逆序对 同时也是经典的二维偏序问题。 记属性组\((a,b)\),其中\(a\)表示位置,\(b\)表示值。 那么就是求\(a_i<a_j\)且\(b_i>b_j\)的个数。 然后就是对\(a\)排序,对\(b\)树状数组从前往后扫一遍统计即可。 时间复杂度\(\mathcalO(n\logn)\)。 三维偏序 陌上花开 有\(n\)个元素,第\(i\)个元素有\(a_i,b_i,c_i\)三个属性,设\(f(i)\)表示满足\(a_j\leqa_i\)且\(b_j\leqb_i\)且\(c_j\leqc_i\)且\(j\nei\)的\(j\)的数量。 对于\(d\in[0,n)\),求\(f(i)=d\)的数量。 \(1\leqn\leq10^5\),\(1\leqa_i,b_i,c_i\leqk\leq2\times10^5\)。 先按\(a\)维排序,再将左、右子区间按\(b\)维排序。 虽然现在\

  • C# 常用函数和方法集

    1、DateTime数字型  System.DateTimecurrentTime=newSystem.DateTime();复制   1.1取当前年月日时分秒  currentTime=System.DateTime.Now;复制   1.2取当前年  int年=currentTime.Year;复制   1.3取当前月  int月=currentTime.Month;复制   1.4取当前日  int日=currentTime.Day;复制   1.5取当前时  int时=currentTime.Hour;复制   1.6取当前分  int分=currentTime.Minute;复制   1.7取当前秒  int秒=currentTime.Second;复制   1.8取当前毫秒  int毫秒=currentTime.Millisecond; (变量可用中文)复制   1.9取中文日期显示——年月日时分  stringstrY=current

  • YYHSOI模拟赛题解(T2零件加工)

    题目描述 工匠小K最近有n个零件需要加工。每个零件都需要ti天的时间来完成,每个零件每延迟一天加工都要缴纳一定的罚金si。延迟的天数为从今天算起到该工作开始的那天,第一个零件加工没有罚金。现在小K想知道怎样安排加工顺序可以使他要交的罚金最少,最少是多少。 这个数可能会很大,请输出这个数对m取模后的结果。   输入 输入文件名为process.in。 输入第一行为一个整数n,表示需要加工的零件总数。 第二行为一个整数m,表示答案要对m取模。 第3~n+2行,每行两个整数ti和si。   输出 输出文件名为process.out。 输出仅一行,一个整数,表示小K最少要缴纳的罚金对m取模的结果。   样例输入 process.in2100233332process.out4process.in410033642285process.out81 样例输出 【输入输出样例解释1】先加工第一个,需要2天时间,再加工第二个。需要缴纳的罚金为2×2=4。【输入输出样例解释2】如果按照1→2→3→4的顺序进行加工,需要缴纳的罚金为0×3+3×4+(3+6)×2+

  • 【个人笔记】Ubuntu 16.04 LTS 安装 Leanote 二进制版命令记录

    此命令根据《Leanote二进制版详细安装教程MacandLinux》操作记录而得。 参考链接:https://github.com/leanote/leanote/wiki/Leanote-二进制版详细安装教程----Mac-and-Linux   0、创建mongodb及leanote目录。 mkdir/home/xiaguliuxiang/mongodb mkdir/home/xiaguliuxiang/mongodb/conf mkdir/home/xiaguliuxiang/mongodb/data mkdir/home/xiaguliuxiang/mongodb/log复制   1、下载leanote二进制版。 上传文件:/home/xiaguliuxiang:leanote-linux-amd64-v2.5.bin.tar.gz cd/home/xiaguliuxiang tar-zxvfleanote-linux-amd64-v2.5.bin.tar.gz复制    2、安装mongodb。 上传文件: /hom

  • 集体智慧编程 - 优化

    优化的核心是成本函数的建立,后面的优化函数,无论是何种方法,都是对题解的适当修改,以求使成本函数的值最小,只是修改的方式不同罢了。

  • 尚医通项目总结(一)----------微服务、Spring Boot和Spring Cloud的区别

      跟着尚硅谷做了尚医通项目来学习,原本以为知识点并不是很多,面试后发现如果深挖,有很多需要学习理解的点,此系列博客记录项目中涉及的知识点,也希望能帮助到做了同一个项目的同学。博客中的知识点都是自己搜集资料总结,如有错误欢迎指出!   此项目使用SpringCloud技术栈,各个微服务站点基于SpringBoot构建。要了解这个项目,首先就要了解什么是微服务。   1.微服务   微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的API进行通信的小型独立服务组成。微服务架构使得应用程序更易于扩展和更快地开发。使用微服务架构可以将应用程序构建为独立的组件,并将每个应用程序进行作为一项服务运行。在对服务进行更新的时候不向整体式架构那样复杂,只需要针对各项服务进行更新、部署和扩展即可。简单来讲,微服务将一个复杂的应用拆分成多个独立自治的服务,服务和服务之间通过松耦合的形式交互。   此处出现第一个面试问题:   你的项目微服务是怎么拆分的?   这个项目的微服务拆分首先是根据业务功能进行的拆分,比如用户服务、医院服务、订单服务这几个微服务,都是按照功能维度对微服务进行拆分的。考虑

  • Redis 常用命令学习二:字符串类型命令

    1.赋值与取值命令 127.0.0.1:6379>setfoohelloredis OK 127.0.0.1:6379>getfoo "helloredis" 127.0.0.1:6379>getbar (nil) 复制 2.数字键值递增 127.0.0.1:6379>setint3 OK 127.0.0.1:6379>incrint (integer)4 127.0.0.1:6379>getint "4" 复制 3.增加指定的整数 127.0.0.1:6379>setint3 OK 127.0.0.1:6379>incrint (integer)4 127.0.0.1:6379>getint "4" 复制 4.减少指定的整数 127.0.0.1:6379>DECRBYint12 (integer)-2 127.0.0.1:6379>getint "-2" 复制 5.向尾部追加值 127.0.0.1:6379>setredishello OK 127.0.0.1:6379>appendredis'world'

  • Ubuntu16.04下安装opengrok

    Ubuntu16.04下安装opengrok 最好的文档参考如下网页地址:   https://blog.csdn.net/wd229047557/article/details/94571186?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase   https://blog.csdn.net/luohuiwu/article/details/82382701?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-6.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-

  • C# Sqlite事务

    在C#中执行Sqlite数据库事务有两种方式:Sql代码和C#代码 1.Sql代码: BEGIN… COMMIT /ROLLBACK 2.C#代码: using(SQLiteConnectionconn=SqliteHelper.GetSQLiteConnection()) { DbTransactiontrans=conn.BeginTransaction(); try { //Sql语句 trans.Commit();//提交事务 } catch(Exceptione) { trans.Rollback();//回滚事务 } }复制 SqliteHelper是一个访问Sqlite数据库的工具类,在我的《c#Sqlite帮助类》中有介绍

  • 代码生成技术研究

    有时为了省时省力,我们会使用代码生成技术,生成相应的代码。代码生成的场景一般需求比较简单,固定。在java开发中, 我们遇到了两种比较典型的代码生成场景,一种是和数据库,sql相关的。一直重视和接口,rpc,webservice相关的 数据库相关代码的生成 比如我们常用的mybatis中,就有一个MyBatisGenerator,用于生成相应的代码。 它可以根据Table名生成dto,entity,controller等代码。同时,在mybatisPlus中我们大量使用了Wrapper来代替了查询语句,其背后也是 自动sql语句生成技术。基于这种思想,我们可以生成我们自己的sql语句。 比如,sql语句: Stringsql="updatesany_heavy_energy.mm_faultsetoccurrence_time=\"v1\"wherecode=\"v2\";"; 复制   代码生成的应用范围还比较小,现在的低代码开发,就是代码生成技术的一种集大成者。 接口相关代码的生成 这主要在一些网络接口中使用,比如webservice,rpc技术等。 参考博客: 日进有功

  • MongoDB学习记录(一)

    【MongoDb的特性】1.高性能:对嵌入式数据模型的支持,减少了数据库系统的I/O活动;2.丰富的查询语句以及索引:MongoDb支持丰富的查询语句来支持读写操作(CURD)以及数据聚合、文本搜索和地理空间查询。 常见的索引类型:   单列、多列索引;   多key索引;   哈希索引;   地理索引;   文本索引;   常见的索引属性:   唯一索引;   TTL索引;   部分索引;   稀疏索引3.高可用性和数据的持久化   MongoDb的复制工具称为副本集:自动故障转移和数据冗余4.MongoDB提供水平可伸缩性作为其核心功能的一部分5.多存储引擎支持 【MongoDb体系结构】 【逻辑结构】:文档、集合、数据库三层 1.一个mongoDB实例中允许创建多个数据库; 2.一个数据库中创建多个集合;(集合相当于关系型数据库中的表) 3.一个集合则是由若干个文档构成(文档相当于关系型数据库的行,是MongoDB中数据的基本单元) 【MongoDB与SQL的结构对比】    SQL      MongoDB   database  

相关推荐

推荐阅读