二十年来,全球的IT人才市场一直表现缺乏,特别是某类编程语言或某种开发框架或工具的工程师的空缺。比如经常有正在寻找高级Java工程师,初级Python工程师等职位需求。


当今,没有哪个编程语言是最重要的,开发者也不能仅仅掌握一个编程语言或开发工具。


在本篇文章里,我和你一起探究人才的原型,解释当前软件工程如此复杂的原因,软件工程师具备非技术的特性对于成功的职业生涯规划,或者对软件项目交付的成功是否可行。


我将开发者的职业生涯喻为高速公路,希望我们要从一个不同角度来看职业和职位描述。


概述


你是现代软件开发者吗?_java


我参与过一些软件公司的技术面试过程,招聘专员和人力资源经理常问我从技术人员的角度对技术人员的看法。


大家提到的问题列表大概如下:


1、你如何为技术人员分类?

2、根据简历筛选创建什么样的用户画像?

3、如何将职位描述与实际需求的简历相匹配?

4、除了回答传统的低级技术问题外,你还在找什么?


为此,我制作了一个PPT来回顾人才的原型,并引入个人高速公路来比喻在初级细节中的多功能工程师。


人才原型


1)专家


你是现代软件开发者吗?_java_02


专家是在特定领域具有特长或专业知识的人。特别精通某一学科或某项技艺的有较高造诣的专业人士。他们的特点是:


1)深厚的专业技能与造诣

2)在特定专业领域

3)经过同行的高度认可

4)探求未知的技术领域


职位例子:


1)系统工程师。如Java核心开发、驱动程序、嵌入式开发等;

2)DBA

3)性能测试与调优

4)专用工具、框架和数据库。比如SAP Hybris,HP Verica,Hadoop分布式(Cloudera,MapR,Hortonworks),ETL工具,Privotal技术栈等。


职位细节


1)公司要付出较高工资

2)对于公司来讲风险提高。如果专家对工作的兴趣不够高,很快他们就会觉得无聊,这是因为他们会把所有的鸡蛋放在同一个篮子里

3)不太容易说服加入新的公司

4)通常情况要求很具体的人



通才




通才是一个知识面广的人。他们这些人与专家的特征正好相反。


通才的特点是:


1)知识面非常宽

2)较浅的技术、有一定技巧

3)根据自己具备回答的知识和经验能快速回复

4)知识深度有限,缺乏信心


职位例子


1)从青年开始的职业生涯

2)销售型和参与者(从软件工程角度看)

3)缺乏经验的管理人员

4)招聘者



T型人才




“T形”是个人对技能深度和广度掌握的比喻。


T形人的特征:


1)至少对一个领域(即编程语言)有深入的了解,并可以成为问题解决者。

2)掌握众多领域以及复杂技术,如存储、前端、分布式、大数据等,并知道如何在该领域进行清晰有效之沟通。

3)拥有跨界能力


T型工程师是跨部门团队成员的理想人选。为此,T型工程师成为流行的主要原因是适合敏捷开发,它侧重于具有跨职能成员的自组织团队。





另一个重要观点是,T型工程师的出现可以有效避免单点故障,当有人离开项目或公司时,项目就出现停顿等问题,这对团队来说是个不好的现象。





我个人最喜欢的是人才关注跨界的能力,在团队中具有高效工作能力。例如:


1)沟通

2)批判性思维

3)知识、流程与最佳工程实践



复合性人才




一个人既然可以成为专家,也能轻松转变为另一个角色。


与其他人才原型不同的是,一个复合人才拥有深厚的技能也可以担当更宽广的角色。


例子:


1)经验丰富的高级工程师

2)技术总监和架构师

3)工程交付负责人


专家、通才与复合型人才


我们通过技能的深度,角色和任务的范围来比较上面提到的人才原型:





全栈工程师




全栈工程师能够在他们擅长的技术栈中执行任何级别的工作。有一些人倾向于忘记整个技术栈是个例。每位全栈工程师都会非常依赖实际的技术栈。


技术栈相关实例:


1)LAMP/LNMP,即Linux,Apache/Nginx,MySQL/MariaDB,PHP

2)MEAN,即MondoDB,ExpressJS,AngularJS,NodeJS

3)微服务,容器,REST,JS


全栈工程师的特点:


1)非常依赖某个技术栈

2)不会轻易更改技术栈

3)适合当优秀的自由职业者

4)可以为初创企业提供关键的解决方案


能力矩阵


通过能力矩阵可以很容易体现出现有团队成员是否能够执行与特定项目的任务,如果只有单一技能的专家很可能会出点单点故障。


根据团队能力,能力矩阵设计会有所不同。


一般情况下,能力矩阵的两个轴,一支是团队成员,另一支是项目中所用到的技术。接下来根据规模(根本不清晰,可以在某种程度上执行某项任务,或者我就是这方面的专家,或者简单的从1到5的规模),团队成员都可以评估自己,每位成员都可以看到它。




设计一个能力矩阵可以帮助决策者找到团队能力差距,可以帮且管理者做出更明智决策,比如在特定技术的工程师在度假时出现重叠时的情况,可以帮助你立即作出决定,以事先雇佣缺少特定技能的专家。



高速公路实例



高速公路,我将它比作能力统一的专家,多面手、T型人才,复合型人才等。与我们每天过的适应型的生活一样,当它由我们充分决定时,我们可以投入精力、时间、金钱,也可以投资在房产、汽车、昂贵的衣物,或者投入更多的时间在事业中,一些课程与认证可以帮我们获得晋升,或者与家人、朋友共度时光。


我们的生活是一个弹性适应的过程,没有正确且唯一的答案适合每个人。



你是现代软件开发者吗?_java_03



为此,我也用类似的方式来看待职业生涯。我们会有很多条能走的路线,每条道路都有不同的车速限制,工作量、障碍与优先级别。另外,我们也可以在高速公路上添加更多车道,或者删除一些对我们来说并不重要的车道。


通过投资我们生活中最宝贵的东西:时间。这是我们唯一的选择。


在我看来,软件工程师有几条相当重要的路。来看下图:


你是现代软件开发者吗?_java_04



我非常喜欢这种可视化图形,可以轻松感受并衡量每个车道的进度。实际上,该列表可根据所需的颗粒度进行扩展:


1)开发语言

2)领域

3)架构

4)核心技术

5)框架

6)数据格式

7)缓存

8)搜索引擎

9)方法

10)工程实践

11)测试

12)DevOps

13)日常工具

14)销售技巧

15)演示技术

16)沟通技巧

17)培训

18)认证


我们来分别看一下,以便能够更好的理解。


编程语言



你是现代软件开发者吗?_java_05



编程语言可以用不同的维度来划分,例如静态与动态,强类型或弱类型语言。如果你已精通了一种编程语言,可以看看其他特征的人,可以拓宽视野,帮助我们将编程语言看作是一种有利有弊的工具。


如果你并不想更改主编程语言,那么查看其未来版本,熟悉新增功能,API等也是有意义的。


领域


产品可以分属不同的领域,例如:


社会

广告

电子商务

卫生与保健

公用事业

电信

金融

博彩


我们根据以上领域,可以投入时间来更好的理解自己喜欢的且正在工作的领域,并因此成为该领域中更有价值的专家。


比如你从事的是数字广告领域,可能对点击数,展示数,CPI,每千次展示费用,CPS等有兴趣。如果你对这个领域厌倦了,可以尝试其它方向,给自己的职业生涯和职业道路增添不同的价值,也可能帮助自己找到最有激情的领域。


架构


你是现代软件开发者吗?_java_06


我们的高速公路上另一条车道与架构和非功能性要求有关。某一天,你可能决定将时间投入到解决任何类型的可扩展性问题的常见实践中,看看在某些现代和流行产品实现了高可用性,用什么解决方案来解决高负载、大并发等。


假如你是设计模式迷,那么你可以先看经典模式,然后切换为现代模式,回顾旧式企业模式,或者阅读关于集成模式的书籍。


如果你喜欢互联网,可以学习关于SOA还是微服务,如果喜欢大数据,那么kappa体系架构也许让你更有兴趣。


另外,努力花时间审查产品架构也非常有价值。


焦点技术


作为另一种选择,现代软件工程师可以选择任何技术焦点并深入研究相关技术和解决方案。下面提供的表格可以让你了解热点技术的内容。该表格你也可以根据自己的偏好来添加和修改选项。


你是现代软件开发者吗?_java_07


编程语言的特定技术


对于每个平台,都有一组特定的框架、库与工具,值得我们花时间研究这些框架。


存储


如果所有解决方案都由关系型数据库(Postgres,MySQL,Oracle等)提供支持,那么浏览学习NoSQL解决方案(如Cassandra,MongoDB,HBase,Riak,Redis等),甚至还有NewSQL(VoltDB,Gemfire等)。这些资源对你来说是一个很好的起点。


发布、DevOps与Cadence


客户希望软件更频繁地更新——持续集成、持续交付、持续部署。比如你是否愿意为自己的宠物项目创建一个持续交付通道,尝试通过Docker容器化,通过Kuberneters或Docker Swarm进行编排。


这些东西与其说适用于DevOps,对于软件开发工程师来说更为适合,就像玩具一样。


请认真思考你的路


你是现代软件开发者吗?_java_08


我们还可以讨论更细节的内容,但是希望能明白我的觉察。你的软件工程路线可以比作高速公路。它可以有很多赛道,决定投入多少时间和精力由自己决定。


当你在生活或职业生涯方式的某一时刻发生少许倦怠,或者你在压力下等等情况。那么,在不是做出任何激进的决定(比如当一名总监或辞掉工作),也许这些是一个契机,把我们的注意力从一个车道变换到另一个赛道,并由此开始成功。