Bcbb98902a9b6e637988c55baff994ff
技术人的成长

上次桦总邀请我让我写一篇关于面经方面的文章,我答应了。但是仔细一想,其实我最近三个月也就帮别人交叉面试过一人,同时自身也没跳槽的打算去面试。加上我看小专栏上诸如《XXX公司面试题》,《如何拿到X、Y、Z公司的Offer》之类的文章也并不在少数,我还是想从主观的方面阐述个人的想法,所以拟定了这个标题:技术人的成长

技术人的误区

是的,程序员往往在技术上“自视甚高”,越年轻的越这样,学了一个XXXX技术然后发现某资深程序员在这方面不熟悉,就会小欣喜的觉得自己比别人强。

上述这段话摘自一个微博知名大V发表的感悟。包括我自己在内,之前也陷入过这样的误区,觉得自己学了某项技术很牛逼,有了巨大的提高。

但是事实并不是这样。简单来说,掌握解决某些问题需要的技术是一名合格的技术人的必备素养。

好比现如今大热的短视频多媒体领域,你学习使用OpenGLES,学会使用AVFoundation,学会写Shader,并不是代表你有多出色,而是你所从事的领域的对你必备要求。如果你掌握不了,对不起,你就被这个领域淘汰了。

同时,以这个话题,我们再稍微延伸开,谈谈跨栈(全栈)工程师。

很多人觉得,技多不压身,多掌握一门是一门。比如所谓的大前端开发者角色,iOS/Android工程师掌握了另一个移动端的开发技能,同时还掌握了前端的开发技能。

如果是个人业余学习兴趣,我觉得值得鼓励,但是如果是以个人成长甚至职场晋升为目的,我觉得这是彻底的南辕北辙。

我在读大学的时候,曾经问过当时我的老师一个问题:老师,如果我作为一名工程师,同时具有强大的艺术美感和产品思维,是不是我肯定能更有优势?

老师当时回答我说:“肯定有优势,但是前提是你的工程师水准要至少大于等于其他人。”

所以,个人愚见,如果以从事iOS为例,如果满分是100分,那么一名水准在90分的iOS工程师,其含金量远远大于70分的iOS工程师附带70分的Android能力。

技术人的判断

这个副标题取得可能略微晦涩,何为技术的判断?简单来说,就是你对你从事的行业,研究的技术有准确的判断。

以最近大火的Flutter为例,很多人都在说其的跨平台性、其潜在的动态化能力。如果仅仅是这样,你觉得一个以dart语言为依托,这个现如今仍有很多局限性的框架真的比React Native甚至国内的Weex值得研究吗?

如果你曾经研究过WebKit,除了其庞大的体系架构外,其令人着迷的一点就是它的核心渲染能力。这不是所谓的理解一些DOM + STYLE在屏幕中渲染对应的图形结构就能解释清楚的,他需要强大的数学和计算机图形学知识做依托,才能在如此繁杂的项目抽丝剥茧直指要点。

Flutter,以一个这么精简的项目,实现了完整的渲染能力,这才是为什么如此多的人愿意花费时间去研究它的原因。

技术人的成长

最后,让我们回到“技术人的成长”这个标题上来。我觉得技术人的成长体现在三个方面:

  • 抵御所谓“全栈”的诱惑,聚焦领域。
  • 扩大视野,提高技术敏锐程度。
  • 多看多尝试,不要空想

聚焦

所谓聚焦,不是抱着一棵树,天天重复同样的事和劳动,而是以体系化的学习方式,钻研透你的领域。这里尤其重要的是体系化。

再以iOS的从业经历举例:

top Created with Sketch.