10年前,软件开发环境看起来非常不同。它的主要方式是前端是前端,后端是后端。对发展有明确的界限和期望。
我们都做过--修补界面,与API交互,编写我们自己的规则和逻辑,甚至还有一点将东西引导到云中。如果你已经在这里呆了足够长的时间,那么你很有可能已经遍历了“堆栈”的不同层。如果不是出于需要,那也是出于好奇。
从技术上讲,这让我们变得满员--这就是我们告诉世界的,特别是在求职方面,如今的招聘可能有无数的技术要求。但是你的能力有多强呢?在满满的光谱中(如果有这样一个词来描述它),你真的坐在哪里?
它很容易成为一个“技术”全栈,在那里你勾选了所有与不同层次的开发有“一些”经验,但缺乏对它们的理解和知识深度的方框。
作为开发人员,我们通常从一层的原生开始。无论是前端、后端、数据还是基础架构,我们都要先从某个地方开始。要精通这一层,我们需要具备开发工作的五个方面的能力水平:语言知识、平台知识、逻辑思维、体系结构知识和创造力。
代码是一种语言,这意味着它是一种交流方式。这个语法很容易学。但是要有意义地应用它--这是许多新开发人员和第一次迁移到其他层的开发人员努力的地方。这五个方面涵盖了掌握层能力所需的其他部分。
这是我们大多数人开始的地方。我们学习一层的语言。我们会弄清楚如何以及何时放置我们的{},如何创建类和函数。我们将学习所有关于作用域、链、数组和数据结构的知识。语言知识使我们能够将我们的思想翻译成计算机可以理解的格式。
每个平台都有自己的一组特殊要求。移动Web开发不同于本地移动应用程序开发。亚马逊的AWS不同于Google Cloud和Microsoft Azure。使用GraphQL在Node.js中进行后端开发是Java RESTful API的替代方案。根据层的不同,每个平台可以细分为较小的子平台。
你如何构建一个既健壮又灵活,但又足够坚固而不会变成失败的东西呢?建筑知识通常以模式的形式出现。这些模式就像是如何做事情的支柱和横梁。
你有多擅长将想法模块化成能产生特定预期结果的简明部分?你能制造多小的问题,并以一种精神上可以理解的方式将所有的碎片组合在一起?代码中的逻辑思维是创建其他人容易理解的结构和关系的能力。
作为开发人员,我们将总是受到我们所知道的、环境的约束和需求的限制。你在这些限制和约束下工作有多好?你能把界限延伸到多远?简而言之,这基本上就是创造力。
当我们称自己为全栈时,它可能会在不同的层上在这五个方面被四舍五入。然而,很少会出现这种情况。
开发人员可能拥有启动应用程序的技术知识,但他们缺乏经验可能会阻碍他们创造性地思考和基于特定于平台的知识构建解决方案的能力。这意味着逻辑思维是有限的,五个方面的综合会导致次优的解决方案。
在他们的层面上是专家的开发人员通常坐在五个方面的边缘。全栈开发人员的范围要复杂得多,因为每一层都有自己的一组要求。
如果我们给全栈贴上标签,我们会有三种类型:技术型、重层型和可转移型。
技术上的全套是指技术上做了所有事情的开发人员。他们可能已经知道如何在教程的帮助下将待办事项列表启动到应用程序中。他们在每一层上的五个方面都是表面水平的,这让他们成为一切的初学者。
以层为主的全堆栈是特定层的专家。它们在前端、后端、数据或基础架构方面都是本机产品。然而,他们可能已经在层之间移动了,在这里和那里做了一些事情,直到它产生了一个功能齐全的应用程序。其他层可能是基本的,也可能是最小的--但这是一个可行的解决方案。
这个开发人员可能是一两个很重的人。他们比其他人更有优势,因为他们可以在别人身上看到自己这一层的模式-这就是为什么他们是一个可转移的完整堆栈。他们能够在团队环境中的不同层之间移动,并能产生高于完全初学者水平的东西。
使用这些原型作为指南,您可以计算出您在整个堆栈范围中的位置。
由于各层之间的能力级别会根据上面列出的类型而增加,因此您可以将技术级、重层级和可转换级视为全堆栈的初级、中级和高级。但我们需要承认的是,我们都是初级和中级开发人员。全堆栈开发人员的实力取决于所有层的累积经验水平,每一层都可以通过开发人员能力的五个方面进行评估。
可以肯定的是,成为一名真正称职的、层次分明的全栈开发人员并没有什么错,特别是如果这正是你梦想的工作所要求的。但是,如果你决心尽可能做到全栈,那就列出你的弱点,并在这些层面上延伸你的专业知识,以便努力实现可转移的全栈的区别。
Aphinya Dechalert是一名角度繁重的全栈开发人员,她通过Medium和LinkedIn记录了一系列具有明确结果的学习项目。