技术

如何成为一名全栈开发工程师

什么是全栈开发工程师

“全栈”这个概念最早来源于 Facebook 工程师 Carlos Bueno 在 2010 年底写的一篇文章:The Full Stack

作者认为全栈是一个通才,能够自己创建不平凡的应用程序。

他也指出,没人能够熟悉所有方方面面,但作为一个全栈,能够看清每个栈的上下之间是如何运作的。

我们再看看百度百科的定义:全栈工程师是指掌握多种技能,胜任前端与后端,能利用多种技能独立完成产品的人。

百度百科的定义稍微有些狭义,全栈的技能远远不止前端与后端,但在大多数情况下,熟练掌握前后端就可以成为一名别人眼中的全栈。

在我的理解中,全栈开发工程师除了传统大家理解的前端、后端、移动端之外,还必须具备设计与运维的技能。若不具备这两项技能,还是没办法独立完成一个产品的,在设计与运维阶段,还是得依赖于其他人,或者说无法更独立、更高效地完成一个产品。

how-to-be-a-fullstack-developer-01

全栈开发工程师存在的意义

我们了解了什么是全栈开发工程师,那么,为什么会存在全栈开发工程师呢?或者说为什么需要全栈开发工程师呢?

我认为全栈具有下面几个至关重要的作用:

  1. 极大减少沟通成本,全栈开发工程师独立完成一个项目的时候,沟通成本为零,全部自己干
  2. 恐怖的开发效率,全栈开发工程师可以从他的若干技能中找到最高效完成任务的方式
  3. 资源紧张时的万金油,在公司资源紧张的时候,可以充当万金油,哪里缺人顶哪里
  4. 救火灭火的能力,全栈开发工程师在面对线上问题的时候,能够更快地定位问题所在

全栈与专家的区别

相信大家都听说过“木桶理论”,专家强调的是术业有专攻,衡量一个专家主要看专攻领域的能力;而全栈强调综合能力,主要取决于技术的短板,也就是木桶理论中最短的那块板子。

how-to-be-a-fullstack-developer-02_03

另外,“二八定律”也可以用来解释全栈与专家。在很多情况下,一个有成为全栈或专家能力的人,花 20% 的时间可以将一项技术从零开始学习达到 80 分,而从 80 分提高到 100 分,则需要花 80% 的时间。于是,在某一项领域成为一名专家所花的时间与成为一名在多个领域都达到 80 分的全栈是差不多的。

因此,想成为一名全栈,也必然需要做一些取舍,需要更加注重技术的广度,而不能陷进技术的深度中无法自拔,毕竟人的精力是有限的。

全栈开发工程师的进阶之路

想要成为一名全栈,我认为需要具备以下几点能力:

  1. 超强的学习能力:全栈需要快速掌握很多技能,所以必须具有超强的学习能力
  2. 发现并解决问题的能力:遇到未知领域的问题,不要退缩,去发现问题,并寻找解决办法
  3. 良好的沟通能力:需要在团队中与各种人员进行沟通,起到团队不同成员的桥梁作用
  4. 全局思维的能力:全栈最大的价值就是全局思维,不局限于某一个面,而是从全局去考虑问题
  5. 技能迁移能力:不局限于某一个技能领域,可以根据需要快速迁移到其他领域
  6. 勇于探索的能力:对新技术的渴望与追求,不断勇于探索新技能

在我个人的成长上面,我有以下几点经验:

  1. 实践大于理论:与其花大量的时间看文档,停留在理论上,不如直接开始实践,会更快上手一门新技术
  2. 善于利用搜素引擎:翻墙!翻墙!翻墙!Google!Google!Google!
  3. 独自完成一个产品:从零开始打造一个产品,独自完成其中的每个环节
  4. 决心、耐心、虚心、细心:成为一名全栈需要下决心、有耐心,学习要虚心、做事情要细心,才能更上一层楼
  5. 良好的人际关系:与各个领域的技术专家打好关系,你可以从他们身上获得很多干货
  6. 时间积累:任何一个领域都需要花时间去积累,没有速成之法

下面这个图是我推荐的技术上的进阶路线:

how-to-be-a-fullstack-developer-04

全栈开发的一个实际案例

下面是我的一个黑客马拉松比赛作品的实际案例,一个人完成该作品的全部生命周期。

how-to-be-a-fullstack-developer-05

产品设计:

how-to-be-a-fullstack-developer-06

UI设计:

how-to-be-a-fullstack-developer-07

小程序注册:

  1. 注册小程序账号
  2. 公司实名认证,申请营业执照扫描件、授权书盖章等
  3. 配置服务器合法域名
  4. 本地打了一个含有域名验证的 nginx 镜像并发布到 k8s
  5. 配置扫普通链接二维码打开小程序

Coding:

how-to-be-a-fullstack-developer-08

硬件调试:

how-to-be-a-fullstack-developer-09

测试部署&发布上线:

how-to-be-a-fullstack-developer-10

之后有时间我整理下,详细讲下这个项目的细节,将各个环节的文件都开源出来。

您已成功订阅 HADB.ME
真棒!下一步,完成结账以便解锁 HADB.ME
欢迎回来!您已登录成功。
登录失败,请重试。
操作成功!您的账户已全面激活,现在您有所有内容的权限了。
错误!Stripe 结账失败。
成功!您的账单信息已更新。
错误!账单信息更新失败。