谈谈 T 型人才

 

昨天的图片发模糊了,正好我把这个话题展开聊一聊吧。这个话题是关于复合型人才的,我把它称作 T 型人才。

「全栈」工程师

前一段时间,「全栈」工程师的概念很火,不过大多数时候,「全栈」工程师指的是一个人同时写 Web 前端和后端,顶多加上一些运维工作。通常情况下,我很少见到一个人能够同时写 Web 前端 + 后端 +iOS 端 +Android 端。

在猿题库(我们现在改名叫猿辅导了)创业初期,我曾经试图同时写 iOS 和服务器端,但是我很快就放弃了。因为当时服务器端的代码量还是很大,同时有好几个人在编写。有些时候我需要加逻辑时,会涉及到他们的代码修改,这个时候我就会需要花费额外的精力来看懂他们原来的逻辑。

当时正值创业初期,我们的 Code Review 并不严格,代码的相关设计文档也不多,我只能通过阅读源码来跟上另外几个服务器端开发同学的逻辑。很快我就放弃了,因为在创业阶段,效率是第一位的,同时做 iOS 和 服务器端,使得我在服务器端不够专注,效率变得低下。

从那之后,我就意识到,「全栈」工程师可能最适合的场景就是 Web 前端 + 后端的偏前端的逻辑。因为那个场景下,前端工程师可以省掉沟通接口的时间,也可以自己统一前后端的模版,甚至他可以尝试统一语言,同时用 JavaScript 写前后端(在后端使用 nodejs)。

而在别的职位上,是很不适合全栈的,因为这样工作产出会下降。

T 型人才

那我为什么又想聊 T 型人才呢?是因为我觉得 T 型人才和全栈不一样。在我看来,T 型人才有一门自己擅长和精通的语言,同时又有足够宽的视野,使得他在合作的时候,能够更多地站在对方的立场上考虑问题。

打个比方,做过服务器端开发的同学,再转而做客户端开发,就会更加注意 Restful 接口的设计合理性。相互之间协商接口时,知道什么样的方式服务器端好实现,什么样的方式不好实现,然后定出来的接口就会让对方非常舒适。

与此同时,T 型人才对于自己理解和学习新东西,也是有很大帮助的。我之前做过 Java 语言的服务器端开发和 JavaScript 语言的前端开发,之后才转做 iOS 开发。各种语言和开发环境接触多了就发现:其实很多概念都是相通的。我想我之所以当时学 iOS 开发上手那么快,也是由于在别的语言上有积累。

其实对于移动开发来说,iOS 和 Android 也有很多相同的概念,比如 iOS 的 UIViewController 和 Android 的 Activity。当然,它们也有很多不同的技术细节,比如对界面排版设计,iOS 因为设备屏幕单一,所以刚开始选择了简单的绝对定位,后面选择了 size class 的方式。而 Android 因为屏幕分裂严重,所以选择了更加流式的排版设计。

iOS 因为追求界面的流畅和性能,选择了引用计数这种相对麻烦的内存管理方式,而 Android 因为需要借力 Java 语言本身的生态和苹果竞争,所以采用了垃圾回收这种会带来潜在卡顿风险的内存管理方式。
每年的 Google IO 大会出现的新技术,并不比 WWDC 逊色。今年 iOS 10 的一些改进,也看到了不少 Android 的影子。

如何成为 T 型人才

那么如何成为 T 型人才呢?我们老大郭常圳想了一个办法:轮岗。轮岗的意思是,当你成为某一方面的专家后,跳出自己的舒适区,转而到一个新的技术领域从头学起。

在我们公司,很多早期员工都经历过轮岗。比如我曾经从服务器端转到前端和 iOS 端,也是轮岗这个激励带动的。yangyz 从服务器端转到 Android,xuhf 从 Android 转到服务器端,zhangyc 从 Web 前端转到后端。每一个轮岗工作,都是对我们极大的挑战,但是让我们都成长为 T 型人才。

但是,轮岗的意思绝不是做一个技术方向「三心二意」,每一次转换技术方向,都应该是对前一个技术方向至少做到熟练掌握的程度才行,而我自己觉得,不经过一到两年的实践,很难称作熟练掌握。所以,轮岗的行为应该是低频的,而且是面向那些最优秀的开发者的。

这一点有点像大学的换专业,在我们学校,大一的学生可以在一学期后申请换专业,但是前提是这个同学在愿专业成绩达到前 10%。

换专业和换技术方向一样,机会只会给做得最好的人,公司不会因为一个人在 iOS 开发上做得不好,就把他轮换到别的开发岗位。

谈谈 T 型人才的更多相关文章

  1. 人才-T型人才:百科

    ylbtech-人才-T型人才:百科 T型人才是指按知识结构区分出来的一种新型人才类型.用字母“T”来表示他们的知识结构特点.“—”表示有广博的知识面,“|”表示知识的深度.两者的结合,既有较深的专业 ...

  2. C加加学习之路 2——两招让你成为牛X的T型人才

    有个小伙伴在微信上问我: 我刚工作半年,有时候对于Java的发展方向有点迷茫,Java的范围是在是太广了,我有时候会不知道从哪开始入手,我想问一下,您有什么好的建议吗? 我理解这位朋友的问题是:工作中 ...

  3. 第一周——不同java 的发展史你,注定成为不了领袖型人才

     James Gosling  1991年,James 高斯林在Sun公司的工程师小组想要设计这样一种小型计算机语言,该语言主要用于电视盒的消费类电子产品上.另外,由于不同的厂商选择不同的CPU和操作 ...

  4. 谈谈Web前端工程师的定位

    原文地址:http://www.360doc.com/content/10/0708/17/1277406_37692580.shtml 2010-07-08  锋子chans   阅 1116  转 ...

  5. T型架构观点学习

    一.成为T型人才 眼界格局思维要尽可能的开阔,并不断横向开阔,专业能力要尽可能专注,并且纵向上不断加深: 互联网的快速迭代开发和扁平化管理,使单纯管理人才的作用越来越小,除了分配任务和项目管理,在其他 ...

  6. T型知识实践结构的力量(转载)

    最近在做的一些新的事情,这其中获得的一些新的思考. T型的知识积累,深度的挖掘可以通过"举一反三"的应用在广度上,广度可以通过"交叉验证"加强我们的认识,可以说 ...

  7. 推荐一本写给IT项目经理的好书

    原文地址:http://www.cnblogs.com/cbook/archive/2011/01/19/1939060.html (防止原文作者删除.只能拷贝一份了) 推荐一本写给IT项目经理的好书 ...

  8. 如何利用 LTE/4G 伪基站+GSM 中间人攻击攻破所有短信验证

    这次公开课请来的嘉宾对自己的简介是: 连续创业失败的创业导师:伪天使投资人:某非知名私立大学创办人兼校长:业余时间在本校通信安全实验室打杂. 自从他在黑客大会上演讲<伪基站高级利用技术——彻底攻 ...

  9. 干货|什么是特性团队/功能团队(FeatureTeam)

    最近一直在思考如何做团队组织能力建设和如何进行决策.执行产品研发策略.因为自己一直在研发效能领域,所以来谈谈什么是特性团队(FeatureTeam), 怎么创建特性团队以及在日常工作中如何结合 Scr ...

随机推荐

  1. ——CentOS 7 安装SQL Server2019

    环境准备  不废话,先把研究环境搭建起来.由于某些原因(晚点再说),本系列首先使用CentOS 7作为操作系统.官方指引中支持的Linux平台及文件系统中并没有指出CentOS,但是作为与Red Ha ...

  2. bzoj 3143 [Hnoi2013]游走 期望dp+高斯消元

    [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3394  Solved: 1493[Submit][Status][Disc ...

  3. python 面向对象与类的基本知识

    一  什么是面向对象,面向对象与类的关系. 面向对象的程序设计是用来解决扩展性. 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象 ...

  4. c++函数学习-关于c++函数的林林总总

    本文是我在学习c++过程中的一些思考和总结,主要是c++中关于函数的林林总总.欢迎大家批评和指正,共同学习. os version: ubuntu 12.04 LTS gcc version: gcc ...

  5. javaweb学习总结(十一)——使用Cookie进行会话管理(转)

    一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学曾 ...

  6. Java-Pi的几种实现

    1.无穷级数计算 p = 1 - 1/3 + 1/5 -1/7+..... π=4p 2.使用 Nilakantha 级数 π = 3 + 4/(2*3*4) - 4/(4*5*6) + 4/(6*7 ...

  7. 23深入理解C指针之---数组的基础

    数组是c语言内置的数据结构,数组有一维数组.二维数组和多维数组.使用数组传递数组时,必须传入数组的大小. 一.数组的特征:阐明数组的特点 1.数组要素: 1).数组类型:数组中存储的数据的类型: 2) ...

  8. 第0章Linux环境到内核基础知识

    #include<stdio.h> int main(void) { printf("hello world\n"); return 0; } gcc -g -wall ...

  9. 关于nginx所遇问题

    1. 如果出现 nginx: [error] invalid PID number “” in “/usr/local/var/run/nginx/nginx.pid” 错误重新加载配置文件 /usr ...

  10. Tomcat是怎么工作的(1) -- 开篇

    这是一个系列文章的第一篇. 标题还是费了点脑子才确定的,起什么名字比较好呢.Tomcat工作原理?深入浅出Tomcat运行机制?从零开始研究Tomcat?Tomcat是怎么运行起来的?Tomcat是如 ...