2007年 - 我开始作为Java开发人员开始工作的那一年 - 涉及日常Web开发的技术范围非常狭窄。在大多数情况下,关系数据库是开发人员需要知道的唯一类型的数据库。前端开发仅限于HTML和CSS,加上一些JavaScript。Java开发本身意味着主要使用Hibernate加上Spring或Struts。这套技术几乎涵盖了当时构建应用程序所需的所有内容。大多数Java开发人员实际上都是全栈开发人员,尽管这个术语还没有被创造出来。
自2007年以来,情况发生了重大变化。我们开始构建越来越复杂的用户界面,并使用高级JavaScript框架处理这种复杂性。我们现在使用NoSQL数据库,几乎每一个都与其他数据库非常不同。我们使用Kafka传输数据,使用RabbitMQ传递消息,并做更多事情。在许多情况下,我们还负责使用Terraform或Cloud Formation设置或维护基础架构,我们使用甚至配置Kubernetes集群。整体复杂性已经发展到我们为前端开发人员,后端开发人员和DevOps工程师提供单独职位的程度。是否仍然可以成为一个全栈开发人员?这取决于你如何理解这个词。
你不可能成为一切的专家。考虑到Java生态系统的增长程度,甚至很难成为Java本身的专家。对于许多项目,特别是在较小的公司中,最有益的团队设置是每个专业领域至少由一名专家负责,但这些专家并不仅限于在这一领域工作。专门开发后端服务的开发人员可以编写前端代码 - 即使代码不完美 - 对于前端开发人员来说也是如此。当一个人可以开发需要触及应用程序每一层的变更时,这有助于更快地推进项目。它还可以在精炼会议期间提供更多参与,因为没有任务仅与某一群人隔离。
最重要的是,不严格限于一个区域会改变您处理任务的方式。不再是我的工作讨论了 - 鼓励开发人员学习。让一个人去度假不是问题,因为总有其他人可以为他们提供保障 - 可能效率不高,结果不是很好,但足以让事情继续前进。这也意味着当需要在堆栈中引入新技术时,您不需要找到新的团队成员,因为现有的团队成员已经很舒服地离开了他们专业知识的舒适区。
因此,全栈开发人员是一种心态。它同时处于高级和初级阶段,具有“我也能做一些”的态度。