作者 | Ivan Novak
编译 | 徐杰承
你想成为一名全栈工程师吗?在如今这个大兴降本增效的时代,“全栈”似乎被动的成为了大部分开发者的最终归宿。
在一部分人眼中,全栈代表着更快的成长速度、更丰富的岗位选择,更全面的技术栈也能够为晋升管理岗铺平道路。也有一部分人认为,全栈意味着万事通但无一精通,全栈工程师难以具备专业开发人员在特性领域的深厚技术知识,这使得他们在面对一些极致的细节需求时会显得力不从心。
如果此刻你是一位正在迷宫中摸索的开发人员,想弄清楚全栈路径是否适合自己,那么接下来就让我们对全栈工程师进行一次系统的解码。
1、什么是全栈工程师
全栈工程师就像一位多才多艺的艺术家,在画布的两面绘画,每一面都代表软件应用程序的不同方面。
从本质上讲,全栈工程师是精通处理前端(Web 应用程序的可见部分)和后端(服务器、数据库和应用程序基础设施)的开发人员。这也是全栈工程师需要具备的最主要的技术栈。
然而“全栈”一词虽然在传统意义上指的是同时从事前端和后端工作的人,但科技行业不断发展的性质为全栈添加了更多要求。包括处理云服务、DevOps任务,甚至了解 UI/UX 原则。全栈工程师的目标是拥有软件开发过程的整体视图。
需要注意的是,成为一名全栈工程师并不一定意味着掌握这些环节中的每一项技术或工具。相反,全栈工程师需要对每个领域的有足够的理解能力,制定跨越整个 Web 应用程序的解决方案。
根据我的经验,每个全栈工程师无一例外都有自己喜欢的工作领域。即使他们花时间掌握了许多(甚至所有)领域,每个人也会发现其中的一个领域比其他领域更有价值或令他们能够获得更多的成就感。
2、全栈开发的演变
要真正了解全栈工程师的本质和意义,就要追溯这个角色的演变轨迹。全栈开发虽然在当代被广泛定义和采用,但它本质上还是植根于软件开发历史中的角色。
在数字时代的初期,软件开发中的专业角色概念几乎不存在。开发人员经常身兼数职——设计界面、编写代码和管理数据。从本质上讲,他们是最初的全栈开发人员。这种整体方法主要是由于应用程序的简单性和有限的技术堆栈。
然而随着技术的发展和网络变得越来越复杂,软件开发的复杂性也随之增加。开发人员开始缩小关注范围,形成前端开发人员、后端开发人员、数据库管理员等不同的角色。这个时代标志着任务和责任的细分,强调特定领域的深度而非广度。
2010 年左右,转变开始出现。工具、框架和平台的快速扩散与敏捷方法相结合,为全栈开发的复兴铺平了道路。尤其是初创企业,希望开发人员能够快速构建原型并在整个应用程序堆栈中进行迭代。这导致了全栈的复兴——全栈工程师能够制定端到端解决方案、简化开发流程并加速产品上线。
如今,全栈开发不再只是一个流行词,而是一套有形的、有价值的技能。借助云技术、微服务、laC以及不断发展的技术环境,现代全栈开发人员不再关注掌握每项技术,而是更多地关注适应性、解决问题和理解各种组件的相互作用。它是关于在前端和后端、数据和界面、设计和逻辑之间建立桥梁。
3、全栈的优势和劣势
一头扎进全栈开发的广阔世界既令人兴奋又令人畏惧。就像任何职业选择一样,全栈也有着自身的优势和挑战。
优势方面,全栈开发人员既可以创建时尚、交互式的前端,也可以构建强大、高效的后端。这种双重专业知识使他们能为许多团队提供帮助,特别是在更需要多功能角色的初创公司或小型公司中。
其次,凭借整体经验,全栈开发人员可以可视化项目的完整生命周期。这种整体视角有助于做出有利于项目的明智决策。
与此同时,全栈开发人员通常拥有更广泛的工作机会。无论是深入研究后端解决方案还是制作更完美的用户界面,他们的技能都非常丰富,对各种雇主都有吸引力。
最后,掌握整个 Web 应用程序结构通常意味着全栈开发人员可以更有效地解决问题。全栈开发的不同需求也能够促进开发者持续学习,使角色能够保持一种长期的进步状态。
劣势方面,随着技术工具和框架的快速发展,有时全栈所需知识的广度可能会以牺牲某一领域的深度为代价。虽然全栈开发人员在各个领域都有技能,但他们很难具备专业开发人员在特定领域的深厚专业知识,对于需要特定领域深厚技术实力的项目来说,这会是一个限制。
而雇主或团队成员有时可能会有不切实际的期望,假设全栈开发人员可以无缝处理他们遇到的任何任务,从而导致潜在的偏差。
在整个堆栈中兼顾职责也可能会导致工作时间延长和工作量增加,如果不加以管理,可能会导致更快的倦怠。此外,持续为前端和后端解决方案做出选择可能会导致决策疲劳,随着时间的推移会影响选择的质量。
4、全栈适合你吗
决定全栈途径是否适合您的职业生涯不仅仅是权衡利弊,还需要反思、了解自己的优势、目标以及工作环境。在考虑全栈之旅时,需要着重思考以下几点。
首先是个人优势和偏好,以及对整个技术领域的好奇心。你需要确定自己是否对前端设计的艺术技巧和后端算法的逻辑严谨性都感兴趣,如果你发现开发范围的两端对你都很有吸引力,那么全栈可能是一个正确的选择。
其次是适应性及解决问题的心态。行业不断发展,一名全栈开发人员需要具有适应能力,愿意学习和忘却,并在不同的任务和技术之间进行转换。全栈开发人员通常需要解决跨层的问题。如果你喜欢整体解决问题并追根溯源,那么这可能是适合你的道路。
第三是职业理想,你是否有创业抱负。如果你渴望创办自己的科技企业或加入初创公司,那么拥有全栈技能将是无价的。它能提供广阔的视野和自力更生的能力,将数字产品变为现实。并且全栈背景可以为技术主管或CTO等角色铺平道路,对技术堆栈的全面了解是有益的。
当然,你所在企业的属性,对于你是否应该选择全栈之路也将起到重要的影响。初创公司和小公司通常重视全栈开发人员的多功能性。然而大型企业则更希望拥有精通专业技能的角色。
虽然协作是每个开发人员生活的一部分,但考虑到全栈开发人员的多方面技能,全栈工程师会发现自己在某些环境中处于更加自主的角色。这可能会影响到你对深度协作的重视程度,并阻碍你对于协作的热情。
5、全栈or专业化
你可能会发现自己正处于十字路口——追求广阔的全栈还是深入研究专业领域。以下是一些总结性的观点,可以帮助指导你的想法。
请记住,科技行业是动态的。就在此时此刻,前端、后端甚至全栈之间的界限正在不断演变。今天的基本技术明天可能就会过时,反之亦然。因此,选择不应仅仅基于市场趋势,而应结合激情、技能和长期目标。
在深度和广度之间取得平衡至关重要。虽然全栈开发人员可能拥有广泛的技能,但在职业生涯的某个阶段深入研究特定领域可能是无价的,例如今天的AI。同样,某些特定领域专家也可能会从偶尔拓宽视野中受益。这两条路其实没有优劣之分——关键是要找到与你的目标产生共鸣的节奏。
无论你倾向于哪个方向,全栈还是专业化,成功的基石仍然是持续学习。工具、语言和框架可能会发生变化,但以好奇心和适应性为基础的心态将永远是你的北极星。
最后,你的职业生涯是非常个人化的。它由你的经验、挑战、成就以及你所创造的的独特价值编织而成。无论你选择全栈、前端、后端或是其他领域,你的选择都会成为自己未来的催化剂。此刻,全栈or专业化?答案就在你自己的内心。
原文链接:https://hackernoon.com/the-jack-of-all-trades-of-software-development-decoding-the-full-stack-engineer