怎样让自己成为不可替代的程序员?ZT
前些日子,突发奇想,在我的小密圈里提了这样一个问题:
未来,什么样的程序员才是不可替代的?
当然,这本身就是个没有答案的问题。一来,仁者见仁,智者见智,各人看法不尽相同。二来,这个世界上哪有不可替代的人,少了谁,程序照样跑,地球照样转,不过可能转的慢一点,和月亮碰撞多一些罢了。
这个问题其实换个方式来问,答案就会明显的多:
创业公司招第一批种子程序员,他们理想的候选人需要具有哪些技能?(比如如果有人创业做搜索和推荐。)
大公司里一个百来号人的大组,如果让老大们选择可以留下五到十个人,其余的人可以重新招,老大们会留那些人?
这样,你再拿身边的人和组去对号,就不难发现什么样的程序员,即使不是真正意义上的不可替代,却也在绝大多数的时候不会被淘汰。
大致说来,我觉得以下三点的品质很重要。
一:某个领域的专家,具有很多领域特有的专业知识。
这里说的领域,更多是指“横跨”的领域,而不是“纵深”的领域。
什么意思呢?金融、游戏、自动驾驶,这些都可以看成是纵深的领域。都很重要,但是并不是每个公司都需要这样的人才。从大处来说,世界上少不了他们,但是大部分公司招人,并不一定需要。
而一些如支付、安全、风控等领域,却是很多公司到了一定规模后一定需要的。当然,这样的领域也会变化。比如,很多年前,云平台还么有那么普及的时候,你要开公司,那懂得服务器架构,数据仓库和管道建立的专业人才要求就很高。但如今,除了发展到很大规模的公司,绝大部分都是直接使用云平台,并不需要太多极专业的系统工程师。而多年后,如果支付或者安全也有这样的完全开放又好用的平台可用,兴许这些也会变的简单。但是,因为支付和安全等领域因为市场所在地的不同通常需要一些定制,这样的平台估计很难普及。
而其余一些既不横跨,也不纵深的领域,也就是公司特殊的产品也业务。一方面,大部分都没有什么可移植性,换一个公司,做的产品就完全不同。而另一方面,产品和业务相关的积累,会让你更有经验怎么去做产品,怎么去做业务。但是却又不是那么的不可替代了。
还有一些人,喜欢什么火学什么。早年的移动开发,现在的机器学习,都是这样。这些有这些的优势。短期来说,可以让你在供不应求的市场占优势。但就好像市场经济,需要的人多的时候,学的人也多,可以招到的人也就越来越多。最后,还是要做的精,做得好,才能脱颖而出。
二:执行力和判断力极强,传说中的一个人顶一个团队的那种
第二就是一个人的执行力,还包括判断力、临时学习能力等等。在一个团队里,除了极个别的技术领导者,大部分人其实能力和经验差不多都是一个起点。然而,有些人手快,做事认真卖力,很靠谱,出了问题自己也是第一时间修。这种人,到哪里都会很快脱颖而出。
因为现实的工作中,你真说什么东西难到需要爱因斯坦的智商才做得出来,那几乎是不可能的。就好像各门各派的武功,并没有太大的长短。实际交锋中,也不过应了那句 “天下武功,唯快不攻”。执行力强,能最短时间成事,绝对是程序员的一大优势。不仅因为现实中有很多 deadline,还因为很多项目一旦拖的慢了,和别的项目相互牵涉,就会变得异常复杂。有几个可以快刀斩乱麻的程序员,绝对是极重要的。
而做事麻利,一来经验和能力很重要,二来,愿意吃苦,把公司的事当成自己的事这样的态度也很难得。不论是招人的创业公司,还是大公司里的负责人,在需要的时候,都会尽力去招去留这样的人。
三:在团队中有凝聚力,对整个团队执行力起倍增的效应
几年前,经历过一件事。有一个同事,你说他能力吧,一个人顶两三个人绝对是没话说的。但是,很多和他共事不久的人,都会以各种理由换组或者跳槽。后来私下和别人聊,知道因为和这样的人一起工作让别人很压抑,别说没有成就感或者进步了,很多时候会很有挫败感。这样的人,能力再强,除非你就招他一个,否则极大的可能,他对整个团队的执行力都有很大的影响。
有的时候,纯粹的正确不一定是正确,纯粹的好人不一定是好人。现实中,哪怕你桩桩件件从道理上来讲都是对的,但是对项目、对产品不能审时度势,不能权衡利弊,死死坚持技术上的 “正确性”。虽然一时你就是对的,但是又能怎样呢?能全局思考,虽然有时会担一定的风险,某一个小事上可能做的不是完美,但往往更有可能把每一件事做成。能够和别的程序员愉快合作,在不是那么重要的问题上不认死理。当然,如果真的是原则上绝对不应该让步的问题上,却又应该死也不能妥协了。
当然,这些还是个人意见。如果你去注意身边的人,你可能会发现:我觉得他技术很强啊,为什么好像一直没做出什么大的成绩。或者,我觉得她也没有那么厉害,为什么好像总是就把事情做成了。很多时候,问题不在技术本身。