原文: Full Stack Engineer – Career Guide

全栈工程师在过去十年中越来越受欢迎,是科技就业市场上最受欢迎的职位之一。

但究竟什么是全栈工程师?他们每天都在做什么?你如何才能成为一名全栈工程师呢?

在这篇文章中,我将介绍全栈的定义,并涵盖全栈工程师所从事的一些工作。我还会提到一些你成为一名全栈工程师需要学习的技能。

什么是全栈工程师

现代 web 应用由两层组成:前端和后端。

前端,也被称为客户端,由内容、内容的展示和布局以及互动性元素组成。它包括用户在屏幕上看到的并可以与之互动的所有可见部分。

后端,也被称为服务器端,包括一个运行代码的服务器,它有必要的逻辑来接收、处理以及加工请求,还有一个用于安全地存储用户数据的数据库。它包括用户不直接知道的所有幕后过程。

栈是技术的集合,指的是软件、工具、编程语言、框架和数据存储技术的组合,它们共同构建和运行 web 应用。

有许多技术栈。最流行的 JavaScript 语言的栈之一是 MERN,它代表 MongoDB、Express、React 和 NodeJs。

MongoDB 是一个文档数据库,Express 是 Node.js 的后端 web 应用框架,React 是一个前端 JavaScript 库,NodeJS 是一个后端 JavaScript 运行环境。

全栈工程师是指知道如何从头到尾构建一个 web 应用的工程师,包括前端部分、后端部分和它所处的基础设施。他们处理整个技术栈,了解其中的每一部分。

全栈工程师的任务和职责

全栈工程师致力于解决一系列广泛的问题,通常对项目有端到端的所有权——从概念化到部署。

一些日常职责可能包括:

  • 通过与客户和利益相关者的沟通来收集项目需求,了解软件产品的愿景。
  • 集思广益,与设计团队合作,在将设计原型编码成产品之前审查设计原型。
  • 解决应用程序面向客户端的 HTML、CSS 和 JavaScript 问题,并处理应用程序内使用的前端框架。
  • 确保 web 应用对终端用户的响应,应用能在大多数设备上运行。
  • 遵循可访问性的最佳实践。
  • 管理和维护数据库和服务器,以确保客户端高效和优化地工作。
  • 确保应用程序的安全性、维护、性能、正常运行时间和可扩展性。
  • 监控软件并编写测试,以确保代码按预期运行。寻找并修复代码中的错误,以优化软件。
  • 编写干净的、设计良好的、高效的代码,遵守行业最佳实践。
  • 跟进新的技术进展,以改善业务需求。
  • 创建一个最小可行产品,向利益相关者展示并与决策者沟通。
  • 在收集反馈意见后实施新功能。
  • 审查其他工程师编写的代码,并提供建设性的反馈。
  • 阅读和编写概述软件开发过程的文档。

任务和责任将取决于公司的规模。

例如,一个小公司可能只有一个处理整个应用程序的全栈开发人员。一个较大的公司可能有前端和后端开发人员,他们在自己的领域和专业知识范围内从事具体的工作。

全栈工程师的平均薪资是多少

软件工程师,包括全栈工程师,一般都有不错的薪水。

根据美国劳工统计局的数据,软件工程师的年薪中位数为 109,020 美元。

具体到全栈工程师,Glassdoor 列出的平均工资约为每年 120,300 美元。

Indeed 列出的平均工资为 120,749 美元。而 Stack Overflow 的开发者调查显示,全栈开发者的平均工资为 14 万美元。

请注意,这些数据是面向在美国的全栈工程师统计的。报酬是多少将取决于你的位置和经验年限。

搜索一下你所在地区与你有相同经验的软件工程师的平均工资,以帮助你更好地了解。

如何成为一名全栈工程师——全栈工程师所需的技能

在下面的章节中,我将介绍成为全栈工程师所需学习的一些技术。

成为全栈工程师需要时间,你不可能成为所有工具和技术的专家——更多的是要对技术有全面的了解,并充分理解使用代码解决问题。

学习互联网和 web 基础知识

作为一名全栈工程师,了解互联网的工作原理并熟悉一些网络术语,如 DNS 和 IP 地址,会让你受益匪浅。

要了解更多关于 DNS、IP 地址以及互联网如何运行的信息,请查看以下资源:

你还需要知道 HTTP(超文本传输协议),这是万维网的基础,因为它管理着客户(如 web 浏览器)和服务器之间的通信。

具体而言,你需要了解 HTTP 请求方法(如 GET、POST、PUT、PATCH 和 DELETE)和 HTTP 响应代码(如 200、404 和 500)。

要了解更多关于 HTTP 的信息,请查看以下资源:

学习前端 web 开发基础知识

只有三种前端 web 语言在所有现代网络浏览器中运行: HTML、CSS 和 JavaScript。

HTML(超文本标记语言的简称)定义了网页的结构和内容,如文本、链接、表单、图像、视频等。

要学习 HTML,请查看这个课程

CSS(层叠样式表的简称)对 HTML 内容设计样式,并使其具有美感——它决定了网页的外观和感觉。

CSS 负责确定页面上元素的大小、显示、布局和呈现。CSS 还负责使网页在所有屏幕尺寸上都能使用。

要了解更多关于 CSS 的信息,请查看这个课程,其中包括 Flexbox 和 Grid——两个重要的 CSS 主题。当你了解了基础知识,你可以学习一个 CSS 框架,如 Tailwind CSS

JavaScript 是一种动态脚本编程语言,用于在浏览器中运行。

它是唯一可以用于前端 web 开发的编程语言,是 web 开发的重要组成部分。它与 HTML 和 CSS 一起被用来创建交互式网页。

要了解更多关于 JavaScript 的信息,请查看这个课程

学习 Git 和 GitHub

Git 和 GitHub 是开发工作流程的核心部分,是每个软件开发工作中使用的工具。

Git 是一个分布式的版本控制系统,它提供了一种方法来对你的项目进行修改、备份这些修改、跟踪它们,甚至在需要时回溯到它们。它还可以让你在同一时间与其他团队成员协作。

GitHub 是一个在线托管服务,让你更容易使用 Git,是你和你的团队上传和审查代码的地方。

要了解更多关于 Git 和 GitHub 的信息,请查看这个课程

学习一个前端库和框架

当你理解了 JavaScript 的核心概念,你就可以继续学习 JavaScript 的前端库和框架之一。

前端库是预先写好的可重复使用的代码,包含各种函数、方法或对象,你可以在你的 JavaScript 项目中使用,以执行任务和实现特定功能。而 web 框架是一种工具,可以使创建 web 应用更容易、更快速。

根据 2022 年 Stack Overflow 调查,最受欢迎和最常用的 JavaScript 库是 ReactJS。

要了解更多关于 ReactJS 的信息,请查看这个课程

还有其他框架你可以使用和考虑学习,如 VueAngularSvelte。每个框架都有其组织和编写代码的方式,以及其自身的优势和局限性。

在学习这些工具之前,请确保你有一个坚实的 JavaScript 基础。

学习后端 web 开发

作为全栈 web 开发人员,你需要了解前端技术和后端工具,所以你还需要能够使用服务器端的脚本编程语言。

有很多可供选择的语言,如 Python、Ruby 和 Java,仅举几例。

尽管 JavaScript 被广泛用于前端开发,近年来,因为 NodeJS,它也被用于后端网络开发。

NodeJS 是一个提供后端功能的 JavaScript 运行时,旨在建立动态可扩展的 web 应用。

首先,学习如何使用 NPM,这是一个 Node 包管理器,用于安装和管理 JavaScript 包的本地依赖。它是专门为与 NodeJS 一起使用而设计的。

要学习 NodeJS 的基础知识,请查看这个课程

你可以将 NodeJS 与 ExpressJS 服务器端 web 框架结合,创建全栈 web 应用。要学习使用 NodeJS 和 ExpressJS 的后端开发,请查看这个课程

学习数据库管理系统和 SQL

作为一名全栈工程师,你将与数据库打交道,因为你所开发的大多数 web 应用都有一个数据库。你将花很多时间编写数据库查询,以获取你需要的数据。

数据库是一个存储容器——一个存储项目中所有数据的地方,如用户数据。

有两种主要的数据库类型:

  • SQL 或关系型数据库,也被称为 SQL 数据库,它以结构化的、有组织的、表格的形式存储数据。
  • 非关系型或 NoSQL 数据库,它们不以表格形式存储数据。

一个数据库有一个叫作数据库管理系统(DBMS)的程序,它作为数据库之间的接口,允许用户或程序来检索、更新和管理数据。

要了解关系型数据库,请查看 freeCodeCamp 的关系数据库课程

为了与关系型数据库通信并操作存储的数据,你要使用查询语言,如 SQL(结构化查询语言的简称)来查询它们。要了解更多关于 SQL 的信息,请查看这个资源

如果你想开始使用 NoSQL 数据库管理系统,MongoDB 是一个不错的开始。要开始使用 MongoDB,请查看这些课程

总结

希望这篇文章能帮助你更好地了解全栈工程师的工作。

在这篇文章中,我们介绍了全栈工程的定义,并涵盖了全栈工程师所从事的一些工作。

我们还介绍了一些你成为全栈工程师需要知道的工具和语言。

感谢你阅读本文!