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

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

    
     30
  • 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。这方面我在专栏中会有展开介绍。

    
     2
  • 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. 最后,仅仅是带有偏向性的个人建议——如果可能的话,因为以你描述的能力,已经超过了大多数人,你完全可以一边夯实基础,多去面试,去开阔眼界(不只是技术上的眼界),然后去尝试挑战一下互联网更高级别的岗位(你有北京的经历,我认为北京的机会远远多过天津,甚至,你也可以考虑北美的互联网公司)。

    希望我说的对你有帮助!

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

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

     1
     4
  • 业余草
    2019-09-09
    全栈就是“全都你一个人干”。。。我们只差一个全栈程序员。。。

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

     1
     4
  • 笑忘日月星辰
    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协议等
    展开

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

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

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

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

    作者回复: 我想从我的理解谈两个方面:

    第一,全栈学习和成为某个领域的专家并不矛盾,不但不矛盾,还有相辅相成的促进作用。这点我在好几处评论的回复中已经谈到了,你可以参考一下。就拿我自己来举例子,我之前做了许多Web全栈开发的工作,但我现在做的是分布式系统,和Web 全栈“看起来”没有直接关系,但实际完全相反,我在文中也提到了。

    第二,确实有很多公司都招聘 Web 全栈开发,我在国内还是北美都工作过。你自己也认识到了技术体系上的欠缺 :),并且,当你产生了“年轻人更有精力而且要的也少”的想法,我觉得就要当心了——你的竞争力是什么,拼体力肯定拼不过年轻人的。你的竞争力应该是经验、思路、眼界等等这些东西。你说对吗?另外,我在 06 篇会讲到一点这方面,你可以留意一下。

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

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

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

    作者回复: 每个人的遗忘曲线都不一样,但是学了就忘很有可能还因为其实没有学透彻,只是理解怎么使用、怎么配置这只是表象。

    对于最后一条,我非常同意一点,如果跟着公司用什么,就学什么的话,这局限性太强了,想必你也不想把你的能力和未来绑在“公司用什么技术”上,对吧?

    
     1
  • Paradise丶朽木
    2019-09-09
    这是我订阅的第二十个专栏了π_π,正走在成为全栈工程师的路上…

    作者回复: 加油,也欢迎你和我们一起分享你走这条路的心得。

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

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

    
     1
  • 王亮平
    2020-02-01
    我也要成为一名全栈工程师!
    
    
  • Geek_dd0d9a
    2020-01-28
    我是一名80后软件工程师,在细分工的流水线中当螺丝钉10年,为了拓宽技能切换过大的领域:后端开发、前端开发、自动化/手动测试、需求分析等。做过9年后端/数据库,5年mobile app,最近到小公司做web全栈开发。经历过多种语言的没落与淘汰,包括pascal, power builder, 还有OC等等,多次在技术没落与淘汰边缘挣扎。
    个人倾向于软件应用领域而不是理论领域,希望能通过全栈学习把过往的前后端经历串起来,并且在软件应用领域具备更强的竞争力!

    作者回复: 👍,希望专栏给你帮助

    
    
  • Geek_East
    2019-11-11
    从您的博客Trace到您的领英,从中国到美国,我也有类似的经历;
    本科是跟计算机完全无关的文科,出于兴趣,研究生到了CMU读信息系统,不算是非常正统的计算机科目,但是有机会跟很多出众的同学们学习。现在在澳洲一家创业公司任职全栈工程师不到一年,看到您的文章,认同其中很多观点:选择全栈也是因为它可以让我自主构建项目;工作机会多;可以从广度上了解这个行业,为将来架构或者说管理层面打下基础。将来打算base澳洲,赶赴美国任职软件工程师,现在也是在学习全栈技术的同时,偶尔看看数据与算法的题目。文末感谢您提供的课程给了我很多很多启发。
    
    
  • ꯭玩꯭世꯭不꯭恭꯭ヾ
    2019-09-23
    现在刚开始大二,学校学的东西比较杂,大一学了C++、Java、计算机组成原理;这学期正在学数据结构、软件工程、离散数学、操作系统。学的东西很多,但是对于一个普通本科生来说,速度太快了,很多东西就是一带而过,老师按培养计划讲,像Java就只有16节课(每节课90分钟)我真的不知道能学到什么,对未来充满了迷茫。

    作者回复: 别着急,大学里学习或多或少都有这样的感觉吧!一带而过之后还是要靠自己消化。慢慢来,时间还长。

    
    
  • 小寞子。(≥3≤)
    2019-09-22
    老师好!标准90后 在土澳刚毕业 IBM做顾问一年。 发现澳洲这技术人员落后(也可能是IBM的锅) 不知不觉总是在团队里充当技术最牛逼的人。。 实际上只是我学习速度快。 从小接触编程, 自学深度学习机器学习。 发现土澳很难用到。 机缘巧合下在一个项目中自学了spring boot。一个人搭建了整个测试自动化框架的后端。。既然我全栈已经接触了一半, 另一半应该也不难。。希望能多学习前人的经验。😁

    作者回复: 👍

    
    
  • 微尘
    2019-09-19
    老师你好,针对于这几个问题,我的情况是这样的∶
      - 自我介绍∶3.5年java开发(92年)
      - 工作情况∶前三年个人小公司,现在外包,技术应用较少,但有时间学习
      - 学习情况∶之前跟着项目学习,现在学习前端和后端提升,书籍方面阅读部分经典书籍,但是转化为自己所用太少
      - 全栈理解∶能独立开发应用,部署正常使用
      - 应有技能∶我的理解是后端需要2到4种(java,c,python,go),前端独立开发,计算机网络,算法,操作系统
      - 我的问题∶请老师指正我的想法有什么不足。
    展开

    作者回复: 你的想法和计划都挺好的,每个人都可以对全栈技术有自己的理解。这个专栏主要的内容是基于 Web 的全栈技术,希望可以帮到你。

    
    
  • Boogie 捷
    2019-09-19
    四火老师好,同为亚麻员工,深谙oncall的痛苦。我研究生毕业以后就一直在亚麻,目前工作两年,想请问下老师怎么看待跳槽或者内部转组这个事儿?先谢谢啦!

    作者回复: 你好,很抱歉,Amazon 内部转组这个问题我觉得不适合在这里讨论。

    
    
  • Geek_JaneJane
    2019-09-17
    不知道老师还能不能看到我的留言。我是毕业两年,一毕业在某大型通信公司做基带软件开发,后来转了互联网,一开始做前端开发,什么小游戏小程序web前端vue都做,后来做golang后台,后来做Python后台。现在觉得自己的基础比较差,并且之前所做的东西有点像蜻蜓点水,现在给自己的计划是,第一个强化基础吧,第二个是把之前的经历体系化,系统化。老师如果看到的话,可以给我提点建议吗?

    作者回复: 我觉得你的想法非常好啊!你也可以看看这篇下面的其他回复,但就现阶段而言,你说的计划基本就是我想说的。

    
    
我们在线,来聊聊吧