全栈开发人员的生活😱🤯😱
最初发表于deepu.tech。
大家好,我与Sendil Kumar N合著的书《使用 JHipster 进行全栈开发》的第二版于本周出版,我想把它献给所有的全栈开发人员。
免责声明:本文摘录自我的书《使用 JHipster 进行全栈开发 - 第二版》,由Packt出版。
根据2019 年 Stack Overflow 开发者调查,全栈开发者是最受欢迎的开发者头衔。软件行业将全栈开发者定义为能够处理应用程序堆栈不同领域的人。“堆栈”一词指的是构成应用程序的不同组件和工具。
就 Web 应用程序开发而言,技术栈大致可分为两个领域——前端和后端技术栈,也称为客户端和服务器端技术栈。术语“前端”通常指负责呈现用户界面的代码部分,术语“后端”指负责业务逻辑、数据库交互、用户身份验证、服务器配置等的部分。应用程序还有 DevOps 部分,其中包括持续集成、生产部署等。全栈 Java Web 应用程序开发人员需要同时掌握前端和后端技术,从为用户界面编写 HTML/JavaScript 到为业务逻辑编写 Java 类文件以及为数据库操作编写 SQL 查询。他们还需要从事 DevOps 工作,从生产部署到根据需要设置持续集成和持续交付 (CI/CD)。
随着软件架构格局的不断发展,全栈 Web 开发人员所需掌握的技术范围也急剧扩大。仅仅能够编写 HTML 和 JavaScript 来构建用户界面已经远远不够,我们需要了解客户端框架,例如 Angular、React 和 Vue.js。仅仅精通企业级 Java 和 SQL 也远远不够,我们需要了解服务器端框架,例如 Spring、Hibernate、Play 和 Quarkus。
现代全栈 Web 开发
全栈开发人员的生活本身就值得写一本书,所以我们把这个话题留到以后再讨论。
相反,让我们看一个来自全栈 Java Web 应用程序的用户故事,看看其中涉及什么。
一天是什么样的
让我们以开发一个典型的 Java Web 应用程序的用户管理模块为例。假设您将为所有代码编写单元测试用例,因此我们在此不再赘述:
- 您将首先设计该功能的架构。您将决定要使用的插件和框架、要遵循的模式等等。
- 您将根据所使用的数据库技术为该功能建模域模型。
- 然后,您将创建服务器端代码和数据库查询来保存和从数据库中获取数据。
- 一旦数据准备好,您就可以实现任何业务逻辑的服务器端代码。
- 然后,您将实现一个 API,该 API 可用于通过 HTTP 连接为演示文稿提供数据。
- 您将为 API 编写集成测试。
- 由于后端已准备就绪,您可以开始使用 JavaScript 或类似技术编写前端代码。
- 您可以编写客户端服务来从后端 API 获取数据。
- 您可以编写客户端组件来在网页上显示数据。
- 您可以根据提供的设计构建页面并设置其样式。
- 您将为网页编写一些自动化的端到端测试。
- 你还没完事。在本地测试完所有功能后,你就可以创建拉取请求或将代码提交到所使用的版本控制系统中。
- 您将等待持续集成过程来验证所有内容并修复任何损坏的内容。
- 一旦一切顺利,代码被接受,您通常会开始将此功能部署到预发布或验收环境,可以是本地部署,也可以是使用 Docker 和 Kubernetes 等技术的云提供商。如果您选择后者,您还需要熟悉所使用的云技术。您还需要根据需要升级数据库架构,并在需要时编写迁移脚本。
- 一旦功能被接受,你可能要负责以类似的方式将其部署到生产环境中,并在必要时排除故障。在某些团队中,你可能会与其他团队成员交换步骤,这样你就可以部署同事开发的功能,而他们则会部署你的功能。
- 您可能还需要与您的同事一起负责确保生产环境正常运行,包括数据库、虚拟机等。
可见,这绝非易事。职责范围广泛,从客户端样式表更新到在生产云服务的虚拟机上运行数据库迁移脚本,不一而足。如果您对设置不够熟悉,那么这将是一项艰巨的任务,您很快就会迷失在浩瀚的框架、技术和设计模式的海洋中。
挑战
全栈开发并非易事。你需要投入大量时间和精力才能掌握软件开发各个领域中各种技术和模式。以下是作为一名全栈 Java 开发者可能遇到的一些常见问题:
- 客户端开发不再只是编写简单的 HTML 和 JavaScript。它正变得像服务器端开发一样复杂,需要构建工具、转译器、框架和模式。
- JavaScript 世界中几乎每周都会出现一个新的框架,如果您没有 Java 背景,这可能会让您感到不知所措。
- Docker 和 Kubernetes 等容器技术彻底改变了软件行业,但它们也引入了许多需要学习和跟踪的新东西,例如编排工具和容器管理工具。
- 云服务日益发展。为了跟上步伐,您必须熟悉它们的 API 和相关的编排工具。
- 随着 Scala、Groovy 和 Kotlin 等 JVM 语言的引入,Java 服务器端技术近年来也发生了重大变化,迫使你不断跟上这些语言的步伐。另一方面,服务器端框架的功能也越来越丰富,因此也越来越复杂。
最重要的是确保所有这些功能在需要时能够协同工作。这项任务需要大量的配置、一些粘合代码,以及无数杯咖啡。
结论
这里很容易让人迷失,而这正是JHipster和Spring Boot等技术可以提供帮助的地方。它们通过提供移动组件之间的连接来提供帮助,这样您只需专注于编写业务代码。JHipster 还提供了将应用程序部署到各个云提供商并进行管理的抽象层。
全栈开发人员是当今行业中最艰难的职位之一,我认为这个职位经常被低估。如果您是一名全栈开发人员,请感到自豪,因为成为一名全栈开发人员需要一些勇气。您可能不是某一项技术或框架的专家,但您是某种魔术师。您可以轻松在众多技术和框架之间游刃有余。您是真正的 10 倍开发人员,管他呢,您是 100 倍开发人员,不是因为您比其他人更多地使用键盘上的特定键,而是因为您的工作曾经需要至少四个人一起工作。您可能没有获得足够的赞誉,但凭借保持领先所需的努力,您值得拥有,您很棒。
虽然能够从事应用程序开发的各个方面工作令人感到满足,但我们没有拿到相当于完成这项工作所需的四个人工资的总和,这仍然令人遗憾 😉
因此,如果您是一位自豪的全栈开发人员,请在评论中告诉我,并告诉我们您的一天是怎样的。
如果你喜欢这篇文章,你也可能会喜欢我的书。你可以在Packt和亚马逊上购买。
如果您喜欢这篇文章,请点赞或留言。
封面图片来源:Arian Darvishi在 Unsplash 上拍摄的照片
文章来源:https://dev.to/deepu105/life-of-a-full-stack-developer-2og5