导读:

一提起“全栈开发工程师”,大家的印象肯定是:这号人啊,堪称大神!会很多技术,前端后端都精通,不掌握七八种语言都不好意思出来打招呼,热点技术名词全都知道,也都会点儿;但是呢,单拿出某一项没有一个能称得上精通的,知识面广则广矣,但没有一个精通的。现在还有些人觉得,全栈开发工程师代表了超高的战斗力,什么都会的“Superman”。但是别忘了老祖宗的教导:术业有专攻。成为全栈开发工程师真的应该是我们的目标吗?让我们来看看 Artur Martsinkovskyi 是怎么说的,希望能给读者带来一些启迪!

我除了是个 Ruby 开发人员外,还是个全栈 Web 开发工程师。但是,我已经厌倦了成为这样的角色,有时候,让我从事业务分析师和手动测试工程师的工作,也会令我倍感厌倦。随着时间的推移,这一行业正在越来越深地陷入了以开发人员为中心的工程流程,不知不觉花掉了很多时间;而开发人员一人则承担了越来越多的责任。

很久之前:史前互联网

很久很久以前,就已经有 DBA(数据库管理员)了。而现在你在小隔间里很难再找到这样的数据库管理人员了。如果你在Indeed.com(全球领先的招聘网站)搜索“fullstack web developer”(全栈 Web 开发工程师),会得到 7000 多个结果,而如果你搜索“Web developer”(Web 开发工程师)则得到 40000 个结果。用户体验工程师和前端开发工程师的两个不同的独立角色也正在慢慢地融合在一起,前提是他们在工作本质上是相同的。越来越多的机构正在物色既能做前端又能做后端,还能参与业务需求开发、编写单元和集成测试的全能大神,要求他无所不能,什么都能干。

消减成本,剩下的都拿走

乍一看,这似乎是个好主意,如果一个人知晓他的需求,完成了从白纸开始到发布所需的一切功能,并控制了整个过程。这对企业来说更为容易:你需要与一个人进行核实,并且开发过程不会因为“这块应由谁来做”的问题而变得过于复杂,还可以降低成本,从而在质量和开发时间上取得一些折衷。而且,由于他们经历了整个过程,而不是从前任留下的工作开始,因此交流和语境转换也不会给他们带来什么影响,这看上去似乎是一个很好的增强做法……如果你对那些专业人员一无所知,那你就会把这些专业人员的角色都塞到一个人身上。

我目前是在职前端开发,如果你现在也想学习前端开发技术,在入门学习前端的过程当中有遇见任何关于学习方法,
学习路线,学习效率等方面的问题,你都可以申请加入我的前端学习交流裙:前面:851 中间:231 最后:348。
里面聚集了一些正在自学前端的初学者裙文件里面也有我做前端技术这段时间整理的一些前端学习手册,
前端面试题,前端开发工具,PDF文档书籍教程,需要的话都可以自行来获取下载。

反击复杂性

后端开发是一个非常复杂的领域,涵盖了对网络层、服务器整体工作的方式、部署、AWS/Google/Azure 服务(它们对现代 Web 应用至关重要)、服务器应用程序语言和框架的细节、使用的协议、身份验证、数据库连接和设置以及许多其他内容的理解。前端则包括掌握扎实的 Web 标准、特定浏览器的怪癖和奇异之处、ES5、ES6、css、html、框架、预处理器、转译器、构建工具、用户体验、用户界面、浏览器视角的网络、浏览器存储的知识,有时甚至还包括与 Flutter、Ionic 和 react Native 有关的移动应用的细节。不要让我讨论业务分析师和测试工程师的角色,因为对我来说这俩是完全不同的领域。
每个角色都有自己的学习曲线和需要掌握的基本技能。你不能奢望一个人只阅读几篇文章或者一本书,编写一个应用程序示例,然后就可以给你带来好结果。但你要知道,结果总是不尽如人意。如果你雇佣了全栈 Web 开发工程师,那么你就不会同时雇佣相当于两个半职专家的人员,而是会同时雇佣一个熟练的工程师和一个不熟练的工程师(在最好的情况下,你也可以得到相当于两个还说得过去的半职开发工程师)。即使在一个领域,也需要投入和动力,以保持相关性和卓越性,而不是投入两个或更多的领域上。因为时间是有限的。除非你放弃了自己的个人生活和时间,否则你不可能会取得文体两开花的成功。

广度还是深度?

千万不要误解我的意思,我的本意是说,我认为拓宽知识面,运用对你所负责的部分的理解来更好地完成你所负责的部分,还是有好处的,但要让开发人员成为这样的一个人:对各种领域样样都懂但无一精通,如此一来,会直接影响代码质量、解决方案的选择以及所开发项目的未来。要知道我们的大脑空间是有限的,但我们可以对一个或几个领域的更深、更好的知识来填充它,或者开始汲取多个领域的信息,结果得到的就是对所有事物都是肤浅的了解。这种知识体系创造了信心泡沫,不幸的是,这种信心并不能证明自己的正确性,结果导致了更槽糕的解决方案,如重新发明轮子、错误的技术选型、用显微镜敲钉子。

并非所有成本消减都是有益的

全栈很有趣,因为它似乎是软件工程领域的独特之处。其他领域大多都有分工,你不能指望牙医能够治愈你的心脏病,也不能指望神经外科医生来治愈你的痔疮。全栈应用于软件工程的原因,似乎是因为这一领域的虚拟性和故障安全特性。你的代码质量并不会直接影响用户可见的结果,因此,你大可以在系统崩溃之前,长期使用补丁解决方案进行修补(通常是你不在时经常会出现这种情况)。此外,这种想法在金钱支出的直观层面上来看似乎颇有吸引力,雇佣具有更广泛技能的人(无论人才质量如何),看起来可能会让人觉得,以同样的成本能够做更多的事情,真是美滋滋。

我们得到的是一些平庸的解决方案,这些解决方案都是由那些在特定领域没有足够专业知识,无法发现更好方法的人创建的,他们所掌握的知识都比较粗浅,略知一二,他们的知识体系都是一堆复制粘贴的答案。我们要让那些故步自封的人必须跟上如此多的主题。我们雇来的专业人员并没有创造出什么令人惊叹的东西,因为他们没有足够的时间来为这个领域创造一些价值。我们以较低的开发成本进行开发,得到的是不合格的产品,这一状况在出现 Bug 和客户流失后就会逐渐消失。由于这些问题,项目以这种开发方式进行开发时将不可避免地会遇到。从短期经济角度来看,雇佣全栈开发工程师可能是值得的,但长期来看,它对整个行业和我们建设的项目来说都是有害的。

我放弃了成为一个全栈开发工程师的理想相关推荐

  1. 一个全栈开发工程师的职业规划

    持续更新中 2023年3月3日: 因为部门项目所使用的是asp.net和c#做前后端开发,而且开发模式是小作坊按需开发,主要工作都由后端实现,我作为一个前端开发工程师感到十分无力,因此又萌生了学习后端 ...

  2. 2017年成为全栈开发工程师的权威指南

    http://www.css88.com/archives/7529?utm_source=tuicool&utm_medium=referral 根据 2016年 Stack Overflo ...

  3. 全栈开发工程师修炼指南

    全栈开发工程师是指掌握多种技能,能够独立开发应用程序的前端和后端以及数据库工作的开发人员.前端通常是指用户在应用程序中能看到或交互的部分,后端是应用程序中处理业务逻辑,数据库交互,用户认证,服务端配置 ...

  4. 程序员:如何成为一个全栈的工程师?

    全栈工程师,英文 Full Stack developer,是指那些掌握多种技能,并能利用多种技能独立完成产品的人.当然,现在「全栈工程师」很吃香,非常吃香!这是因为在移动互联网时代,IT 系统变得愈 ...

  5. .NET全栈开发工程师学习路径

    PS:最近一直反复地看博客园以前发布的一条.NET全栈开发工程师的招聘启事,觉得这是我看过最有创意也最朴实的一个招聘启事,更为重要的是它更像是一个技术提纲,能够指引我们的学习和提升,现在转载过来与各位 ...

  6. 全栈开发工程师微信小程序-上(中)

    全栈开发工程师微信小程序-上(中) width: 750rpx; 复制代码 750rpx代表与屏幕等宽,rpx的缩写responsive pixel,这个单位是可以根据屏幕大小进行自适应调整的像素单位 ...

  7. python全栈开发工程师招聘_浅谈Python全栈开发工程师,让程序员都眼红的职业!...

    若把学C/C++难度比作做冰箱设计师,那么Java就是公司做冰箱的工人,而Python就是使用冰箱的客户.这只是难度的比较,那么就有人要说Python肯定很弱了,是真的如此吗? 领域--------流 ...

  8. python全栈开发工程师招聘_如何当一名优雅的Python全栈开发工程师?

    上海达内Python培训好就业吗?这就要看看Python的发展前景了.python前景当然不错,数据分析.机器学习.爬虫.运维.Web,都是很好的方向--那么还有一个问题,Python入门难不难?其实 ...

  9. web全栈开发工程师的趋势、价值

    随着技术的发展.用户量的增加.客户端种类变多,每一个小小的细节都需要优化和考虑.在海量的访问量面前,也许改变一个按钮的位置和颜色就能影响上千万次的用户体验.如今的互联网产品已不是以一己之力就可以完成的 ...

最新文章

  1. 将svn设置开机启动linux,ubuntu安装SVN并设置开机启动
  2. 每天一道LeetCode-----两个有序数组合并后的第K个数
  3. setsockopt函数全面解析
  4. halcon圆环完整度检测
  5. 求整数的位数及各位数字之和 (15 分)
  6. 三、常用行内元素与块元素
  7. Linux_异常_03_Failed to restart iptables.service: Unit not found.
  8. JAVA经典集合框架学习笔记——HashMap的底层实现原理
  9. python 腾讯视频签到_腾讯视频自动签到脚本.
  10. 一维优化黄金分割法c语言程序,机械优化设计黄金分割法.doc
  11. input限制小数位数
  12. wordpress插件_2020年5个最佳WordPress电子商务插件比较
  13. 微信小程序 评论功能实现
  14. 逻辑左移、算术左移、逻辑右移、算术右移
  15. js生成html转换成图片保存,js将html生成为图片,并保存在本地
  16. 计算机表格怎么加减乘除,在EX表格里怎么进行加减乘除法的计算
  17. 大数据体系的4个热点,4个趋势和3个疑问
  18. 可解释性神经网络——1.xNN
  19. 前端必须要懂的浏览器缓存机制
  20. 微信小程序:王者荣耀改名神器

热门文章

  1. 各种挖洞,不要太惊讶!皮皮就是这么NB!
  2. 母牛生母牛,母牛生小牛。。。
  3. FPGA AD_TLC549 芯片开发 学习笔记
  4. wps 宏编辑表头自动偏移
  5. 如何使用VS2005编译 转
  6. 从零开始自制实现正则引擎 全流程记录
  7. qt调用海康工业相机踩坑全纪录
  8. [rospack] Warning: error while crawling /home/neko: boost::filesystem::status:Permission denied:
  9. Warning: error while crawling ~: boost::filesystem::status: Permission denied: ~/.gvfs
  10. 二维码生成代码(Java)