您现在的位置是:网站首页>技术百科技术百科

浅谈全栈工程师

小大寒2024-01-01[技术百科]博学多闻

浅谈全栈工程师本文探讨了全栈工程师的定义与发展,强调全栈不仅仅是具备多方面技术能力的工程师,而是在特定环境下具备快速学习并解决问题能力的全能型人才。文章分析了全栈与“全面”以及“全端”的区别,指出虽然全栈工程师具备广阔视野,但不代表可以忽视深度和专精的重要性。

浅谈全栈工程师

尽管目标很大,但人的精力有限。早些时候,我的目标模糊地定为“成功的软件工程师”。然而,随着时间的推移,我逐渐明确了自己的方向和定位。事实上,我认为软件工程师应该具备广泛的能力和工程师文化。工程师的角色不仅仅是掌握技术,还要求每个人都具备独立完成各种任务的能力。

然而,全面性并不意味着没有专长或方向。深度与广度的平衡问题,许多人已经讨论过。一个在某个领域有深厚造诣的人,通常不会是知识贫乏的专家,而一个博学的学者也不应该没有自己擅长的领域。方向的问题更是不可忽视。曾和朋友开玩笑总结过几种工程师的发展方向,像打怪升级一样,有数据库专家、前端专家、语言设计专家、机器学习专家,甚至企业流程咨询专家、敏捷实践专家等。领域划分如此广泛,技能点的分配就显得尤为重要。

当然,我也为自己找到了方向。在这个网站的右上角,我列出了三个关键词,它们大致描述了我当前的定位:

  • #Web#:我一直对这个领域充满兴趣。互联网技术的飞速发展让我感到震撼,尤其是看到许多朋友和专家投身于这个领域,我更是充满憧憬;
  • #JavaEE#:这是我相对熟悉的领域,尽管近年来我接触的技术有了更广泛的扩展;
  • #全栈工程师#:这是我的发展方向之一。大致来说,我已经符合这个标准,但每个人对“全栈”的理解各有不同,这里我想分享一下我的看法。

其他人的理解

关于全栈工程师的定义,虽然存在争议,但大多数工程师都认可其概念。在 Google 搜索“Full Stack Developer”时,第一条记录是 Laurence Gellert(前汤森路透工程师)写的文章《What is a Full Stack Developer》。这篇文章的观点很贴切:

To me, a Full Stack Developer is someone with familiarity in each layer, if not mastery in many and a genuine interest in all software technology.

他列出了“全栈”工程师应该掌握的技术层面,包括服务器、网络、主机环境、数据建模、业务逻辑、API 层、MVC、界面设计、用户体验等。

在 Guru99 的文章中,也给出了一个较为狭义的定义(尽管具体且明确):

A full-stack web developer is a technology expert who can work on both in the front end as well the back-end of any application. The person should be familiar with each layer of a 3-tier model. The 3-tier consists of
The presentation layer (Main front end portion which deals with the user interface),
Business Logic Layer (back-end portion of any application which deals with data validation)
Database Layer

每个人都有自己的看法。例如,一条评论提到了思维方式和学习能力,然而许多观点偏离了“全栈”这一核心话题,转而讨论“理想工程师”这种更为广泛的概念。

全栈工程师的发展

在系统化的大公司中,全栈工程师并没有稳定的发展职位。我非常认同知乎帖子中的一句话:

一个真正的全栈工程师,目标只有一个:创业。

这虽然听起来有些悲凉,但事实却是如此。任何在某个特定领域深耕的工程师,都有机会在该领域赢得一席之地,成为权威或专家。但对于“全栈”而言,很多情况下反而无法带来优势。你可以掌握多种编程语言、设计 API、编写前端代码、开发移动应用,甚至会做图形设计和与用户沟通,但如果这些技能都没有特别深厚的积累,那这些全面性并不能帮助你在大公司获得更好的晋升机会。

然而,创业的小公司则完全不同。在那里,你无法依赖多个角色来完成任务,所有人都必须是全能型的,能解决各种问题,经验丰富,视野开阔。出现问题时,团队中的任何一个人都能解决,而且大家都能互相备份。

这也解释了“学习能力”在全栈工程师中的重要性。毕竟,作为全能型的工程师,难免会遇到自己不熟悉的领域,这时候快速学习并解决问题,正是展现自身价值的关键。

全栈工程师通常拥有更广阔的视野和更广泛的知识,他们能够从更高的角度看待问题,这使得他们比某些领域的专家更少犯错误。

事实上,软件工程本身就是一项复杂的任务,涉及到许多知识点。在我之前的公司,曾经有个尝试——让来自不同子公司的工程师分别负责设计和实现某个项目。最终这个尝试失败了,证明了软件工程的复杂性:它不是流水线式的简单分工,可以通过简单的劳动完成。许多外包公司和内包公司采取类似的模式,但我认为这只不过是对劳动力的剥削,不能创造出伟大的产品。

“全栈” 不等于 “全面”

在英文中,“Full Stack”是一个常用词,意思是“完整的技术栈”,即每个领域都有其对应的技术。然而,这并不等同于“comprehensive”。换句话说,全栈工程师并不等于全面的工程师。虽然涉猎多个领域有其优势,但如果只是停留在入门级别,那所造成的危害可能比完全不懂这些领域更大。比如,你愿意修补一堆糟糕的设计和代码,还是干脆重新做一个呢?当然,极端的做法也不可取,有些领域的知识可以透明,比如使用云服务时,你无需了解硬件细节,这不会影响工作效率。为了追求全栈的名号而去掌握过多的知识储备并没有必要。

“全栈” 不等于 “全端”

全栈工程师的定义远不止“互联网应用”或“互联网网站”这一维度。微博上一些人提到“全栈”时提到“全端”,我认为这是一个误解,二者是完全不同的。前端+后端只是粗略的划分之一。就像同事中,有人专注操作系统,有人精通机器学习,将他们简单地归为“后端”工程师是毫无意义的。即便提到创业,也远不仅仅限于互联网行业。事实上,能够在多个领域有所建树,已经是非常难得的人才。我想不出还有哪个行业像软件行业一样,需要不断扩展自己的知识。

最后,我想用一个简单的词来形容全栈工程师,虽然并不完全准确,但足够直接--格局

阅读完毕,很棒哦!

文章评论

站点信息

  • 网站地址:www.xiaodahan.com
  • 我的QQ: 3306916637