极客时间已完结课程限时免费阅读

开篇词 | 从成长角度看,为什么你应该成为全栈工程师?

开篇词 | 从成长角度看,为什么你应该成为全栈工程师?-极客时间

开篇词 | 从成长角度看,为什么你应该成为全栈工程师?

讲述:四火

时长11:00大小10.07M

你好,我是软件工程师熊燚,网上大家都叫我四火,很高兴在这个专栏和你见面。
先介绍下我自己。最早我在华为工作,曾是华为某大型视频门户和视频平台的初创人员,也是一名不折不扣的长期看护其基线版本的全栈工程师,这段经历其实为我的全栈技能打下了一个很好的基础。
后来我加入了亚马逊(Amazon),负责数千万商品销量预测系统和成本利润计算平台的研发,从 0 到 1 重新设计并开发了数据分析和可视化系统,还维护和优化过数据分发的高可用服务,也改进过核算平台的分布式计算架构和工作流引擎,这些多领域的工作让我快速成长,并积累了大量的宝贵经验。
现在,我在西雅图甲骨文(Oracle)的云计算部门就职,职位是首席软件工程师,主要负责研发云基础设施的分布式工作流引擎。
入行这十来年,从前端页面到后端服务,从大小网站到分布式系统,从数据分析处理到可视化,从设计开发到线上运维,我都参与过,并带领团队攻克了很多大的项目堡垒,也以全栈工程师的身份上线了不少核心业务产品。
可以说,我是一名全栈工程的实践者,也是一名程序员综合发展的信奉者,还是一名工程师文化的鼓吹者,有一个建立了很长时间的独立博客“四火的唠叨”。
那提到全栈工程师,你可能第一时间会想到 “全能”“大神”这些词语,也可能听到过其他人对它或褒或贬的评价。那么,究竟该怎么恰如其分地认识这个角色呢?我想和你说说我的看法。
软件工程的范畴里,人类创造了大量的概念和术语,绝大多数都清晰而精确,但“全栈工程师”却是个反例。在互联网出现以前,甚至在客户端和服务端模式出现以前,大多数的程序员,就已经是一定意义上的“全栈”了,他们往往涉足硬件、软件,完成程序从开始到终结各个阶段的工作。
千禧年之后,Web,特别是 Ajax 等前端技术迅猛发展,而技术的进步就自然而然地带来了分工,于是有人负责前端,有人负责后端,甚至划分得更细,此时能够做两头事情的人,才显得更加珍贵。因此,我认为 Web 技术的发展和自然而然引发的分工才是全栈工程师出现的最重要的因素
2008 年,在 forge38 上面出现了一篇题目为“Full Stack Web Developers”的文章,被认为是最早提及这个概念的媒体之一。
文中是这样说的:
A full stack web developer is someone that does design, markup, styling, behavior, and programming.
大概意思就是说,一个全栈的 web 开发者,会负责设计、标记、样式、行为和编程这些全部的事情。
虽然从现在的眼光看,这个概念的解释似乎有些古老而片面 ,可从上面的历史文字中足以看出,为什么当我们提及全栈,往往总是基于“Web”,而非其他领域了。
到了今天,全栈工程师已经变成了一个有些被滥用的概念,不同人有着天差地别的理解。
我认为,首先必须明确的是,“全栈”不是“全能”,当然,在这个标准下我们依然可以将全栈理解为“广义”的全栈和“狭义”的全栈。显然前者的包容性和不确定性过大,我觉得只有后者才有更实际的讨论价值,并且,广泛的 Web 技术才是一名通常意义上的全栈工程师最该专注的核心内容,而此处的 Web 技术,包括网络、前端、后端 MVC、持久化技术等多个层次。
那从成长角度看,为什么我说你应该成为全栈工程师呢?
和其他软件工程师发展的路线相比,除了通用工程师的技能以外,我认为基于 Web 的全栈技术是一种非常适合用来进一步发展和修炼的技能树,和其它的技术类别比起来,它至少有下面这样几个明显的优势。

关于个人发展

首先,互联网是全栈概念的诞生地,也是软件领域最激动人心的产品和技术的诞生地,这是传统软件所无法比拟的。这些互联网的全栈工程师,每天都在接收新的资讯,每天都“不得不”和这些全新的技术理念搏斗,他们拥有着和这些产品与技术最近距离访问、全面接触和深入研究的机会。你可能很难预测下一波互联网的技术浪潮什么时候到来,技术主角又是谁,但全栈技术是可以帮你打好基础,做好随时拥抱它的准备的。
其次,可以掌握能够快速获得反馈的学习方法,这对于保持持续学习的动力和热情很有助益。比如说,几行 HTML 代码就可以马上看到效果,简单安装和配置,就可以搭建一个健壮的 Web 服务,对当前浏览器即时的标签、脚本、样式修改,立即就能看到变化。
再次,全栈技术的学习之路上有很多纷繁精彩的“套路”,而它们可以应用在软件工程的其它领域。可以说,全栈技术中,有太多能帮助程序员开启新世界大门的东西了,比如 JavaScript 的异步编程,比如各种数据、模板和逻辑的解耦和分层,再比如说持久层技术里面的读写模型分析。
最后,必然是视野的拓展。工程师的成长过程中,在早、中期可以利用全栈技术拓宽视野,并养成思考的习惯。最终也许我们需要“学得精”,但是一开始我们一定要“学得杂”。只有在广度上有足够的积累,足够的内容去比较,才能养成思考的习惯,拥有更全面地看待问题的视野。
拿我自己来说,工作以来我花了很多时间去做一些不同领域的项目,比如我现在的工作是研发一个分布式工作流引擎,从 Web 全栈技术上学到的东西,是能够帮助我快速上手这些技术的。同时,理解它们的本质,也能拓宽分析和解决问题的思路。毕竟,在软件领域,技术都是相通的。

关于就业和创业

首先,全栈工程师本身就拥有多技能、多角色。团队非常欢迎这样的人,因为当一个人可以扮演多个人的角色,就减少了沟通和配合的损耗,提高了效率。出了问题,从客户端到服务端,对多个层面都有所了解的全栈工程师可以更高效地分析和定位问题。这个世界需要专家,但我觉得更需要通晓各个层面知识,能够快速解决问题的人。
其次,全栈工程师是创业的最佳技术角色。有了创意和点子,全栈工程师就可以快速地开发原型,迅速实现第一个版本,并能马上提供优质的宣传推广和用户体验。不要小看这一点,在很多情况下,全栈工程师不需要其它额外的协助,自己就可以很快地将想法变现
再次,全栈工程师拥有最多的就业机会。有朋友半开玩笑说,你知道世界上什么类型的应用最多见吗?网站!各式各样的网站,内部的管理系统、报表系统、论坛、博客,但无论是哪种类型,它们都是全栈工程师最熟悉的东西。你可能耳闻过著名的 Facebook 只招全栈工程师这样听起来似乎有些“极端”的故事,可事实上,几乎所有的互联网大型公司,都会招聘大量的全栈工程师。
(上图来自 HackerRank,报告原引用于 HackerRank 2018 Developer Skills Report,在开发者评价自己角色的时候,最多的人投票给了“全栈开发者”。)
最后,不妨考虑下未来的职业延伸。有了全栈工程师的底子,未来面对软件行业进一步细化,选择其它细分职业时,会因为有了全面而扎实的基础而更有利。
举例来说,假如你做过一段时间的前端程序员,那往往对用户交互设计是有一定的心得的,我有朋友就是从一个擅长前端的全栈程序员转行做了产品经理;而在 MVC 部分学习的分层和解耦经验,持久层部分积攒的那些对于一致性、可用性的理解,对于将来想投身于分布式系统设计开发的程序员朋友会很有帮助。
我认为对于大多数程序员来说,全栈工程师这个职位对于自己的发展而言,是个非常好的进阶方向。而基于 Web 的全栈技术学习,充满必要性,无论你今后是否志在互联网,无论你的远期目标是在哪个软件领域。
最后,我想认识一下你。你可以在留言区中做个自我介绍,说说你现在的工作、学习情况。或是说说你眼中的全栈工程师是怎样的?你认为应该具备怎样的特质,才能成为全栈工程师呢?欢迎你在留言区和我交流。
分享给需要的人,Ta购买本课程,你将得18
生成海报并分享

赞 13

提建议

下一篇
学习路径 | 怎样成为一名优秀的全栈工程师?
 写留言

精选留言(44)

  • 而立斋
    置顶
    2019-09-09
    作为一个八0后,我不怕别人嘲笑我能力低下,从事行业传统,技术栈陈旧。这些都是我前进道路上的动力,我希望自己知识面很广,对技术的钻研很深,最重要的是有自己的理解跟体系。到了这个年纪,不奢望轰轰烈烈,只希望脚踏实地,学多少会多少,会多少用多少。这就是我的全栈梦,老师见笑

    作者回复: 技术栈确实有新有旧,但是很多技术的本质都是一样的,新的技术都是由某些旧的技术演进而来的,而有很多基础知识都是几十年也没有大的变化的。所以请不要觉得旧的技术栈就“无用”。在专栏中你也会看到技术之间大量的类比和联系。技术的学习没有任何可笑之处,加油!

    共 2 条评论
    42
  • leslie
    置顶
    2019-09-09
    全栈:我记得Google的SRE 就是类似的概念;完全的80后,早年开发出身,早年的中后期工作需要开发兼数据库,中期在基本上算是数据库兼系统运维或系统运维兼数据库,这个角色干了超过5年,MYSQL和Oracle的OCP;职场工作10余年的老兵。 目前回到二线城市原本是准备继续之前的职业平谈下去,理想很美好现实很残酷;去年某个DBA圈子的老友又刚好把极客时间推荐给我了,学了赵成老师的运维体系,二叉树视频陈皓老师的跳出金融业的行动引发了反思;目前在本地的某互联网企业主要负责数据库和linux系统相关的性能维护和优化。 全栈这个词我是在Google SRE这本书看到的:DepOps其实同样是全栈,这本书中强调运维开发其实不分家,其实这就是一种全栈;故而我非常想从老师的课程中去学习和明白道理的修正/调整,以便能够够好的走好后面的路。
    展开

    作者回复: 很棒的回复。 我特别想回复一下运维开发不分家这一点。其实不只是 Google 的 SRE,太多大型互联网公司都崇尚小团队 + 服务自治了。工程师需要 oncall,解线上问题,通过运维的快乐和痛苦反哺开发(“吃自己的狗食”这一说法就指的是这个)。这种环境下工程师就要一专多能,在亚马逊对 SDE - Software Development Engineer 有一个“戏谑”的解释,叫做 Someone Does Everything。这方面我在专栏中会有展开介绍。

    10
  • Brave
    2019-09-14
    四火老师您好,看到您的专栏很有感触,我先做个介绍,男31,工作8年,坐标天津,自我评价是一个技术狂热的人,每天工作到夜里2,3点很正常,目标做全栈工程师(主后台全栈),最早在北京做ABAP+JAVA,后来赶上移动互联网android回天津,再后来由于跨平台对原生的冲击,跳槽混合APP医药电商公司,同时H5+CSS+JS+JQuery+Bootstrap+移动框架都补了起来,再后来由于APP需求减少转了JAVA后台,Spring,SpringMVC,SpringBoot,SpringCloud各种全家桶,Spring源码和底层实现,中间件等都搞了起来,前端部分:Angular+Ionic,Vue全家桶,React全家桶(无实战),NodeJS,微信部分:微信公众号,小程序,JSSDK也都深入学习实战过,去年年底到今年做了基于Vue的前端工程化,过程中阅读了很多源码,webpack优化,写了一些便于前后端协作的插件和工具,说到这里我的优势和劣势基本都体现出来了,我可以胜任多个开发岗位,项目紧张时前后端可以一起搞省去了很多沟通设计成本,熟悉前后端技术栈能够用最简单方法做收益最大的方案,能够快速学习新语言新技能,缺点就是技术栈太多,带来的学习压力,每个领域都希望能做精,不满足仅仅是会了能写的状态,"自杀式"的学习方式让我身心俱疲,我也阅读了很多时间管理,精力管理的书籍,如番茄工作法,确实有了很大改善,但目前我依然面临着一个巨大的问题:即便我能够平衡好作息,能够兼顾几个重要技术分支进行深入学习,但始终没有办法同时应用起来,就会造成遗忘,对于这个问题,我目前只能对各个部分做笔记写博客,加深理解认识,减少二次学习的成本,我觉得全栈的思想很重要,而不应该是什么都会,我需要裁剪掉哪些技术栈?四火老师是否也有过同样的困惑,能否指点一下?
    展开

    作者回复: 你好 Brave! 从你的描述我确实你感受到你对技术的“狂热”,你接触了非常多的技术,首先,我希望你更能把它视之为你的优点,而不是“累赘”,要知道并没有多少人能像你一样拥有这么全面的经历的,这是你的财富。接着,对于你的困惑,我有这样几个建议: 1. 把书读厚之后,要把书读薄。也就是说,要多做一些归纳和整理,寻找这些技术之间的联系,把握住技术的本质,而不是机械记忆。事实上,有许多记忆性质的知识,并没有那么重要,需要的时候搜索和查看文档就可以了。 2. 你可以逐步明确下自己想着重的领域和方向了,全栈当然是一个方向,但是全栈不是简单地做全面,它也有自己的重点。当然,你可以根据自己的情况来决定。每个领域做精显然是很难的,也不具备可持续性。你不需要“裁剪”掉任何部分,但是,你需要把主要的精力专注到你较少的目标上。 3. 最后,仅仅是带有偏向性的个人建议——如果可能的话,因为以你描述的能力,已经超过了大多数人,你完全可以一边夯实基础,多去面试,去开阔眼界(不只是技术上的眼界),然后去尝试挑战一下互联网更高级别的岗位(你有北京的经历,我认为北京的机会远远多过天津,甚至,你也可以考虑北美的互联网公司)。 希望我说的对你有帮助!

    共 3 条评论
    27
  • 笑忘日月星辰
    2019-09-12
    我觉得java全栈应该掌握下边的技能吧: 1. SQL: mysql、oracle、sqlserver, db2, MongoDB, HBase, 人大金仓,神通 1.1 对接过程中需要申请应用id秘钥,解密,存库,加密。 1.2 已有应用对接办公平台,会牵扯到数据初始化,数据迁移。 2. JavaScript, html, css, Ajax, jsp前端技术 2.1 办公桌面负一屏,会牵扯到前端接口的调用,需要用到基本的JS 2.2 平台对接过程中可能会遇到应用前端代码的问题,需要阅读应用前端源码 3. vue,webpack,react等前端新技术 4.1 技术一直在持续发展,好多公司也会追随新技术的步伐,学习流行的技术也是为更好的技术支持服务做铺垫。 4. Nosql技术: memcached, redis, Ehcache, mongodb 5. elasticsearch,Lucene, solr等搜索技术 6. 负载均衡: Nginx:高性能、高并发的web服务器;功能包括负载均衡、反向代理、静态内容缓存、访问控制;工作在应用层     LVS: Linux virtual server,基于集群技术和Linux操作系统实现一个高性能、高可用的服务器;工作在网络层 7. webserver:     Java:Tomcat,Apache,Jboss,Tongweb, AAS 8. service:       SOA、微服务、spring boot,django 9. 容器:     docker,kubernetes 10. 协调中心:     zookeeper、etcd等 11. rpc框架:     grpc、dubbo、brpc 12. 消息队列:     kafka、rabbitMQ、rocketMQ、QSP 消息队列的应用场景:异步处理、应用解耦、流量削锋和消息通讯 13. spring, spring boot, spring cloud, hibernate, mybatis, maven, gradle,网络编程,并发编程, http、tcp协议等
    展开

    作者回复: 这是我看到的第一个具备那么丰富的知识点的回复,这里面有许多在本专栏中都会涉及到。

    共 3 条评论
    15
  • 轻飏
    2019-09-10
    我是一名阿里巴巴的java研发工程师。四年前本科毕业的来了阿里,岗位是测试开发工程师,可是还不到两年,因为拥抱变化,这个岗位在我们部门就被干掉了。于是转型做纯开发,但是究竟是专注于后端还是前端我很迷茫,因为团队当时处于初创,需要大量前端且招不到人,而我又偏向于做后端开发。所以都在学习。自己最初的一个研发项目是将一个配置发布控制台从0到1实现,需要从前端写到后端。最终我成功完成了这个项目,虽然技术上没什么特殊的难点,但是涉及到的知识点非常多。这段经历也让我学习了很多,了解一个web应用系统的全貌。直到后来我终于有机会专注于做后端开发,有时候需要和前端同学配合的时候,也可以站到他们的角度思考这里的实现方案。 对我而言,全栈不是意味着全要精通,而是需要熟悉整个研发体系,了解技术栈。这样子无论是团队合作还是后来带团队带项目都是非常有帮助的。而且通过加强全栈学习,也会改变自己思考问题的方式,这种影响不局限于工作范围
    展开

    作者回复: 嗯,很详细的描述,也恭喜你从测试开发工程师转纯开发成功。我想这个过程一定不容易。 我相信你已经有了初步的知识,因此才有了这样的感悟。下一步,你可以利用专栏,在每一章的学习过程中,把你经历的那些技术,特别是 Web 技术对号入座一下,了解具体技术背后的那些原理和套路。

    10
  • mmm
    2019-09-13
    四火老师好,我工作了6年,感觉做着全栈的工作,但找工作并没有优势,迷茫中,求指导,我在华为做了三年通信行业c语言业务研发,互联网三年就是跟着公司需求走,做过Android 和ios的sdk开发,做过web前端页面开发,做过后端服务开发,做过大数据的项目,现在做监控告警方面的系统运维开发,一路过来感觉对前端到后端,开发到运维的流程都清晰了,但找工作时,因为工作6年了对方往往期待你是某一方面的专家,不care你是不是全栈,可我在各方面只有一到两年的积累,前端和后端都没有形成完整的技术体系,跟某一领域干了三年的人比反倒不占优势,因为年轻人更有精力而且要的也少,请问老师什么工作岗位特别需要全栈,或者我的发展方向哪里有问题需要调整?
    展开

    作者回复: 我想从我的理解谈两个方面: 第一,全栈学习和成为某个领域的专家并不矛盾,不但不矛盾,还有相辅相成的促进作用。这点我在好几处评论的回复中已经谈到了,你可以参考一下。就拿我自己来举例子,我之前做了许多Web全栈开发的工作,但我现在做的是分布式系统,和Web 全栈“看起来”没有直接关系,但实际完全相反,我在文中也提到了。 第二,确实有很多公司都招聘 Web 全栈开发,我在国内还是北美都工作过。你自己也认识到了技术体系上的欠缺 :),并且,当你产生了“年轻人更有精力而且要的也少”的想法,我觉得就要当心了——你的竞争力是什么,拼体力肯定拼不过年轻人的。你的竞争力应该是经验、思路、眼界等等这些东西。你说对吗?另外,我在 06 篇会讲到一点这方面,你可以留意一下。

    共 2 条评论
    8
  • 蜉蝣
    2019-09-09
    我的岗位是 web 后端,语言用 python 而非 java,前端基本不会。可以说与这个专栏格格不入,但我还是想啃!

    作者回复: 赞一个积极的态度!但是对你描述做个说明: 首先,你提到的“web 后端”本身就是我所理解的基于 Web 的全栈的重要一部分; 其次,语言是 Python 还是 Java 并非什么大问题,我工作中用了差不多十年的 Java,但是现在我所在的团队用的全部是 Python。你所学到的全栈技术,特别是技术的本质,还有常见的“套路”,往往和你的实现语言没有关系。:) 再次,至于前端,它能给你带来很多好处(第三章我们还会详述),我推荐每一个程序员都学习前端,无论在未来是否专注于这个部分。

    7
  • 許敲敲
    2019-09-09
    四火老师好,我是 一名web developer,工作年限比较少,仅半年,外企的话,工作轻松,相对职责确定,不会接触到所有的业务。平时工作就是做web相关的开发,工作中写 前端组件,Angular,React,Vue都有接触,写基于组件的showcase ,写单元测试,写集成测试,有时候也要自己配置 CI/CD环境,也需要了解一些运维的东西。自己喜欢接触新技术,也学了很多机器学习,NLP的知识。一直都想着自己开发一个app,能把自己学的东西连起来,做一个东西出来。 自己学的话,老是觉得很多技术层出不穷,而且接触很多方向的话,每个方向的深度都不会深入太多,而且学东西,实际工作用不到,或者做不出什么东西出来的话,感觉学习效果没那么好。之前也有看到国外的full stack 培训班,可是3000,5000刀的价格确实太贵。 不知道学习这门课,是不是可以在老师的指引下,做一个完成的包含前后端技术栈的产品出来? 希望至少对软件架构这块有个入门。
    展开

    作者回复: 你好。 你提到了培训班,确实如此,并且相较来说,据我观察北美的程序员圈子里面 full stack 的讨论氛围比国内要浓厚许多。 对于深度的问题,其实广度和深度不但不矛盾,还有相辅相成的特点。技术都是相通的,在专栏中你也会看到,某一些有深度的技术都是别处“借鉴”过来的,“套路”都是一样的。 关于你的问题,是一个很好的问题。这个专栏并非围绕一个完整的技术栈的产品而设计的,但却会覆盖很多项目中的实际问题和例子。在下一篇学习路径中会讲到专栏内容的设计。 另外,从描述中可以看出,你有很多优秀的品质。:)

    共 2 条评论
    7
  • inmo
    2020-08-21
    老师您好,我是名刚出来实习的大专生,现在走的方向是前端,对于以后的发展有点迷茫,希望老师看到后给予点指引 主要课程: 在学校期间,学的是计算机基础,计算机组装与维修,网络基础,ps,flash, c语言, linux, Dreamweaver, office,高数,英语,mysql,数据结构与算法,网络安全,jsp 课程情况: 1. 对于上面的课程,老师上课完全是读ppt,而且还不是这个专业的老师(除了数学英语),问他们问题,多数都是答不上来 2. 像我们计算机的,上了两年大专,还没有碰过学校的电脑,至于为啥,学校说没有多余的机房分配给我们,虽然我们老师也申请过很多次,但都被回绝了,但经过我的观察,多数的机房都是空的 3. 大专的环境,基本上上课了周边的都是打游戏的,由此上课都是自己带本书,到一个角落,学自己想学的 第一个学期,因为有c语言课程,觉得挺有趣就开始看视频自学,从c到c++再到qt,可以自己搞一些简单的小应用,工具 在第二个学期,一个同学的指引下,我接触到了html跟css,就开始了前端的自学路程,从此踏上了前端的道路 从html开始, css, js, jq, jq源码, node.js,webpack,vue全家桶, git, 中间捣鼓了一下flutter,折腾了下linux 疫情的时候使用flutter做了个起床打卡app,使用php搭建后台服务器存储数据 五月份左右,使用node.js+vue独立做了一个博客,并上线在宝塔中 至此现在毕业,找工作的时候面试了,5家公司,全是培训机构。说我能力不行,需要培养(费用2w,称可以帮我分期,培训完再开始还),知道这是个坑,果断的拒绝了。 后来在掘金看到了个内推网易的,就去试了下前端开发实习生。 笔试之前,做了很多复习: 笔试题, http,缓存,dns,浏览器渲染过程,手写各种es6的函数,this,原型链....., webpack原理, vue双向绑定, git...... 到了笔试那天,怀着忐忑的心,打开了笔试网页, 先是文化题,后是数学的,然后是编程题: 打开后人都傻了,就四题,但全是算法题,虽然学过算法课,但真要写算法,我也只会个冒泡,堆栈,链表! 然后硬着头皮做,虽然在本地运行输出没问题,但一题都没过,我想应该是一些极端条件没想到,结果就是网易跟我说拜拜了 心灰意冷,进了家小公司(有多小? 只有30来人)做着学徒,因为主要业务小程序的,又没有学过,所以只好从学徒开始干,每月600的补贴(不包吃住),其实就是每天去公司自学,也没人管你,我觉得这能把我零碎的学习时间组合起来,也挺好。 我知道大专跟正常的大学生有些很大的基础差距,我希望能够转正后系统学习计算机基础知识 再等实习完,参加升本考试(招聘硬性要求本科学历) 最后,希望老师能指点下,实在是迷茫不知道怎么走下去,虽然明确了学历前进的方向,但却不知道技术的道路如何走下去,难道真的要从算法开始学起来?
    展开

    作者回复: 你好inmo,读完了你的故事,我理解你的苦衷。 首先,读书期间的教育条件并不过硬,显而易见地,这影响了你早期基础的积累。但软件本身,其中的一个好处就是,自己学习一样可以做到足够的积累。你说在学校里面没有办法使用上学校的电脑,似乎还有些“耿耿于怀”,可是话说回来——即便能够,我觉得也很难获得足够的时间和环境,因此终归还是要靠自己的学习,也请不必太过沮丧。 其次,根据你的描述,我注意到你在前端已经有了一定的知识储备,现在在这部分,除了知识的记忆,你需要注意慢慢把它们串联起来,找到套路和体系。 再次,但却是最重要的,就是要把基础夯实。你已经通过网易实习考试认识到,“全是算法题”,没错,大厂的玩法确实是不一样的,它们往往更重视基础。你既然在学生时期由于种种原因落下了这部分,现在尤其需要优先捡起来。要知道,随着年龄增大,如果这部分最重要的短板不补上去,你面临的竞争压力可能会越来越大。 你问“难道真的要从算法开始学起来?”我的回答是:“对!” 另外,上面提到的第2、3点,我在不久前的直播中都有介绍,直播视频在B站,你可以看一下:https://www.bilibili.com/video/BV12T4y157Z7 祝你成功。

    共 5 条评论
    5
  • 业余草
    2019-09-09
    全栈就是“全都你一个人干”。。。我们只差一个全栈程序员。。。

    作者回复: 全栈可不是“全干”啊。我认为偏狭义的理解,比如定位到我提到的基于 Web 的技术栈,更有学习和讨论的价值。

    共 2 条评论
    5
  • NumZhou
    2020-05-08
    干开发四年了,我越来越不知道自己是做什么的。大学那会只学了一点C,C++的皮毛,还没有真正理解开发的内容。毕业以后没有任何技能,自学了两个月的java基础就进了一家外包公司,项目经理知道我啥也不会,就从做前端开始自学,一边学习一边开发,然后就整天画页面调样式,和后台开发调接口。后来又开始做后台开发,虽然没有深入学习后台开发,但是做的都是维护类的项目,可以依葫芦画瓢,写一些基本的交易也没问题。然后就开始前后端联合开发,后端写完写前端,然后联调,单元测试,也做过一段时间的测试,都是很基本很简单的。目前一边做着开发一边做着一个大项目的运维。很迷茫,技术也不过硬,所以想多学点东西。
    展开

    作者回复: 👍,听起来你有不少积累的!就是可能缺少一点体系

    3
  • SHERRAN要好好学习
    2019-09-12
    四火老师,我是一名大四学生,我大学自学的前端后端略有涉及,可是身边的人以及程序员网友一直让我转后端,说前端没前途,是真的吗?很迷茫!

    作者回复: 还有无数人会对你说,程序员是吃青春饭的呢,你觉得呢?:) 类似这样的论调会有很多,相信你会有自己的思考的。我们在第三章开始的时候讲前端,也会特别提到学习前端带来的好处。

    3
  • 靠人品去赢
    2019-09-09
    全都精太难了,但是怎么说做后台懂点前端,做前端会点SQL,Node服务器语言还是可以的。关键两个科技树技能点和要求还是有区别的,现在连半截树都点不亮。

    作者回复: 感谢你的观点和分享。 我认为,全栈技术的广度和你希望钻研的技术深度并无冲突,事实上,还有相辅相成的作用。程序员的发展总是要面临深度和广度两个维度的。 确实如你所说“有区别”,但是它们之间的“联系”更多。别担心,希望这个专栏能带给你帮助,帮你“上道”。

    3
  • paperen
    2020-05-25
    感觉80后做技术的都算全栈,因为咱们那会都是后端与前端一块写的 自己今年三十多岁,十年的开发, 是从PHP开始的技能标签一大堆 : 前端:jquery、vue、bootstrap、mpvue、公众号/小程序开发、vant 后端:codeigniter、thinkphp、lumen、scrapy(python) 存储:redis、mysql 运维:zabbix 大数据:hadoop、flume、kafka、elasticsearch、filebeat 但真的觉得很杂但又没有很专,最近在补架构与算法的知识,老实说用过这么多并没有让自己感觉比别人厉害很多
    展开
    2
  • Geek_East
    2019-11-11
    从您的博客Trace到您的领英,从中国到美国,我也有类似的经历; 本科是跟计算机完全无关的文科,出于兴趣,研究生到了CMU读信息系统,不算是非常正统的计算机科目,但是有机会跟很多出众的同学们学习。现在在澳洲一家创业公司任职全栈工程师不到一年,看到您的文章,认同其中很多观点:选择全栈也是因为它可以让我自主构建项目;工作机会多;可以从广度上了解这个行业,为将来架构或者说管理层面打下基础。将来打算base澳洲,赶赴美国任职软件工程师,现在也是在学习全栈技术的同时,偶尔看看数据与算法的题目。文末感谢您提供的课程给了我很多很多启发。
    展开
    2
  • 小寞子。(≥3≤)
    2019-09-22
    老师好!标准90后 在土澳刚毕业 IBM做顾问一年。 发现澳洲这技术人员落后(也可能是IBM的锅) 不知不觉总是在团队里充当技术最牛逼的人。。 实际上只是我学习速度快。 从小接触编程, 自学深度学习机器学习。 发现土澳很难用到。 机缘巧合下在一个项目中自学了spring boot。一个人搭建了整个测试自动化框架的后端。。既然我全栈已经接触了一半, 另一半应该也不难。。希望能多学习前人的经验。😁

    作者回复: 👍

    共 2 条评论
    2
  • 王智
    2019-09-13
    老师中秋节快乐, 哈哈, 我现在的工作是服务于教育的, 给学校做网站, 这种工作一段时间闲, 一段时间忙, 最近就比较闲, 但是不知道该做什么, 希望跟着老师的专栏好好学习一下. 对于全栈的理解我就比较模糊了. 大学喜欢前端, 后来毕业学了后端, 现在前端忘得差不多了, 主攻后端. 对于如何成为全栈工程师前途迷茫啊. 先跟着老师好好, 规划一下学习路线, 总觉得公司用什么学什么太慢, 但是不用又忘, 难受. 哈哈 学习学习
    展开

    作者回复: 每个人的遗忘曲线都不一样,但是学了就忘很有可能还因为其实没有学透彻,只是理解怎么使用、怎么配置这只是表象。 对于最后一条,我非常同意一点,如果跟着公司用什么,就学什么的话,这局限性太强了,想必你也不想把你的能力和未来绑在“公司用什么技术”上,对吧?

    2
  • 颜林林
    2019-09-13
    我的技术栈虽然略陈旧,但我自信自己的技术栈更宽;我是来加深自己在“狭义全栈”这部分技术的深度的,以便成长为一位全栈数据科学家 ^_^

    作者回复: 全栈数据科学家,很有意义的方向,加油!

    2
  • koko_zhk
    2019-09-12
    我是一个做了有5年多的前端工作者,之所以对全栈感兴趣,是一开始是因为我觉得这样很酷,很厉害,可以做很多自己喜欢的事情。后面在最近的一年里,感觉前端的东西已经不能太满足自己学习的兴趣,所以突然就想着自己试试做做后端,也许从另一个角度工作,会反过来对我的前端视野有帮助也不一定,同时还有一个原因就是想打发一下无聊的时间,哈哈。后来就靠自学和旁边后端小哥的带领下,慢慢的接触了java的东西,并且尝试进行一些日常需求的开发。所以我觉得全栈工程师这个应该是一种发展的趋势,等你工作到一定的年限后就会发现目前的这些东西,已经把你局限在了一个范围里,你需要跳出一个范围圈,去接触一下外面的东西,然后再回过头来审视一下自己认为的那个范围圈,是不是有什么问题,是一个双向的帮助。
    展开

    作者回复: 嗯,说得太好了,很想为你鼓掌。我尝试用两个字来概括你后面几句话的意思——“视野”。等你学完了这个专栏,你可以回过头来再思考思考你说的这些话,相信你会有更多想法的。:)

    2
  • 张一
    2019-09-10
    从事十余年银行核心业务系统的实施。行业的特殊性和业务的重要性决定了我们只能采用成熟可靠的技术,不能去尝试任何开源的新技术。但新技术中蕴含的理念,思想还是可以去借鉴和参考。有了新思想的注入,不知道老树还能否发出新芽?

    作者回复: 你好,张一。 让我尝试理解一下你说的老树发新芽的含义: 如果是具体技术本身,在老技术中应用新思想,多数时候是可行的,但也有时由于技术本身的限制,或不适合那样做。 另外,如同我在另一则回复中说的那一,无论技术新旧,技术背后的本质都是一样的,新技术也往往是从旧技术演化而来的。

    2