作者 | zishunchen
作为互联网行业的技术从业人员,在职业发展的道路上,不少同学会遇到职业发展的成长瓶颈,例如:可学的技术繁多,精力不足;技能和业务不匹配,找不到突破;技术答辩屡屡受挫,无法体现价值等等。以及被塑造的“程序员 35岁论调”,使整个行业变得焦虑。
笔者作为鹅厂行家平台的咨询老师以及前端技术专家,总结了两个大家关心的问题:
- 如何寻找技术突破:从事前端开发多年,技术进步遇到瓶颈,一直在做螺丝钉的工作,且有一些年龄焦虑。
- 如何体现技术价值:不善言辞,不知道如何在技术答辩或者交流时突出自己的工作亮点。
结合笔者自身经历和理解,和大家分享。也希望以下的内容,可以帮助到热爱前端,热爱技术的同学们可以走得更远。
一、如何寻找技术突破
典型问题:前端开发的广度和深度的取舍,新的技术和业务场景脱钩,如何提升自己的业务敏感度?
新技术的学习,固然让人倍感兴奋。在人类的基因里,好奇心刻在骨子里。作为程序员,我们始终需要不断思考一个问题:我们期望用技术解决什么问题?
1. 从问题出发
做QQ空间的时候,我们遇到的问题是:网络质量普遍很差;用户规模突增,服务器成本指数增长。为了解决“小水管”也能体验富媒体的web产品问题。 前端性能优化就变得尤其关键。
从统一框架解决浏览器兼容性问题,到监控指标体系建设,再到前端模块化开发模式。早在10年前就已经陆续在业务中落地,并且取得很好的效果。
现在看起来应该算是一种技术突破吧。我们遇到很多技术挑战,在当时都是没有现成的方法可以参考。做别人没做过,解决最难的问题,并且把技术做到最好 。而这个过程,则需要有足够的耐心和坚持,不断摸索和求证。
2. 从结果反推导
在公司做了很长时间的通道面试官,参与了数不清的前端同学的技术答辩和招聘面试工作。不少同学在面对复杂技术问题的时候,容易受限在垂直技术领域中寻找解决方案。
举个案例:我曾经遇到过一个候选者,他告诉我,其精通前端react开发框架。我问,业务本身并没有采用react进行研发,如果参与过来需要重新学习,你会有什么办法?候选人回答,他非常希望找到一个能继续用react技术开发的业务。
这个案例可能比较极端,但事实上,我们会因过往经验,陷入先入为主,对号入座的思维模式:通过已掌握的工具去找问题,而不是通过问题去找适合的工具。
技术学习和技术突破,一个是过程,一个是结果。如果我们能够从结果出发,去思考:要解决当前问题,需要掌握什么样的技术。就能够学到更多东西、且学得更深刻。
3. 学会发现问题
在一线做研发工作的时候,当我的研发效率可以做到完全独当一面后。我经常会被leader挑战的问题是:“你应该学会自己去发现有价值的问题”。
作为打工人,进入职场,我们会习惯一种被安排的工作模式。产品提需求,技术完成需求。日复一日,这很容易让人陷入一种螺丝钉的状态。久而久之,我们会缺乏目标和发现问题的能力。
在我们掌握各种研发工具,提升了研发效率后。我的理解是,这些效率的提升都是为了让我们有更多时间和空间去思考:用户或者客户的痛点、产品或者业务上的问题、甚至是平台和生态的关系。而作为前端程序员,我认为:除了技术技能外,前端同样需要具备一定的产品感,能够积极思考用户和业务问题。
当然也需要避免,发现问题就必须解决问题的技术思维陷阱。因为很多问题的优先级和重要性,是需要和团队多沟通交流才能找到更多为什么。
二、如何体现技术价值
典型问题:如果不善言辞,应该如何突出自己的工作亮点?
做技术答辩时,并不需要我们有非常华丽的口才。其重点是平时工作的积累,思考,以及总结能力。简而言之,就是把我们所做的事情,抽象成一种创新的方法论。
1. 提出创新的技术方案
前端非常注重性能优化,前端经过十多年发展,已经沉淀成许许多多技术最佳实践和方法,这意味着技术成熟变得常规和有规可循。比方说你要减少加载时间,很容易想到用图片压缩的技术,做缓存,CDN加速等技术。
如果我们答辩的时候,还在陈述常规技术手段,那么是无法体现出你独特价值的。也就是工作很长时间的技术同学会陷入一种困境 “感觉前端的技术眼花缭乱, 但是每个方向的天花板并不高, 如何形成自己的竞争力” 。
在鹅厂,不少技术同学答辩过不了,不是因为他没做好本职工作,而是仅完成常规的工作,并没有留下一些让其他人记住你做过什么事情的印象。
我们要明白一点,绝大多数新技术,都源自现有技术的重新组合。 我们需要真正掌握和理解已有的技术,根据业务需要,去组合出更好的原创解决方案。如果要打破技术重组,那就需要我们去理解很多技术背后的原理和系统。比如:小程序是对web技术的一次重组,flutter 是对端渲染技术的一次重组,vue 是对dom操作模式的一次重组。
我自己的思考和总结,给大家两点建议:
- 不盲从新技术,学会抽象分析,解构
- 不要技术设限,学会系统问题,总结
最重要的是,不要害怕面对困难,敢于去挑战,承担。学会做好技术规划,做好成本和风险管理。才能达到 “程序员不能说不” 的境界。
2. 挖掘背后的动因
通道评审并不会去很刻意要求每个人都能说会道,因为这个不是技术通道评审的目的。
很多技术人员在答辩的时候不是不会讲,而是不知道如何把自己做过的事情表达清楚。
举个例子,有些员工答辩的时候很像工作汇报,把他做的事情全部复述了一遍,把通道要求里的建议掌握技能都罗列了一遍。这里面就存在一个很大的问题:忽略了动因,没有把技术执行背后的原因和思考讲清楚。
例如,一个很典型的技术逻辑思维:发现问题 → 技术选型 → 量化验证 → 调优。一个问题通常会有好多种技术解法,那你为什么选择了现在这个方法,它是最优解吗?你背后的思考和对比是什么? 选择的这个方案有哪些优点和缺点? … 我们要把这些东西讲出来。
曾经,facebook来鹅厂分享他们的前端优化手段,最后一句话印象深刻,“我们的方案并不见得适合你们” 。由此可见,我们更应该吸收的是为何做,而不是如何做。
最后,也希望大家能够摆脱“我是xxx程序员” 的技能枷锁。成为真正的程序员,去面对问题,去解决问题。如有可能,也很建议程序员同学们,去努力提升语言表达能力,毕竟这也是可以通过练习获得进步的。
3. 个人的经验总结和感悟
公司从最开始的用户互联网发展到现在的产业互联网,有很多角色已经开始变化了,我觉得这个变化其实让机会更多了。
如果业务还在做C端,那我们还是要保持对C端体验的极致追求。如果是在做B端的能力,可以多去关注整体效率的问题,储能赋能。
对前端而言,我认为他更应该结合行业需求去思考自身的定位。举个例子,我们做云开发能力的同学,虽然在公司里的职位是前端开发,但放眼整个行业来说,其实做的是行业的后台。那你做这样的后台,该靠什么能力赋能解决行业问题,怎么帮助这个行业更好地去提升产能和效率。
我遇到很多做B端前端开发的小伙伴,常常感到困惑,觉得我在这个里面做的事情好像没有什么调优价值,或者没有什么成就感。因为他们可能自己都不知道,自己要做的是行业后台,我们要解决的问题,不是螺丝钉的问题,而是一个系统问题。
随着技术的发展,前端开发的成长机会会越来越多,选择的空间也非常丰富,不论是成为一个性能优化专家,还是一个可视化专才,还是作为一个资深的游戏技术从业者,都比过去拥有更多选择。
我们要从自身业务所处的行业出发,重新加强对行业的认知和理解,找到自己的角色的定位,保持激情。持续提升分析、解决问题的能力,同时积累发现问题的能力。