这篇文章的核心观点是:软件开发者只有打造顶端优势,才能获得更好的发展。
这样的感触,来自:
有位工作十来年的朋友,一直做开发,J2EE、C#、JavaScript、PHP、C++、Android、Python,很多语言、框架和平台都用过,最近他找工作,找来找去,发现每个技术方向上的修炼都很难对得起他的工作年龄,直接导致他找不到比原来工作待遇更好的,非常沮丧。
我建立的IT职业咨询QQ群里最近有很多人在找工作,都抱怨说略懂几个方向可找起工作来很难。
植物在生长发育过程中,顶芽和侧芽之间有着密切的关系。顶芽旺盛生长时,会抑制侧芽生长。如果由于某种原因顶芽停止生长,一些侧芽就会迅速生长。这种顶芽优先生长,抑制侧芽发育的现象叫做顶端优势。
顶端优势强的植物,几乎不生分枝,如向日葵的许多品种。番茄等植物顶端优势弱,能长出许多分枝。灌木顶端优势极弱,几乎没有主茎与分枝的区别。多数植物属中间类型,如稻、麦、泡桐等。
我家在农村,小时候经常见我爸爸修理泡桐树,在树苗还很小时就把杂七杂八的斜枝掰断或者削掉,这样树苗就可以往高里长,往直里长。
去除侧枝侧芽,力保顶枝顶芽优先生长,这就是在利用顶端优势。经过这样处理的树苗最终可能长成这样:
而放任侧枝侧芽肆意生长,树苗则可能长成这样:
砍掉树干的斜枝让树长得高大,是利用顶端优势的一种方式。还有一种方式是剪掉顶芽,让侧芽生长。究竟运用哪种方式,和背后的目的有关。
现在我们可以回到最开始,解释一下那位工作十来年的朋友找工作时遇到的问题,他的问题,反映了如下有两点:
个人的技能树没有顶端优势。就是说,这也略懂,那也略懂,哪儿也不精。
这样的问题,我在分答、知乎以及IT职业咨询群里回答过很多:
比如到底要学多少门语言
比如自己一直使用Java做OA,两年多了,可现在AR、VR、AI等各种新技术层出不穷,要不要换个语言去追新技术,如用Python去学TensorFlow
比如做开发三年了,语言层面该会的都会了,该用的都用了,有些迷茫,不知道接下来怎么提高
对于想沿着技术路线发展的开发者,要尽早聚焦在某个技术方向上,打造出个人技能树的顶端优势,这样对将来的发展更为有利。
以我个人为例,我用过C、C++、Java、Lua、JavaScript、Python、Scala、OC等各种语言,但C++是我最熟悉的,明显比其它语言有优势。而在C++里面,我又用过ffmpeg、Qt、VLC、DirectX、OpenGL、CEF、WebRTC等框架,但Qt是我最熟悉的,写过《Qt Quick核心编程》和《Qt on Android核心编程》。这就是我个人技能树的两个顶端优势。
当你的能力树存在明显的顶端优势时,你就更容易被标签化,更容易被“使用”。
有人可能会说,君子不器,我们不必搞得自己只能干某件事。对,《论语》说得没错,但那是成为君子之后的事儿。在成为君子之前,先打造顶端优势,先被标签化,这样才有更好的机会去发展。当你具备了顶端优势之后,再以顶端为基础,树冠搞得大些,让自己成一专多能的T型人才。类似这样:
问题:如何让一个女人变得更美?
答:让她和一个比较丑的同伴一起出现。
这就是比较优势带来的顶端优势。对开发者也一样,从自身角度看,修剪个人的能力树可以打造技能上的顶端优势。但是很多时候,你要和别人放在一起比较时,也能显示出优势。这就是群体中的顶端优势。当你能够通过某方面的能力让自己凸显出来,你就会更重要。
那么,对开发者来讲,要塑造自己在群体中的顶端优势,最重要的一点就是选择环境。
举个例子,有很多大公司的开发者,干了几年后得不到晋升,但是跑到初创公司或者小公司,就很容易成为核心或者技术管理者。
这就是“宁做鸡头不做凤尾”,是利用比较优势塑造顶端优势的典型案例。
那相应的,还可以通过地域的差异来凸显你的优势。比如你在北京做开发,泯然众人,但回到西安,可能就能显出不一样来。如果你再回到三线、四线城市,可能优势会更突出。
另外一种凸显优势的,就是到一个匮乏你所拥有的技能的环境,比如前两年移动端开发火热时,你转战到传统软件公司或者传统行业的软件公司,帮他们的产品向移动端迁移。那你就具备顶端优势了。
小结
归纳一下,这篇文章讲了三点:
顶端优势可以从个人和群体两个维度来看。对于个人来讲,越早打造出你在知识、技能层面的顶端优势,你就越容易被识别,越容易得到更好的发展机会。