一位同学因别人说node只适合中小型,放弃node学go,大家怎么看。
发布于 5 年前 作者 zy445566 12417 次浏览 来自 分享

image.png 前一秒还在劝人学node,后一秒就被打脸了。。。羞愧难当。。。顿时找不到理由反驳。

40 回复

一个阿里的go粉说的吧

能不能问他一下多大算大?

@dbit-xia 算了,我放弃了。 后来我举例了node还是可以支持大应用的,他有点奔溃了,以为我在diss他,然后我赶快安慰。 但事实上,我也只是就事论事,没有针对任何人。

语言:是的是的,是我的锅咯~ 跟人没关系

笑死了,马云说996是福气,UC浏览器还说996.icu违法呢,他是不是也相信呢?

@atian25 image.png 和你说了差不多的话,结果人奔溃了

@steambap 成功学家,如果能把谎言藏在真理中藏的好,还是很多人相信的。 可惜马云虽然有能做成功学家的能力,但这次谎言明显没藏好。 反倒人民日报藏的就好很多,最后把舆论带到了加班只和钱有关,完全不谈犯罪事实。 帮助资本家洗地同时,还让很多人接受了钱多就能加班的“伪事实真理”。 怕被抓,我划横线了,代表我不传播。

我的观察(不一定对):

Node 的岗位分布两极分化,高端和低端都有需求,但中间阶段的岗位有 GAP,很多前端出身的同学,很难有机会打怪升级上去。(有很多原因,譬如小公司的话语权不足,导致没有足够的应用场景去踩坑和实践;也有前端本身的个人能力起点稍低;也有公开资料学习培训交流方面的不足,等等)

但至少有一个结论是不会错的:未来十年内,如果你还想继续当一名前端,那 Node 就是必备的基础知识。

同时,我们要清楚的认知到,Node 并不是银弹,别天天妄想着去替代 Java。Node 有适合它的场景,也有不适合它的场景。还有些场景虽然语言无所谓,但要考虑上内部基建和上下游生态,以及你们 Hold 不 Hold 得住。

这 2 个问题,怎么说呢,回答的人都没错,只不过都是从各自不同的立足点去看,不可避免的偏颇:

  • 阿里这些公司,基于内部强大的基建能力和人才储备,很多 Node 的支撑问题都不再是问题,因此 Node 岗位炙手可热。
  • 创业公司,钱精人少,希望综合能力强的,有招高级前端 + Node 的诉求,但他们的基建往往缺失,所以一将难求,需要有复合型踩坑人才。
  • 小公司,前端话语权小,也没有什么应用场景,前端初学者看看文档,敲几行 Node,然后就没有然后了。

3 者之前具备较大的 Gap 和信息不互通,以及之间的阶级跨域难度不小。

@atian25 天哥果然是个认真的人。 据说阿里新零售把node业务用go重构了,这点怎么看?

如果用原生js写node,那绝对只能做小项目

楼主别劝他了,我搞了差不多3年Node后端了,但是貌似在很多人眼里,如果只会Node后端就是个奇葩,工作也不好找(这个在国内是硬伤,就像@atian25 大佬上面说的两极分化)。如果真的想搞后端,就不要纠结于语言,服务器、数据库、网络、高可用、高性能、分布式等还有一大堆名词够喝好几壶了吧?不管用什么语言写,搞后端都得解决这些问题,写JavaScript,然后用Node在后端跑起来是很容易的事,只要应用得当,在大部分业务场景下绝不会比其他语言差。搞后端单从语言层面看感觉比较肤浅了,写代码的人,只要你停止学习很快就会被淘汰掉。Go语言我也在学,已经算是入门了,今年打算深入了解下。还有K8s,搞后端的都免不了要学这些的。

@zengming00 现在走微服务就还好

@blackmatch 确实很硬伤。 k8s很不错,已经相当于降低了很多微服务的门槛了。 学无止境深似海

和语言没有必然关系,后端的那一套方案基本上可以拿过来用,大部分就是换了个名字。多种语言是好事,不然看什么都是钉子。

@blackmatch +10086,搞了三四年的Node后端,go也在学,暂时找不到抛弃Node搞go的理由,感觉也没必要纠结什么语言。这两年优化架构、迁移到TS同踩了很多坑,收也获很多不仅仅是语言层面的知识,工作不好找倒是真的…

@zy445566 没听说过,消息源在哪?阿里新零售又不是一个实体部门。

这句话给人的感觉就是:某个西部小市宣布抛弃支付宝使用微信作为官方信息通道,然后外界各自 high:中国西北部抛弃支付宝转投微信。

@atian25 喔,估计你说饿了么那事,等他们真正融合进来就知道了,一种语言能在阿里生存下来,靠的并不是语言特性。(不过利好消息是 servicemesh 可以减少这个 gap

不要再盯着node没有成熟的分布式微服务框架了。 docker + k8s + service mesh,云原生时代不是未来,已经是现在。微服务治理标准化,语言无关化,下沉到基础设施。公司随意选用自己喜欢的语言,开发人员专注于业务逻辑实现。 前面搞了3年多node之后,我现在就在基于这些给公司搞基础设施。

@xiaozhongliu 。。。sidecar可以让你支持多语言,但是除了一些特殊的问题特殊解决,一个团队长期分裂多份语言其实是很难受的。 就比如我们团队openresty用lua,团队平时开发用node,但团队的大部分人都不愿意去改lua的代码,因为维护起来很难受。 我们公司k8s都用了一年多了。。。且微服务有好处也有坏处,第一是跨APP调用链路的问题,第二库不同所导致事务问题。微服务也不是说必选项,相反是针对业务大了,为减轻复杂度,迫不得已做出的抉择。

担心这担心那的,直接上 Go 不会有错。

@zy445566 我的意思是业务用什么语言关系不大,但并没有说同一个公司/团队可以百花齐放。

nest.js midway 这种的,纯 ts 开发,支持泛型,AOP 思想,像spring 的那一套,其实要比 go 更适合大项目~

我基本上搞了3年的纯node后端, 去年考虑过go, 上手了一段时间, 果断放弃了. 现在往前端发展

@dlyt 为什么放弃了?

nodejs开发的大项目都看起来很小,java开发的小项目都看起来很大。我们公司原本nodejs开发的任何一个模块用java重构以后都是以小组(3-8人)为单位来维护。nodejs一个人可以开发几个模块,java是一个模块几个人开发。 其次,前端都会点nodejs,但是搞不了大的,就像@atian25 说的两极分化。所以大多数人眼中的nodejs难当重任,连薪资都上不去。 最后,nodejs能不能开发大项目可以用java做对比,如果你现在维护的nodejs项目使用java开发,你觉得算不算大项目?需要几个人?

@dlyt 大佬有node项目可以让我借鉴学习吗,目前学习中,难受的很

这个跟是否能驾驭没关系,能驾驭node不能说明你就牛逼。要考虑各种因素,从开发效率,运行效率,维护成本三大维度综合来讲,go语言当之无惭是第一。 node开发的时候时候很快,一个人写代码的时候很爽,但多人协作,尤其是大型项目,还有后期维护,会很痛苦。 java开发效率低,运行效率高,语言本身成熟,但概念多,比较复杂,方便多人协作,代码好维护。 go在开发效率,运行效率,维护成本三者之间取得完美平衡,并发性能出色,部署方便,但比较年轻,社区没那么成熟。

学什么语言不重要,重要的是掌握编程思想。语言只是个语法工具,算法与架构才是灵魂。

希望对楼主有帮助。

@zhushihao110 我是在慕课网上跟着视频上手了几个项目, 然后就找实习, 在工作中学习.

现在很多开发者都太浮躁,技术炒作的成分大于实干,有人很形象的形容这种风气为:面向简历编程。

“技术水平好的人用什么语言都能写出优秀的程序,技术水平差的人用什么语言写出来的程序都会很差。” 实际上语言只是WEB服务开发的冰山一角,更多的是架构思想和中间件,不是只有用Java才能实现MVC,也不是只有用Go才能做微服务,架构思想是和语言无关的,但会随着项目规模的增长而越发重要。现代编程语言都设计得极容易学,只要搞定了架构思想,做好了技术选型,Node.js、Python、Go、Rust随便哪一个用业余时间学个半个月就可以用来做项目了,选语言是选工具,不是选归宿。

这个问题应该试情况而定吧,node在前端工程化领域所向披靡,在服务端没有必要和go,java这样的语言去争什么,适合就用呗

老生常谈的话题了

某大学的OJ,服务端代码大概5w行,纯node支撑。我倒是觉得 Golang 只适合写 一个文件 不超过一千行的 微服务。

@coderfox 5w行的代码看着不累么?

回到顶部