请问我要做全栈程序员么?听说更厉害更赚钱?
用我的亲身经历,彻底打消你对全栈程序员的疑问和误解
大家好,我是鱼皮,我相信学编程的朋友都经常听到 “全栈” 这样一个词,但是你了解什么是全栈么?
我之前在网上看到太多有关全栈程序员的疑问了,甚至还有不少的误解。那作为一名兴趣驱动的全栈程序员,我不能忍,赶紧整理了最常见的 十个问题 ,逐一回答,完成了这篇拙作,希望能消除大家对全栈的疑问和误解。
1. 什么是全栈工程师?
有些同学可能还不知道全栈是什么,先介绍一下。
现在的程序员有很多方向,前端开发、后端开发、测试、算法等。其中,以前端和后端最为流行。
顾名思义,前端就是在前面的、用户能看到和使用的界面。前端程序员就是写这些界面,并且研究如何更高效地写出更美观、更稳定、体验更好、性能更高的页面。
后端就是躲在后面,帮前端保存和处理数据,默默提供服务的工具人。后端程序员就是通过设计和编写逻辑代码来实现功能,并且研究如何让功能更可用、更稳定、更迅速、更低成本、支持更多人同时用等。
而全栈程序员就是全干,前端、后端、甚至是测试等等啥都能干,一个人就能独立完成整个产品!
嗯,我们有个想法,就缺一个全栈程序员了。
2. 全栈比其他开发更厉害?
每次跟别人提到我的职业时,别人一听,卧槽全栈?这么牛逼!好像全栈程序员就比前端、后端程序员要厉害的样子。
其实并没有 ,每个人的学习时间都是有限的,全栈程序员只不过是把时间分成几份,又学前端又学后端,可能还学点儿产品啥的。这样做难免精力会分散,在知识的学习深度上通常比不过一门心思做前端或后端的同学。
那为什么会给大家一种全栈更厉害的错觉呢?
我觉得主要是以下两点原因:
全栈程序员相对稀有,物以稀为贵。
当你朝着一个方向学习时,学的越深,进步就会越难,带来的提升通常越不明显。就比如说前端吧,刚开始学习写页面、美化样式时,每学习一个新语法都能让网页更丰富。但等你学到后期,比如性能优化,把页面加载时间从 3 秒变成 2 秒,稍微一点点优化可能就需要很大的研究,但在普通用户看来,基本和原来没啥两样。当你深入研究完这些,别人可能已经把后台框架都学完了。
3. 全栈程序员的工资更高?
当然不是!
和上一点一样,每个人的时间精力都是有限的,不是说你前后端都会写点儿,就能 1 个人顶替 2 个人的工作,老板就给你开更高的工资。工资是由很多因素共同决定的,比如公司、部门、岗位、地域、级别等,当然更重要的是你的个人能力。
就拿我自己来说,虽然我是全栈,但和其他鹅厂同级的小伙伴比起来,工资不会有太大区别,而且前端和后端的薪资也都是有统一标准的,这一点在校招薪水小程序上就能看到。
4. 全栈的工作量更大?加班更多?
当然不是!
还是那句话,你就一个人,学到的知识有限,每天的时间也有限,老板就算是再省成本也不可能让你干两份活,除非他无良并且不考虑项目的上线时间。
但是呢,全栈程序员干的活可能会相对 “杂” 一些,就是因为你啥都能写点,所以老板在人员调度时会优先考虑你。
以我自己为例,隔壁组哪个项目前端缺人手啦!好,我来干。哪个项目缺后端啦!好,我来干。这个项目前端忙不过来了,你干脆一起把前后端都做了吧!好,我特么。
虽然看起来好像啥都做,工作量肯定不小。但是全栈程序员负责工作通常更偏向业务,而不是架构,难度和专业性上要比在某一个领域深入钻研的同学要小一些。
至于是否加班,除了工作分配之外,还是要看自己的工作方法和效率吧。
5. 全栈程序员更好找工作?
恰恰相反!
首先,很多有规模的公司是不招全栈程序员的,岗位更少。毕竟又不能干两份活,为啥不招个更专业的前端和后端打配合呢?
而且,不是说你前端、后端都会点儿就能同时去找前端和后端的工作了。前端和后端在面试中虽然有一些交叉重合的地方,比如计算机基础知识,但是侧重点完全不同!想要兼顾的后果往往就是会越来越迷茫,到最后哪个方向都会翻车。
当然,创业公司是比较喜欢全栈的,毕竟省成本啊!
此外,我们腾讯也有全栈开发方向,对前端和后端都有一定要求,不同的部门也会有不同的侧重点。
6. 全栈程序员每天都做什么?
全栈也是开发岗的一种,还能做啥特别的呢,每天也就是跟产品姐姐友好交流、然后设计方案、敲敲代码、改改 bug,顺便掉几根头发什么的。
7. 做全栈程序员有什么好处?
从我自己的工作经历来说,如果你是全栈程序员,可能一个需求来了,前端后端都让你一个人来做,这样你就不用去跟其他程序员 “友好” 交流,能够减少沟通成本。还有更多自己设计和发挥的空间,一个逻辑放在前端还是后端来写、怎么做更方便合理,都由你自己决定。这样能够加深你对整个业务和对系统架构的理解,在跟产品或其他同学讨论时,有更多的话语权。
还有,假如跟别人合作时,一个前端跟你说:哎呀这块前端实现比较麻烦,交给你后端来做吧。如果你不了解前端,可能就真的以为前端做很麻烦,就把本应该前端写的代码自己扛下来了。但如果你前端后端都会,就能帮他想到更合理或更方便的实现方式,发现根本没他说的那么复杂,可能只是自己不想干,在忽悠你、想甩活而已。
这样一来,不仅没有增加你的工作量,还能提升你们的协作效率,推进项目向更合理的架构设计发展。
此外,全栈程序员在学习过程中,接受的知识更广泛,再加上编程的很多知识点相互是有关联的,所以他们学习新知识时,比如技术框架,有些一看就能联想到自己学过的知识,从而更快接受和理解,甚至说给个文档上手就能写。
8. 我应该成为做全栈么?
我想起来之前,网上有人说学前端好,大家就说了:我要学前端!又有人说后端好,大家就又说了:我要学后端!
就导致很多朋友纠结啊,我特么到底学啥呢?
那我是一名全栈工程师,给大家解释了全栈后,不知道大家会不会有这个想法:既然当全栈程序员有这么多好处,那我也要做全栈!而且前端和后端我两个都学,不就不用纠结了?
千万别这么想!前端学不会,后端学就废,一个方向你都学不好呢,还想学多个方向?
是否要成为全栈程序员取决于你的个人兴趣和时间,而不要跟风,不要因为网上都说全栈啥都学、就是牛逼,你就也跟着信了,结果啥都学了一点,分散了有限的时间精力;再加上还不一定有兴趣,就导致啥都没学好。
当然,如果对其他技术有兴趣,可以多学一点,但是,必须要 确定一个深入学习的方向 。毕竟大多数人学编程就是为了找个好工作、多赚钱,别人把所有的时间投入到了一门技术上,你拿什么去和他们竞争同一岗位呢?
就拿我自己来说,我在刚接触编程时,我第一次听到了 ”全栈开发“ 这个词,当时我啥都不懂,但不知道为啥,听到 ”全栈“ 就感觉很厉害的丫子,然后就励志要做全栈程序员儿。于是大学刚开始啥都学:前端、Java 后端、Python、C++、爬虫等等,我自以为学的很多了,但是大二暑假找实习时才发现,根本没有公司需要你会这么多不同方向的技术!并且我每门技术的水平都很菜,虽然能写出代码,但是远远不够面试的要求。
所以在那之后,我就重点学习 Java 后端,之后的实习和校园招聘求职时也是以 Java 后端方向为主,这才帮助我通过面试,拿到了大厂的 offer。这个期间,我也出于兴趣学了很多其他的知识,但都是为了提升我的后端开发水平而服务的,比如网络、云计算等;之前重点学习的前端也稍微放缓了节奏,更多的是把它当成展示我后端开发效果的工具。
至于为啥我现在的岗位是全栈呢?其实纯属巧合,我面试的是后台开发,后来到了公司才发现竟然是全栈方向,而且啥都干。不过这也和我自己之前持续学习各个方向的知识有关,在工作之后,我也依然是兴趣驱动,深入学习 Java 的同时了解各方向知识,不断扩大自己的视野,持续进步。
短期来看,我建议大家确定一个方向,可以追求技术的多样性和广度,但那些都要以你的主方向能学好为前提。贪多嚼不烂,也没必要给自己太大的压力。
但长期来看,我认为 每个人都应该做全栈程序员 !想要成为技术 Leader,你的知识面就要更广,视野和格局才能更大。像我现在的 Leader 就是,前端、后端、算法、产品,都能有自己独特的见解(要不然手下人偷懒忽悠咋办)。当然,这个需要时间去积累,也不用每个方向都学得很深,但多学一点总是好的。
9. 成为全栈程序员会更难么?
我一个方向都还学不好呢,全栈要同时会前端和后端,肯定很难吧!
其实不然,像上面说的,你可以先专注于一个方向。当你在一个方向学的很深入后,其实自己也已经积累了一套学习方法,也对网上的信息有了辨识度,这时你再去学其他的方向,就会轻松不少。
10. 如何成为一名全栈工程师?
当时我阅读了不少全栈书籍,比如《全栈工程师的自我修养》。
看着了么多,我认为最重要的是:兴趣 + 实践 + 积累 + 延迟满足 + 持续学习。
没有兴趣,学什么都会很累,所以要找到自己编程的乐趣所在。
没有实践,都是理论知识,像学英语一样,能看懂也能写,但是不会说,就缺失了学编程的意义 —— 技术是要为了业务服务的。
没有积累,学了就忘,学了前端忘了后端,学了后端忘了前端,怎么成为全栈呢?
没有延迟满足感,在你找到工作之后,很容易安于现状,直接躺平,怎么还会想到去学新的方向呢?
当然,最重要的是持续学习,哪怕没有时间去学新的方向,也可以通过一些公众号、技术博客、RSS 等了解其他的知识。
比如关注我的公众号【程序员鱼皮】,我自己就是一名全栈程序员,也会给大家分享各种方向的编程学习经验和技术,希望在潜移默化间帮助大家都能成为全栈工程师!
相信自己有能力,那么你就真的会有!
我是鱼皮,原创不易,如果觉得文章还不错的话,希望朋友们 点赞 支持下,给俺点创作动力。
最近还在开发我的 编程导航( https://www.code-nav.cn ),一个帮大家找编程资源的项目,欢迎使用!
我是如何在大学期间通过自学,拿到腾讯、字节等大厂 offer 的,可以看这篇文章,不再迷茫!
评论