大家好,我是若川。欢迎加我微信 ruochuan12,长期交流学习。今天推荐黄老师的这篇文章,你可能看到过了,但值得再看一遍。之前常有小伙伴问,大多情况下我都会分享这篇文章。

点击下方卡片关注我、加个星标,或者查看源码等系列文章。学习源码整体架构系列、年度总结、JS基础系列


前言

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

技术能力

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

职业技能

职业技能就是工作中依赖的技术栈,下面我们以前端工程师为例,看一下有需要掌握哪些职业技能。

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

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

  • 至少要学会一种打包工具
    以 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,从需求、设计、开发、测试到最终的上线都是由工程师在主导,并协调各个角色成员。这对工程师提出了更高的要求,也锻炼了工程师的综合素质能力。即使你所在的公司项目并不由工程师主导,你也可以以这个标准来要求自己。

产品思维

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

沟通能力

很多人希望做一个只写代码的美男(女)子,但实际情况你需要和不同的工作岗位的人沟通。沟通能力是非常重要的,很多时候你需要去了解你的需求方的想法,并输出你的想法。如果你两耳不闻窗外事,很可能做出来的东西并不是他人想要的,充分的沟通可以避免走一些弯路,提升工作效率。

敬畏上线

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

总结

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

与大家共勉。


最近组建了一个江西人的前端交流群,如果你也是江西人可以加我微信 ruochuan12 拉你进群。


················· 若川出品 ·················

今日话题

有小伙伴问为啥现在我的公众号推文的封面是黑底白字,真的很难看。我说是因为比较醒目,容易在众多公众号推文中区别出来,而且省时间。选封面是比较费时间的,为了选封面其实我特意安装了谷歌插件 unsplash Instant,每次打开新的标签页就能欣赏美图,但大多不太符合公众号封面。如果是随意选的网图,有可能有人找上门说侵权赔钱。欢迎分享、收藏、点赞、在看我的公众号文章~

一个愿景是帮助5年内前端人走向前列的公众号

可加我个人微信 ruochuan12,长期交流学习

推荐阅读

我在阿里招前端,我该怎么帮你?(现在还能加我进模拟面试群)

如何拿下阿里巴巴 P6 的前端 Offer

点击方卡片关注我、加个星标,或者查看源码等系列文章。
学习源码整体架构系列、年度总结、JS基础系列

如何成为公司独当一面的工程师相关推荐

  1. 大公司的资深工程师和小公司的Leader如何决择?

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 作者简介:何俊林,某知名互联网公司开发人员,一直致力于多媒体开发.本文经授权转自作者同名公众 ...

  2. 华为芯片设计面试题_华为公司面试硬件工程师笔试题

    华为公司面试硬件工程师笔试题 华为是我国知名的大企业,那么它在招聘硬件工程师的时候有什么要求呢?以下是百分网小编精心为大家整理的华为公司面试硬件工程师笔试题,希望对大家有所帮助!更多内容请关注应届毕业 ...

  3. 本科毕业四年时间如何从月薪7k到年薪60w,讲下个人从菜鸟程序员到公司核心开发工程师的历程!

    本科毕业四年时间如何从月薪7k到年薪60w,讲下个人从菜鸟程序员到公司核心开发工程师的历程,本帖主要分享下个人经历,只要努力最终会收获一个相对于自己较好的结果的,工位照镇楼 毕业四年到现在总共换了三份 ...

  4. 美国知名科技公司入门级软件工程师的薪水排名

    美国知名科技公司入门级软件工程师的薪水排名 美国招聘网站GlassDoor调查了美国知名公司入门级软件工程师的薪水,发现其中前三名都是SNS巨头,其中Twitter提供的薪水最高,Facebook紧列 ...

  5. 大公司高级Android工程师技能要求

    这是我收集的一些大公司关于Android工程师(准确来说是高级Android工程师)的要求 希望给那些想进大公司的开发者一些参考,看看自己掌握了多少技能,还需要学习一些什么知识技术 以下要求均来自于智 ...

  6. 【恒生公司2016研发工程师笔试卷选择题分析】

    static局部变量相关知识 静态变量在内存的静态存储区,静态数据一直占有着该存储区单元直到程序结束: 静态局部变量只声明一次,一旦申请内存成功,不再接受重复申请: 静态局部变量的作用域与一般局部变量 ...

  7. 直到QQ秀的尝试成功。公司从技术工程师主导思想,转变到 产品经理 主导思想。谁有了入口,谁就有话语权和资源配置权。

    2000年的时候 推出 QQ, 推出QQ资讯通,和腾讯浏览器. 并把 QQ中的曾肆无忌惮地采用大力水手,米老鼠,的卡通形象,全部去除.避免法律人隐患. 上班没有时间观念, 华为军事化管理. 我们添加增 ...

  8. 典型公司的典型工程师(from http://forum.eet-cn.com)

    1.理想主义者都想着在某个领域上大有作为,然后斗志昂然的去推动,在一个还算虚怀若谷的大领导的下面,接受到了一些支持.然后就是大面积的规章制度,从网上搜来的各种零星的材料,堆起来的一堆规范,在项目和实际 ...

  9. 大公司的硬件工程师 和 小公司硬件工程师

    转载--- 硬十 硬件十万个为什么 2021-10-15 22:43 大公司的硬件研发分工非常细致.每个员工都是螺丝钉.每个员工都是忙自己的一小点,感觉对产品就是盲人摸象. 大公司的硬件工程师: -- ...

最新文章

  1. es6 ... 添加属性_如何在10分钟内免费将HTTPS添加到您的网站,以及为什么您现在不止需要这样做......
  2. 【机器学习-学习笔记】单/多变量线性回归、多项式回归、逻辑回归、过拟合、正则化
  3. 如何在awk中引用外部变量
  4. vuepress build提示YAMLException: end of the stream or a document separator is expected at line 7, colu
  5. PAT L1-027 出租
  6. pandas多行合并一行_Pandas函数妙用
  7. docker每次都重新拉取远程镜像的问题
  8. libsuperuser
  9. c 中regex_match的用法_内联函数 —— C 中关键字 inline 用法解析
  10. ArcGIS单波段影像重分类与批处理
  11. 对照ArcGIS坐标系统文件(.prj)用Deskpro完成投影转换
  12. mac添加应用程序到启动台_如何在Mac上启动应用程序
  13. windows 截图软件——sharex 截图软件的天花板 并且是免费开源的。
  14. golang入门笔记——kitex
  15. ldirectord 介绍
  16. Logit交通方式选择模型——例题
  17. 华为云数据库SQL Server 上云最佳实践
  18. python 打印直角三角形
  19. iostream 代表着什么意思?
  20. Delphi 串口通信技术资料

热门文章

  1. android gps 锁屏更新坐标_把手机锁屏设置成任意字体,悄悄给男(女)朋友一个惊喜吧...
  2. BZOJ 2588 Spoj 10628 Count on a tree | 树上主席树
  3. 06jQuery-04-DOM操作
  4. [小北De编程手记] : Lesson 02 - Selenium For C# 之 核心对象
  5. linux查看文件大小
  6. Java学习笔记(7)——输入输出
  7. Mac下的Parallel Windows忘记密码怎么办?
  8. [Err] ORA-00979: not a GROUP BY expression
  9. 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains解决
  10. 操作数栈的字节码指令执行分析