如何成为公司独当一面的工程师

前言

现在的互联网市场对高阶技术岗位的需求愈来愈多,成为独当一面的工程师已经成为不少一二线互联网公司招聘的标准门槛了。那么如何成长为独当一面的工程师呢,我会从技术能力和业务能力 2 个方面去阐述。前端

技术能力

技术能力无疑是衡量一个工程师水平最重要的依据,那么对于独当一面的工程师技术能力的要求是怎样的呢。webpack

职业技能

职业技能就是工做中依赖的技术栈,下面咱们之前端工程师为例,看一下有须要掌握哪些职业技能。web

  • 熟练掌握 HTML、CSS、JavaScript 用语义化的 HTML 标签配合 CSS 百分百还原设计稿,并使用 JavaScript 完成各类交互逻辑。这是前端的基本功,除了经过书籍、视频等渠道学习以外,你能够经过作大量业务,不断写代码去应用所学知识,不断积累。算法

  • 熟练掌握一门 MVVM 框架 Vue、React、Angular 其一,随着前端的日益复杂,大部分场景都离不开它们。你须要清楚的了解框架出现的意义,框架的职责边界,你能轻松应用框架提供的各类能力辅助开发工做。除了不断在工做中应用,你还能够主动去学习框架源码,了解框架的实现原理。npm

  • 至少要学会一种打包工具 以 webpack 为例,你须要熟练掌握 webpack 的配置,学会利用 webpack 辅助咱们的开发、部署和优化。你能够尝试去编写 webpack 的 loader 和 plugin。例如咱们平时开发工做中须要 mock 数据,那么咱们能够编写一个 webpack 插件,在不改源码的状况下,实如今开发环境请求 mock 接口,测试环境请求线上接口。编程

  • 熟练掌握前端的一些广度知识 例如HTTP、Web 安全、性能优化、数据结构和算法等。除了经过书籍、视频等渠道学习以外,你能够在平时工做中不断去应用和验证。例如性能优化,你能够去分析页面的性能瓶颈,在前端仍是后端?若是是在前端,你还能够进一步分析白屏时间、首屏渲染时间、JS 加载时间、JS 执行时间等等,最后经过统计的手段作性能监控和报警。 ,小程序

开发效率

开发效率的高低,直接决定你的工做产出比,那么如何提高开发效率呢。后端

  • 给本身设一个免打扰时间 例以下午的 2点-4点,这个时间专心 coding,不看微信不刷微博不开会,这样的编码会很高效。安全

  • 工做中善于提炼可复用的代码和逻辑 例如当你在开发过程当中发现某组件在其它项目中实现过,这个时候千万不要想着去 CV 代码,而是把它抽象成可复用的业务组件,对外设计好输入和输出接口,并抽取到专门的仓库中管理,业务经过 npm 私服的方式去引入。性能优化

  • 善于经过技术的手段去提高效率 例如当你去开发和维护多个项目的时候,每一个项目都包含一些相似的代码和配置,你就能够想着去开发一个脚手架,自动帮助你去初始化项目代码和一些配置文件。

解决问题

每一个工程师都会在工做中遇到各类问题,解决问题的能力侧面反映了一我的的技术能力。

  • 线上问题 case study 当遇到线上问题,你能够配合一些报错日志快速定位问题出,找到快速修复的方案,而且在每次出线上问题后都认真的作 case study,找出引起问题的多方面缘由,并给出对应的解决方案,避免往后再出现相似问题。

  • 探究问题的本质 在开发过程当中遇到报错,你能够经过代码执行堆栈和报错信息找到引发错误的根本缘由,从而找到最合理的修复方案,若是报错的源头是第三方插件,你应该趁机去了解第三方实现的原理。

  • 学会提问 并非全部问题都要本身独立解决,有些时候也能够求助于他人,好的提问方式很是重要。例如你在提问以前,本身应该通过充分的思考,并学会把问题拆解,在拆解的过程当中就会把问题的复杂度下降。要善用搜索引擎,把关键字提取出来去搜索引擎上去搜索,先尝试本身去解决问题。若是仍然不能解决,能够将问题的相关上下文、截图及必要标识及本身的思考过程、查找到的相关资料,以及本身的分析发送给想要帮助你的人,并能提供最小化复现的问题。

代码重构

曾经有个大佬跟我说过,若是每半年去回顾你以前写的代码,都会以为像坨屎的话,那说明你在进步。

  • 不要过分设计 有些人喜欢一次性把代码写好,预留各类扩展接口,过分设计,但因为需求的的变化每每不可预测,很是容易致使花了大量的时间却写了大量无用的代码,产出低下。在高速发展的互联网公司是绝对不能容忍这种状况的,而应该是敏捷开发,快速迭代。

  • 及时重构 一般咱们为了一个项目快速上线,初版的代码可能会有不少问题,当咱们在基于以前版本的代码开发新功能的时候,若是遇到以前代码实现不合理的地方要及时重构,而不要敷衍了事,若是等到代码量已经很大的时候去重构,会很是困难和痛苦,而且还可能有 regression 风险。

  • codereview 找比本身厉害的同事帮助本身的代码作 codereview,吸收他们的一些好的建议,也能够去 review 其余同事的代码,以为写的好的代码要学习,以为写的很差的地方能够 ”挑刺“,引发讨论,追寻最佳实践。而且一个团队要制定统一的代码规范和风格。

  • 学习优秀源码 如何去写出优秀的代码,首先要学会模仿,你应该常常去 GitHub 去阅读一些优秀的源码,把好的编程思想和代码实现借鉴到本身的工做项目中。

技术沉淀

技术是一个长期学习并积累的过程,须要常常作一些技术沉淀。

  • 技术分享 把工做中遇到的一些问题的解决方案、学习的一些新技术,产出的一些技术项目总结下来,做为对内或者对外(公司容许的话)技术分享和输出。对内分享的话可让你们能知道你作的东西,并活跃内部技术氛围,锻炼表述能力,这个能力在大公司的晋升述职中很是重要;对外分享能够锻炼写做能力,提高我的或者是团队的技术影响力。

  • 开源 若是在工做中作的不错的项目,有开源价值而且公司容许的前提下,能够考虑开源,由于开源会让你对项目质量有更高的追求。例如以前我在滴滴作的 cube-ui,开源会让咱们对代码的质量要求更高,并补充了完整的文档、示例和测试。并且随着愈来愈多人使用,用户帮咱们反馈了不少 bug,也补充了不少功能,直接帮助咱们省了 QA 的人力。好的开源项目也能够帮助咱们提高我的和团队的技术影响力。

快速学习

技术变化突飞猛进,快速学习的能力尤为重要。

  • 阅读官方文档 当你去学习一门新技术的时候首先应该去阅读官方文档,而不要去看社区总结的文章,由于官方文档是最权威的,而且是实时更新的,而他人总结的二手资料极可能是过期甚至是有误的。

  • 在工做中实践 学习若是脱离工做的实践,实际上是很是低效的。你应该把本身所学的知识并在工做中反复实践和验证,及时反馈,加深学习的印象。不要花时间去学习与工做无太多直接关系的领域。

  • 先精通一门技术 不一样的技术之间实际上是融会贯通的,当你对一个技术精通并总结出方法论之后,很容易上手别的技术。好比一个对 Vue 精通的同窗,上手 React 一定毫无难度,对 Web 前端开发精通的同窗开发小程序也是毫无压力。

技术选型

技术选型是大部分工程师都会面临的问题,好的工程师必定要有好的技术选型的能力。

  • 技术选型的标准 当你去选择某个开源项目的时候,应该参考如下几个方面:feature 完整度(可否很好知足咱们的需求),使用量(npm 下载量、是否有大公司使用),维护力度(最近更新时间、更新频率、issue 和 pr 的处理状况),测试(是否有测试,测试覆盖率),文档(文档和示例是否完善),维护者(团队、我的的技术能力以及他们的技术影响力),流行度(star、fork 量)。

造轮子

当现有轮子不能知足咱们的需求的时候,咱们要有本身造轮子的能力。

  • 学会造轮子 你须要常常去学习和研究其它的轮子是如何造的,学的多了,天然就掌握了造轮子的一些规律和方法论,了解轮子实现的本质原理,也就能够根据本身的需求和场景去定制化轮子了,而且你的轮子也能够是其它小轮子组装而成。例如我在滴滴的时候为了实现一个媲美原生 iOS 体验的 Picker 组件,先是研究了 isroll 的实现,在它基础上扩展实现了 better-scroll,而后在 better-scroll 的基础上扩展出 Picker 组件。

业务能力

做为独当一面的工程师,除了过硬的技术能力,也须要有良好的业务能力。

owner 意识

若是你不甘心只当一颗螺丝钉,你须要有 owner 意识,对产品和项目负责。例如我如今在 zoom,从需求、设计、开发、测试到最终的上线都是由工程师在主导,并协调各个角色成员。这对工程师提出了更高的要求,也锻炼了工程师的综合素质能力。即便你所在的公司项目并不禁工程师主导,你也能够以这个标准来要求本身。

产品思惟

当你接到一个需求的时候,也要思考这个需求解决了什么问题,有什么价值和意义。做为一个工程师,最好能参与到需求早期的讨论中,充分理解业务,这样你对需求的把握和理解会更准确,而不是产品说什么你就作什么,有些时候你会找到一条既能知足需求又能节约开发成本的路。

沟通能力

不少人但愿作一个只写代码的美男(女)子,但实际状况你须要和不一样的工做岗位的人沟通。沟通能力是很是重要的,不少时候你须要去了解你的需求方的想法,并输出你的想法。若是你两耳不闻窗外事,极可能作出来的东西并非他人想要的,充分的沟通能够避免走一些弯路,提高工做效率。

敬畏上线

不少没有在大公司待过的人对于上线的视程度不够,一旦上线出问题,第一反应并非回滚代码,而是去定位问题,经过下一次上线修复。这个行为在大公司是绝对不容许的,由于当你用户量大了,每一次上线事故的影响面都会很大,若是不及时回滚,对公司也会形成很是大的损失。所以要对上线有敬畏心,保证整个上线过程是自动化而非人工参与(由于人是不靠谱的),上线过程当中须要观察监控,一旦有任何数据异常要及时回滚,而后再定位问题从新上线,最好避免高峰期上线。

总结

咱们通篇讲了不少方法,但实际上在你进阶成为独当一面工程师的路上,这些方法也只是仅供参考,真正能成为大牛的人,可以直面困难和挫折,勇于跳出本身的温馨区追求进步,能熬得住突破瓶颈长时间的寂寞,是肯下笨功夫的聪明人。没有什么人能够靠着看一两篇文章就能成为大牛,而真正重要的,是多年如一日的坚持。

与你们共勉。

相关文章
相关标签/搜索