自从上一家公司之后,我很少有机会去带一些新人(公司一般都招一些技术独立性的工程师),特别是经验不是特别多的新小伙伴。在如今管理扁平化的公司,我正逐渐搭建自己的小team,并试图让团队成员快速融入并成长。整理了一下最近实践的经验,我采用的方式如下:

1.文档化

其实说这个文档化,相当一部分人是反感或者不屑的,每个人对这个项目或者一系列接口都是希望有详尽的文档,而当需要自己去写的时候就显得十分抗拒。但是当项目成员逐渐增加,当项目代码量和业务复杂度规模逐渐壮大,如果还是没有一份靠谱的文档来支撑,我想新来的研发人员应该会看着庞然大物一般的代码而笑容逐渐消失。

文档的好处,不必说能更快让成员有依据的了解代码逻辑,也是对写文档的人一次归纳总结的提升。当然文档也不局限于项目整理或者业务逻辑整理,也可以是一些工作流、代码规范相关的约束性的文档,这对整个项目的规范化和工作协同的一致性有着非常重要的影响。文档的形式也不仅局限于文字,也可以是图表,甚至视频。

我开始的时候还是采用尽可能文档化来让新成员更快了解现有项目,尽量做到可以通过文档独立(脱离人工引导)去熟悉项目的代码结构,敲黑板,划重点,并且留出一些预留的期望任务。对于不同的人可以从同一份文档理解不同层次的要求。对自己无要求或者要求不高的,我只能要求他能顺利fix bug,不会因为改动而影响到相关的功能或者代码块。对于一些有想法和能力的,我会提一些新的要求,比如去提前熟悉一些功能,试着去优化原有逻辑,甚至改造底层框架。

不同的人,不同的性格,应该用不同的方式去沟通,给予的预设期望也是不同的。不以物喜不以己悲,淡然地面对不同的人来人往。

我觉得最好看出一个人是否对代码严谨并有编码能力,就是从现有项目中发现不足且提出自己的想法。例如,我让w同学在熟悉项目后,试着去增加中间件支持到框架流程中(之前老项目缺失对中间件良好导入的支持)。也许有人会说,我平时根本就用不着去关心已经搭建好的框架,我只需要天天curd,天天copy paste之前的业务再改改,天天能跑通就得了。这可能就是有的人工作了三年还是用一年的经验去做事的原因吧。

2.代码规范

其实对于一些非静态类的自由度高的编程语言,比如:javascript、php等,由于语言本身的自由度和开发人员的水平不同,代码量和协同开发人数一增加,代码风格就很难统一,各种各样的写法会逐步蔓延到整个项目代码逻辑中。初期不管,可能只是辣眼睛,后期不管可能拖垮整个相关功能甚至项目。所以在早期的时候就要尽量规范代码,一起协商出一个通用性的代码规范,统一所有人的代码风格。

代码规范大致分成两大部分,第一部分是代码格式,第二部分是编程规范。代码格式php方面有code sniffer,nodejs则可以用eslint去做强制规范。至于编程规范可以根据项目之前的风格和一些通用性的规则来约束,比如变量名,函数名的可读性,通用功能的封装,面向对象的规范等等。

所谓:没有规矩,不成方圆。统一的好处在于工程师们能更好地理解代码,提高工作效率,减少不必要的误解。

3.规范工作习惯

这个内容认真讲起来几乎和“怎么成为一个优秀的工程师”一样宽泛,我这里主要是讲的解决问题和处理问题方式。比如我们往往在开发的过程中会遇到一些让人长时间阻塞的bug或者业务逻辑,我们是否总是选择死磕到底,耗尽deadline也没有找到确切的解决方案?

我个人的建议是给自己解决一个问题设置一个deadline,可以是30分钟,也可以是一个小时,由自己来定。一旦超过了这个期限,那么就必须果断去寻求帮助。有相当一部分工程师会觉得向他人寻求帮助是很羞耻的一件事,然而这通常只是face的问题,寻求外部资源和帮助是一个非常高效的解决途径。

3.属于自己的团队反馈

做产品或者运营的人是最能理解反馈的重要,同样的团队建设里面队员们的反馈也是不断改进的源头。我采用的是不定期地沟通,随时跟进各个小伙伴的进度,遇到怎样的问题,是否需要外部的支持。也会相互做一些头脑风暴,或者结对编程来解决一些单人局限思维的问题。在每周五也会有小组范围的review会,用来对本周或近阶段来总结反思。

人和代码一样,如果不定时地去review,也会在不知不觉地滋生一些bad smell。比如某小伙伴状态不太up,是否是给他/她分配的任务过于繁杂,是否是技术方面有倦怠感。在能力和资源所及的范围内尽可能让每个人找到自己所喜欢的事物,能在繁重的工作之余,也能有一些成长和收获。

目前我还在做更多的尝试,利用敏捷开发的一些原理,慢慢让自己和小组一起成长,变得更优秀。

尝试create tech team的更多相关文章

  1. Create a Team in RHEL7

    SOLUTION VERIFIED September 13 2016 KB2620131 Environment Red Hat Enterprise Linux 7 NetworkManager ...

  2. Configure a VLAN on top of a team with NetworkManager (nmcli) in RHEL7

    SOLUTION VERIFIED September 13 2016 KB1248793 Environment Red Hat Enterprise Linux 7 NetworkManager ...

  3. Configure bridge on a team interface using NetworkManager in RHEL 7

    SOLUTION IN PROGRESS February 29 2016 KB2181361 environment Red Hat Enterprise Linux 7 Teaming,Bridg ...

  4. 黑客讲述渗透Hacking Team全过程(详细解说)

    近期,黑客Phineas Fisher在pastebin.com上讲述了入侵Hacking Team的过程,以下为其讲述的原文情况,文中附带有相关文档.工具及网站的链接,请在安全环境下进行打开,并合理 ...

  5. Integrate SharePoint 2013 with Team Foundation Server 2012

    Now that SharePoint 2013 is out I want to make sure that I can integrate SharePoint 2013 with Team F ...

  6. how to configure team on liunx(RHEL7.x/Centos7.x)

    #install team sofeware yum install teamd -y #check team configuration nmcli con show #Next we create ...

  7. Codeforces Round #544 (Div. 3) Editorial C. Balanced Team

    http://codeforces.com/contest/1133/problem/Ctime limit per test 2 secondsmemory limit per test 256 m ...

  8. Azure Devops Create Project TF400711问题分析解决

    前几天,团队使用Azure Devops创建团队项目出了一个奇怪的错误: TF400797: 作业扩展具有一个未处理的错误: Microsoft.TeamFoundation.Framework.Se ...

  9. 【转】Android NFC学习笔记

    一:NFC的tag分发系统 如果想让android设备感应到NFC标签,你要保证两点 1:屏幕没有锁住 2:NFC功能已经在设置中打开 当系统检测到一个NFC标签的时候,他会自动去寻找最合适的acti ...

随机推荐

  1. myeclipse配置tomcat后,无法正常使用的问题

    如图所示:一定要设置为Enable.否则部署tomcat时,没有tomcat8.0

  2. 加密解密Url字符串,C#对Url进行处理,传递Url

    string _QueryStringKey = "abcdefgh"; //URL传输参数加密Key /// 加密URL传输的字符串        public string E ...

  3. Hadoop基础(二)

    HDFS 读写流程 我们知道在HDFS中我们的文件按数据块进行存储,那么当我们写入或者读取一个文件的时候HDFS到底进行了哪些操作呢? HDFS 写流程 如上图所示,假如我们有一个四个节点的集群,并且 ...

  4. 线性回归的Cost function实现

    此处使用Octave来实现 线性方程的代价函数: 代价函数: X 是测试值,假设用矩阵表示为         为了方便用矩阵计算我们把X加一列 1 :                 同时  那么h( ...

  5. UDP网络程序实例

    根据前面所讲的网络编程的基础知识,以及UDP网络编程的特点,下面创建一个广播数据报程序.广播数据报是一种较新的技术,类似于电台广播,广播电台需要在指定的波段和频率上广播信息,收听者也要将收音机调到指定 ...

  6. 在centOS环境搭建airtest时遇到 Xlib.error.DisplayNameError: Bad display name "" 和Xlib.error.XauthError异常

    现在的问题 (airtestVenv) [root@67 airtest_selenium]# python3 proxy.pyTraceback (most recent call last):  ...

  7. transform: scale(x,y)

    作用: 1)缩放 2)反转 水平翻转:transform: scale(-1,1); 垂直翻转:transform: scale(1,-1); 水平垂直翻转: transform: scale(-1, ...

  8. nginx+tomcat实现负载均衡集群

    一台tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独应用于生产环境下 所以需要一套可靠的解决方案来完善web站点架构 而Nginx只能访问静态页面,如果需要动态需要 ...

  9. Burnside引理和polay计数 poj2409 Let it Bead

    题目描述 "Let it Bead" company is located upstairs at 700 Cannery Row in Monterey, CA. As you ...

  10. hdu 4870

    Rating Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...