9

程序员如何寻找技术突破、体现技术价值?-51CTO.COM

 2 years ago
source link: https://www.51cto.com/article/716109.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

作者 | zishunchen

作为互联网行业的技术从业人员,在职业发展的道路上,不少同学会遇到职业发展的成长瓶颈,例如:可学的技术繁多,精力不足;技能和业务不匹配,找不到突破;技术答辩屡屡受挫,无法体现价值等等。以及被塑造的“程序员 35岁论调”,使整个行业变得焦虑。

2683273860396a9e921358ef92bb2b39fdc99e.jpg

笔者作为鹅厂行家平台的咨询老师以及前端技术专家,总结了两个大家关心的问题:

  • 如何寻找技术突破:从事前端开发多年,技术进步遇到瓶颈,一直在做螺丝钉的工作,且有一些年龄焦虑。
  • 如何体现技术价值:不善言辞,不知道如何在技术答辩或者交流时突出自己的工作亮点。

结合笔者自身经历和理解,和大家分享。也希望以下的内容,可以帮助到热爱前端,热爱技术的同学们可以走得更远。

一、如何寻找技术突破

典型问题:前端开发的广度和深度的取舍,新的技术和业务场景脱钩,如何提升自己的业务敏感度?

新技术的学习,固然让人倍感兴奋。在人类的基因里,好奇心刻在骨子里。作为程序员,我们始终需要不断思考一个问题:我们期望用技术解决什么问题?

1. 从问题出发

做QQ空间的时候,我们遇到的问题是:网络质量普遍很差;用户规模突增,服务器成本指数增长。为了解决“小水管”也能体验富媒体的web产品问题。 前端性能优化就变得尤其关键。

从统一框架解决浏览器兼容性问题,到监控指标体系建设,再到前端模块化开发模式。早在10年前就已经陆续在业务中落地,并且取得很好的效果。

现在看起来应该算是一种技术突破吧。我们遇到很多技术挑战,在当时都是没有现成的方法可以参考。做别人没做过,解决最难的问题,并且把技术做到最好 。而这个过程,则需要有足够的耐心和坚持,不断摸索和求证。

2. 从结果反推导

在公司做了很长时间的通道面试官,参与了数不清的前端同学的技术答辩和招聘面试工作。不少同学在面对复杂技术问题的时候,容易受限在垂直技术领域中寻找解决方案。

举个案例:我曾经遇到过一个候选者,他告诉我,其精通前端react开发框架。我问,业务本身并没有采用react进行研发,如果参与过来需要重新学习,你会有什么办法?候选人回答,他非常希望找到一个能继续用react技术开发的业务。

这个案例可能比较极端,但事实上,我们会因过往经验,陷入先入为主,对号入座的思维模式:通过已掌握的工具去找问题,而不是通过问题去找适合的工具。

技术学习和技术突破,一个是过程,一个是结果。如果我们能够从结果出发,去思考:要解决当前问题,需要掌握什么样的技术。就能够学到更多东西、且学得更深刻。

3. 学会发现问题

在一线做研发工作的时候,当我的研发效率可以做到完全独当一面后。我经常会被leader挑战的问题是:“你应该学会自己去发现有价值的问题”。

作为打工人,进入职场,我们会习惯一种被安排的工作模式。产品提需求,技术完成需求。日复一日,这很容易让人陷入一种螺丝钉的状态。久而久之,我们会缺乏目标和发现问题的能力。

在我们掌握各种研发工具,提升了研发效率后。我的理解是,这些效率的提升都是为了让我们有更多时间和空间去思考:用户或者客户的痛点、产品或者业务上的问题、甚至是平台和生态的关系。而作为前端程序员,我认为:除了技术技能外,前端同样需要具备一定的产品感,能够积极思考用户和业务问题。

当然也需要避免,发现问题就必须解决问题的技术思维陷阱。因为很多问题的优先级和重要性,是需要和团队多沟通交流才能找到更多为什么。

二、如何体现技术价值

典型问题:如果不善言辞,应该如何突出自己的工作亮点?

做技术答辩时,并不需要我们有非常华丽的口才。其重点是平时工作的积累,思考,以及总结能力。简而言之,就是把我们所做的事情,抽象成一种创新的方法论。

1. 提出创新的技术方案

前端非常注重性能优化,前端经过十多年发展,已经沉淀成许许多多技术最佳实践和方法,这意味着技术成熟变得常规和有规可循。比方说你要减少加载时间,很容易想到用图片压缩的技术,做缓存,CDN加速等技术。

如果我们答辩的时候,还在陈述常规技术手段,那么是无法体现出你独特价值的。也就是工作很长时间的技术同学会陷入一种困境  “感觉前端的技术眼花缭乱, 但是每个方向的天花板并不高, 如何形成自己的竞争力” 。

在鹅厂,不少技术同学答辩过不了,不是因为他没做好本职工作,而是仅完成常规的工作,并没有留下一些让其他人记住你做过什么事情的印象。

我们要明白一点,绝大多数新技术,都源自现有技术的重新组合。  我们需要真正掌握和理解已有的技术,根据业务需要,去组合出更好的原创解决方案。如果要打破技术重组,那就需要我们去理解很多技术背后的原理和系统。比如:小程序是对web技术的一次重组,flutter 是对端渲染技术的一次重组,vue 是对dom操作模式的一次重组。

我自己的思考和总结,给大家两点建议:

  • 不盲从新技术,学会抽象分析,解构
  • 不要技术设限,学会系统问题,总结

最重要的是,不要害怕面对困难,敢于去挑战,承担。学会做好技术规划,做好成本和风险管理。才能达到 “程序员不能说不” 的境界。

2. 挖掘背后的动因

通道评审并不会去很刻意要求每个人都能说会道,因为这个不是技术通道评审的目的。

很多技术人员在答辩的时候不是不会讲,而是不知道如何把自己做过的事情表达清楚。

举个例子,有些员工答辩的时候很像工作汇报,把他做的事情全部复述了一遍,把通道要求里的建议掌握技能都罗列了一遍。这里面就存在一个很大的问题:忽略了动因,没有把技术执行背后的原因和思考讲清楚。

例如,一个很典型的技术逻辑思维:发现问题 → 技术选型 → 量化验证 → 调优。一个问题通常会有好多种技术解法,那你为什么选择了现在这个方法,它是最优解吗?你背后的思考和对比是什么? 选择的这个方案有哪些优点和缺点? … 我们要把这些东西讲出来。

曾经,facebook来鹅厂分享他们的前端优化手段,最后一句话印象深刻,“我们的方案并不见得适合你们” 。由此可见,我们更应该吸收的是为何做,而不是如何做。

最后,也希望大家能够摆脱“我是xxx程序员” 的技能枷锁。成为真正的程序员,去面对问题,去解决问题。如有可能,也很建议程序员同学们,去努力提升语言表达能力,毕竟这也是可以通过练习获得进步的。

3. 个人的经验总结和感悟

公司从最开始的用户互联网发展到现在的产业互联网,有很多角色已经开始变化了,我觉得这个变化其实让机会更多了。

如果业务还在做C端,那我们还是要保持对C端体验的极致追求。如果是在做B端的能力,可以多去关注整体效率的问题,储能赋能。

对前端而言,我认为他更应该结合行业需求去思考自身的定位。举个例子,我们做云开发能力的同学,虽然在公司里的职位是前端开发,但放眼整个行业来说,其实做的是行业的后台。那你做这样的后台,该靠什么能力赋能解决行业问题,怎么帮助这个行业更好地去提升产能和效率。

我遇到很多做B端前端开发的小伙伴,常常感到困惑,觉得我在这个里面做的事情好像没有什么调优价值,或者没有什么成就感。因为他们可能自己都不知道,自己要做的是行业后台,我们要解决的问题,不是螺丝钉的问题,而是一个系统问题。

随着技术的发展,前端开发的成长机会会越来越多,选择的空间也非常丰富,不论是成为一个性能优化专家,还是一个可视化专才,还是作为一个资深的游戏技术从业者,都比过去拥有更多选择。

我们要从自身业务所处的行业出发,重新加强对行业的认知和理解,找到自己的角色的定位,保持激情。持续提升分析、解决问题的能力,同时积累发现问题的能力。​


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK