为啥突然想这个问题?
这阵子跟技术人交流,突然引出了一个问题
对个人来说,究竟是专才好,还是通才好。当然就技术开发这个领域来讲。
首先列一下名词解释
专才:就是指专注在某个领域/语言/平台/职能上的开发者。
通才:自然不用说,就是大家最喜欢的全栈。当然全能的人是不存在的,所以说局部全栈会比较合理一点。比方Web全栈,就是包括了前端开发,后端开发,服务器运维,数据库,架构等
然后当然还有APP全栈等。
谁对谁错?
正方的角度是:实际工作中的事实是经常需要引用多种多样的语言或者技术,也有很多中间件或者第三方组件,需要一个人身兼数职。
当然你也可以说我需要用什么语言的时候,就招一个这方面的专业人士,但是大多数情况下没有这么奢侈,毕竟这个中间件可能只有1%的时间会用到,那么另外99%的时间难道闲置这个人么?或者非要想个项目把这个人力利用起来,那这个项目也够鸡肋了。
所以团队内经常会有这类局部全栈的开发人员。
但是站在反方的角度上思考:
人的精力是有限的,只精通1门语言有点局限性,精通两门问题不大,时间充裕的,精通3门也OK。但是如果你非要精通5门或者10门语言,而且还要应用到实际工作中,那么精力分散之后那些隐藏在语言深处的坑,你还有能力找出来么?
再从招聘的角度来谈:
全栈型的人才很有用,面对不同的业务环境,都能找到合适的解决方案,并且开展工作。
专业型人才很有价值,在屠龙这个任务上,一把屠龙宝刀跟瑞士军刀做甚比较。
所以就应用场景来讲,各有千秋。
再深化一点
“语言只是工具,重要的是思路” 批判专才的可能要站出来这样说,但我们这里举的语言例子,只是说为了方便讨论,因为专业型人才看你专业的方向而定的,如果你是专业的架构师,所谓“思路”就是你的专业方向,那么哪一种语言并没什么特别。
如果你是算法工程师,那么用不用编程语言也没区别。伪代码照样玩的溜。
那另外一种情况是,其实所谓全栈也不需要去深入了解到语言的细节之处,只要学到能用的情况就行,就能应付很多种情况了,而且在学精通一门语言之后,再去学其他语言其实也挺快的,大致相同,细节之处花点时间也能足够。
但是对个人来说呢?
应该以什么标准来衡量自己的进取方向?
首先要问自己一个问题,自己的目标是什么?
是想出来单飞,创业做一番事业,还是想深入某个技术,做这方面的专家?
又或者只是想用自己喜欢的技术开发一些有趣的程序?
然后再问另外一个问题,这个目标上这两种人才,你觉得最有优势的是什么?
如果有些人对自己的目标早就明确,那其实没有什么困扰,对他来说,选择这件事早就结束了。
但是更多的人是因工作而选择,如果没得选择了,那其实也没什么好困扰的。
这个问题对那些既有一些选择权的人,又对目标有些迷惘的人来说,应当是比较有价值的。
所以应当怎么选?
最安全的方式是按照 T 型人才。就是其他专业浅浅的学一层,但是在某一个垂直领域里深入挖掘。
然后我们重新比较一下 所谓通才跟所谓专才。其实是不是都错了。
通才其实是什么都会一点,什么也都不会的情况,这样其实很危险,因为如果职能开始细化,随便找几个专业型的人才就能替代你。
专才也其实非常危险,专注在屠龙一件事上,如果哪一天龙死光了,屠龙勇士可能连耕地都干不了。
普京不是说了嘛,“打工是不可能打工的,这辈子都不可能打工的,我还能怎么办?根本找不到工作。只能继续当总统维持生活这样子。”
是不是类似的道理?(开个玩笑,哈哈哈哈)