• Java 还是 Nodejs ? 搞了几年Java了,项目组突然来了一个百度架构师,强推nodejs写后端,我有种从头开始的感觉

    2016/09/29 micro 120 评论

刚毕业,搞了几年Java了,感觉正处于快速成长期,项目组突然来了一个百度架构师,他写了十几年脚本语言对Java不感冒,强推nodejs写后端业务,加之项目紧急,linux + lua + nodejs + openresty。

一个月内拼死做出来了,非常的痛苦,现在项目上线了,后面还有很多要改造,我是选择继续留下来做这些还是转到偏Java的项目。

我觉得不应该局限在某个技术,只是觉得我把Java搞得很牛逼了再搞这个会不会比较好一点,不然有种从头开始的感觉。

27 7 收藏


直接登录
最新评论
  • 咸菜   2016/09/29

    厉害的工程师是不应该被束缚,首先你是不是厉害的工程师?到了不被技术束缚的层次了?厉害的工程师应该是在一个技术领域深挖然后才厉害的?选自己喜欢的技术方向,慢慢积累。技术背景和行业背景不要轻易换,除非自己的兴趣发生变化或者有了较好的机遇。

    共勉

  • 程序员 2016/09/29

    lua + openresty   一直想学习一下   忙于加班  都没办法升值自己了

  • 灵魂火焰 软件研发 2016/09/29

    认同你最后一段的观点。

  • JoeWoo_HIT   2016/09/29

    js是一门有缺陷的语言。jvm世界除了java还有很多东西,异步模型个人倾向于scala akka。lua+openresty还有东西可学,node js如果你熟悉ruby或者python,用过rails或django那么nodejs除了异步io外没有任何可取之处。js本身很吊诡,可维护性比较差。

  • 男人泪 程序猿 2016/09/30

    项目中不是架构师说了就能算的,架构师应该根据项目组中成员所使用的语言编写架构,不能一味就用自己会的语言写

    • micro 软件攻城狮 2016/09/30

      所以这次全都让我们一群Java开发人员去做node导致本来就开发时间紧张的项目特别紧,加班加点还是搞出来了。项目经理意见也很大,感觉我们夹在中间只能默默填坑。都挺过来了。

      • 据我所知,java和 nodejs(javascript)的语言差异不是一点半点,你们能这么快就能转型发布显目,真是压力有多大,动力有多大啊~

  • 王念一 高一学生 2016/09/30

    项目组突然来了一个百度架构师,他写了十几年脚本语言对Java不感冒,强推nodejs写后端业务

    mdzz刚来就强推,团队意识呢?

    • micro 软件攻城狮 2016/09/30

      他对业务还不太熟但是又想快点做出点成绩吧。我们聊业务他不太感兴趣。。技术架构他又要强推,我们只能照做。。关键项目紧啊,我们加班加点他每天只上半天班。唉。。

  • 十二页 搬砖工 2016/09/30

    紧急业务用什么nodejs,虽然Java比较拖沓,但是后端业务解决方案绝对比nodejs多得多,为了语言简洁可以用scala啊,这样原来的代码还有用,不好弄的也可以直接Java写,跟业务相关的异步io优势能体现出来多少,这种人估计就是在百度混不下去来你们公司继续混日子,建议继续java,学习scala,感觉比nodejs有用,跟java结合性好,也是函数式风格,弄下大数据也有用

    • micro 软件攻城狮 2016/09/30

      现在也在纠结。。感觉最难熬的日子已经过去了。。架构师也让我考虑下是不是继续做。项目管理有点混乱,主管跟这个架构师估计也在内斗。。我们这群干活的夹在中间填坑。。

    • gowk 喜欢Go的Java程序员 2016/10/08

      上Scala对团队要求比Java高很多

      • micro 软件攻城狮 2016/10/17

        他的目标就是让我们写的代码越少越好,甚至以后想很多东西让需求方自己配置好了,代码都自动生成,他的想法也是降低新人培训成本,来了就能上手,对于Java项目复杂了之后对新人的要求太高…他这样说过

  • springsummer 软件工程师 2016/09/30

    但写无妨

  • DXkite 学生党 2016/10/01

    个人来看,构架师的职业不应该是对项目的宏观调控?在设计结构的时候不应该要考虑实现人员的情况?[你公司不是百度吧?那么他是跳槽?这个貌似有点什么什么吧?]然后……Node貌似也不是那么高大上,就是近些年才兴起的……谓之新兴?还有JavaScript语言的缺陷问题……

    • micro 软件攻城狮 2016/10/01

      他一直强调js写业务的灵活和性能的优势,讲道理写node代码的确更简洁,熟悉了之后写起来还好,除了一些内置接口不如Java熟悉。

      • DXkite 学生党 2016/10/01

        话说Js一桶前后,还是有点方便,不过对于我这样啥都乱学的渣渣也无所谓,_(:з」∠)_

      • dwangel Java 2016/10/02

        在微信号评论了一下,然后到这里来看细节了。
        对于 需求交易严谨的业务环境,业务修改的灵活性不是必需的,甚至应当是被避免的。而不能从业务需求角度考虑问题的架构师,最终会跟公司分道扬镳。

        当然,从技术角度来讲,这个技术栈应当对于高并发的网站页面支持还是比较好的。

        只是,完整的平台 一般不会仅仅是 页面展示……

        不说别的,淘宝内部也有大量的java后台程序,特别是关键业务层。

      • dwangel Java 2016/10/02

        不知道这些方面 他有解决方案吗?

        系统的自动测试
        错误记录和恢复
        配置管理及到运维平台的部署

        如果,他能把整个技术栈 做完整,先学学也蛮好的。

        • micro 软件攻城狮 2016/10/17

          都有解决方案,除了感觉他对业务不是特别感兴趣,其他我们反馈的问题他都能提出一些解决方案,而且在这样中型的互联网公司,很多东西推动起来很麻烦,他都一点点去说服相关方,技术比我们是要强出一大截这点我没质疑过,只是对于我自己的发展想的比较多

  • java 我没用过,js我要吐槽:三维数组赋值要命啊,数组下标定义要命啊,还是php好!

  • 伯小乐 小编 2016/10/01

    9月30日,这个讨论帖发布在「程序员的那些事」( iProgrammer )微信公号了。小编摘录一些读者评论:

    iHailong

    这个话题我是有点发言权的,搞过三年多的java开发,spring/hibernate/tapestry stack,后来做前端,目前回归后端做nodejs架构师。我也做过类似的事情,在java团队力推nodejs,被我带过的同学们目前在全栈开发领域都独挡一面了,而且都很感谢我带他们进入了一个新的世界,现在都能用html5,mobile/hybrid app,nodejs,mongodb快速搭建一个个项目,我个人意见,首先我不否认java世界的博大精深,其次我建议年轻人一定要保持open的心态,多去接触,多去体会,不要先入为主的认为熟悉的就是最好的,你怎么知道这不是为自己新开了一扇窗呢?

    Ivan

    满足业务的情况下,架构师可以随便选择自己认为优秀的技术。但技术总监哪里去了?成本,成本,成本,技术栈更换的成本代价和开发成本代价是否有正确评估?如果总监也认为更新技术栈可行,那java同学就要好好思考下了。此外工作更多是应用你的编码技术,更多的语言会简化你的工作,提高还是业余学习更快一点

    如果想让自己增值,肯定是会的越多越好,就比如我本身做安卓,现在后台走了,又招不到合适人选,我只有顶上去了,一开始我是拒绝的,但是没有用,你知道程序员说的最没用的一句话就是“这个功能无法实现”,最后还不是都妥协了mo-流汗

    hzm

    公司来过一个牛人强推ruby,而后拍拍屁股又去祸害下一家了,留下一坨到处bug的翔

    笑饮人生

    我是经理,最烦的就是架构师。九个已被我间接开了六个

    anycle

    我也碰到过这种类型的项目组长,明明用c就能轻易完成的服务一定要用nodejs给写一遍,根本无法维护好么

    linda

    我觉得很有可能是架构师不懂java后端架构,不感冒说不好听点就是没把握。他自己的经验在nodejs更有把握。 如果是他架构有问题,他要承担责任;如果是架构合理,而没有实现出来,那是工程师的问题

    张屾

    架构师要考量现有项目的业务类型,基础设施,改造成本。其中改造成本就包含了团队的学习成本和实际开发以及踩坑成本。对于服务端开发我没有太多话语权,但是基于java的架构深度是任何一名服务端开发都应该了解的,还有go。异步io底层仍然是epoll,iocp等os的实现,有其使用场景,有些计算机基础的人都不难理解和上手。建议深入java体系,一通百通

    成长路上的小伙子

    之前也搞过node.js.用于网络通信,队列之类的,真用来做业务逻辑复杂的后台 感觉有点呛

    Crane

    好的开发者只针对实际项目情况考虑效率和成本,用啥语言没啥好多纠结的,即使从头学一门新编程语言没那么难!要争论用啥语言,首先所有的备选你都得有所了解,如果只会一门语言,就别争了,因为你没得选

    原远

    好讽刺,有个例,在大公司混不下去的跑到小公司就能呼风唤雨,顺应趋势和潮流本身没错,但小公司达不到规模和体量,妄想通过所谓大系统的构建来改变,却忘了技术只是实现手段,业务方向和营销策略才是核心。作为程序猿,本人鄙视这种所谓的架构狮

    夏黎鹏

    我一直觉得nodejs就该用在处理队列,或者实时性比较强的场景,整个后端全部用这个来写真够呛,nodejs本身包含很多包,不见得所有包质量可靠,而且js的确不方便维护

    赵梓辰

    三个字,神经病。背景在牛逼又怎样?阿里,百度出来的架构师,也不能不根据实际情况乱定技术架构方向啊。学习成本,维护成本。有没有必要,合适不合适等等都需要考虑。哪能说什么就是什么,得多商量,沟通才好,一般上来烧三把火的死的都快,主要是坑了一帮兄弟。

    • micro 软件攻城狮 2016/10/01

      啊。原来伯乐君发公众号去了啊。。去看了下公众号很多回复我觉得说的在理。国庆后我会做出选择吧。

  • 殊麒   2016/10/01

    最反感这些所谓一线互联网公司出来到外面小公司装逼的混子了。我之前在一家公司带2个PHP开发维护了公司的网站平台和运营系统,后来离京回家,老板听他MBA同学推荐又找了个数字公司出来的,带了10几号人来做技术开发,1个半月之后只是用Bootstrap重写了前端页面,听说后台重写了(没权限看不到具体情况),然后就是过了一个月让公司的老人问我之前服务器的数据库备份我在其他地方还有没有,因为他们重构之后的系统,数据丢了,,,,,,另一个更鬼扯,我朋友的一家公司外聘了个CTO号称也是度娘出来的,一年投入技术研发300万做了个很小的APP,然后搞了个在线投票的小活动,一共也就1000人左右的用户规模,CTO说现有系统架构满足不了,要求加服务器、带宽和系统重构,,,,,,后来据说这CTO带着那群技术继续去祸害别的公司了。言归正传,几个观点:1、不要迷信所谓的大公司出来的人和技术,因为资源、环境和需求有很大不同,照搬照抄会坑死人;2、没有最好的所谓技术和语言,最适合的就是最好的;3、认清自己的职业规划定位和技术优劣,不要见猎心喜浅尝辄止,最后没有沉淀,技术到了核心层面其实原理都是相同的;4、不靠谱的销售leader坑的是公司的销售投入和客户,不靠谱的技术leader坑的就是公司真正干活的技术团队了,而往往老板不懂技术看不清这一点。

    • micro 软件攻城狮 2016/10/01

      说的在理,我对这个架构师的技术其实不怀疑,他也很乐于跟我们谈及他在百度的辉煌战绩,可能我自己水平还不够所以很多东西听不懂但是感觉很厉害的样子。我比较在意的一点是当我们谈论业务的时候突然就安静不说话了,我觉得不充分理解无这么大刀阔斧的动架构是不是不太合适,还是他已经可以完全了解业务了这个我也不清楚他属于哪种。还有就是他每天只上半天班,几乎不加班,我们任务量很大,加了一个月班。原来在一家公司,架构都陪我们一起干活的,挺怀念那种感觉的。

      • 从领域驱动设计的角度,好的架构师,怎么可能不关注业务和领域概念呢?

        文中这种沉浸在“计算机科学”领域,而不是去努力钻研用户所在的业务领域的“计算机科学专家“,也就是个大号码农。我怀疑他到底知不知道应用软件的复杂性究竟来自于何处?到底真的走过业务建模、需求、分析、设计的过程么?

        离开互联网公司数据处理、机器学习等偏科学的领域,小公司大量的项目其实要用有限的人力和理解能力去处理技术之外的复杂性:

        “应用软件的复杂性不来自技术,而是领域本身:用户的活动和业务逻辑”。

        这是世界观的问题,不是能力的问题。这方面不开窍的话,他在小公司干不长的。

  • zeopean php 工程师 2016/10/01

    哎,和我的情况类似,我们公司现在大部分业务是php做到,现在的cto打算重构,打算用java ,也不知道以后会咋样。。。

  • 阿狸先森 java软件攻城师 2016/10/01

    不干不就是完了么

  • 王文武   2016/10/01

    团队里都是JAVA工程师,空降一个 CTO 直接强转 JS?

     

    • micro 软件攻城狮 2016/10/08

      是的。。。是自愿,我最开始也没理解好,我以为只是尝试做一阵子,现在貌似是常态化的要做nodejs了,所以比较在意。

  • 顾星竹 数据工程师 2016/10/02

    个人觉得从java变成nodejs会把路走窄了,除非你想转前端,或者去做产品。否则没什么好处。现在外面很喜欢说什么全栈,但其实工作5年甚至8年以内的,最大的价值还是在于精通某一方面。如果你们一整个项目组都是做java的,为什么会接受架构师这么大的技术转型?有机会的话,还是想办法回归java的怀抱吧。

  • 浪子哥   2016/10/08

    很鄙视这种货,只顾个人想法,不顾团队成员特点、业务领域的

    • micro 软件攻城狮 2016/10/08

      别人的确的确很牛逼,又是混了十几年的老司机,职位也比我们都高,没办法,听命吧

  • 从头开始  可以升华一个层次

    • micro 软件攻城狮 2016/10/17

      不太喜欢半吊子…我愿意尝试其他技术,但是要有个主要的技术吃饭的.

  • winter-xu 全栈程序猿 2016/10/08

    还是java好,不过学习下js也可以

    • micro 软件攻城狮 2016/10/17

      JS这两年在社区野蛮生长.感觉好玩就入了这个坑…玩脱了,公司让我完全搞这个我又不干了..唉

  • Java做服务端提供Api接口还是挺好的.各方面都很完善.

    Node适合和前端搭配.对于前端来说是巨大的飞跃..写的飞起..

    • micro 软件攻城狮 2016/10/17

      是的.其实最开始写这块公司没node的人我就认为前端更适合,但是架构师说需要更懂业务的后端来.

  • Vincent 学生 2016/10/08

    百度架构师不逛伯乐在线的么,哈哈

  • 龙雀 野生程序员 2016/10/09

    java并没有到不可忍受的程度,spring mvc和 spring boot就不错啊。

    重构是有时间成本的,还不如先把缓存、消息队列什么的弄完善。

    • micro 软件攻城狮 2016/10/17

      公司快上市了…感觉是专门请了有背景的人来改造架构.

      • 龙雀 野生程序员 2016/10/17

        这不叫改造架构,这叫重构。用Node重写也只能改动 Web容器,而且,Web容器真是就是性能瓶颈嘛?

        • micro 软件攻城狮 2016/10/17

          性能Java暂时倒还扛得住,主要是业务变化太快node改起来更快,Java太重牵动的东西太多。

  • 感觉这架构师不靠谱啊,走吧

  • snowfeng1999 休假 2016/10/12

    1.技术背景和行业背景不要换.

    2. JS写前端, Java写后台 .

    3. 若是要换, 至少要半相关.

    • micro 软件攻城狮 2016/10/17

      为也是这么考虑,我自己努力参与到Java里去,如果公司非要让我们一群搞Java后端的顶上去搞node我也没办法,毕竟node不好招人啊.

  • snowfeng1999 休假 2016/10/12

    补充一点:

    若是公司不是业内前三,可以考虑换公司.

  • springsummer 软件工程师 2016/10/13

    用的啥框架?

    • micro 软件攻城狮 2016/10/17

      node么..公用的一些web框架express,orm用的sequelize,异步转同步写法co.分层模型采用的百度一套规范.

  • 厉害的工程师是不应该被束缚,首先你是不是厉害的工程师?到了不被技术束缚的层次了?厉害的工程师应该是在一个技术领域深挖然后才厉害的?选自己喜欢的技术方向,慢慢积累。技术背景和行业背景不要轻易换,除非自己的兴趣发生变化或者有了较好的机遇。

  • 我有个同学,搞了六年Java,现在转行搞C++,也搞得风生水起

  • YHL   2016/10/27

    换一个环境就要从头开始,按人家的规则来

  • LongLive 软件工程师 2016/11/02

    看来是时候学学node了

  • petersfan 游戏开发工程师 2016/11/05

    作为程序员,不停接收新的技术知识和语言我觉得挺好的,加油吧

  • 、O.o? PHP开发工程师 2016/11/10

    在学node

  • 作为后端工程师,常见的python,php,nodejs,java,go,c 都是需要了解研究的。你可以以Java为主,研究jvm,但其他的也必须会。

  • 非常认可最后的,先把一项技术搞牛逼了再触类旁通

  • di7xian   2016/11/24

    PHP是世界上最牛逼的语言,nodejs终将统治宇宙。

  • 首先我觉得严格上来讲node.js并不能算一个语言,js才是语言,node.js只能算一个平台。切入正题,node.js的优势无非是异步非阻塞模型,这也就造成了它的缺点之一太多callback,做复杂的业务逻辑很烦,而且代码可维护性差。其实实际很多时候并不是所有业务都需要用异步模型的,大大增加了复杂度,一些没有什么并发的业务获胜内部管理平台,是完全可以简单的同步请求搞定。spring这些框架早已经很好的支持异步请求模型。另外java是强类型语言,语法严格,安全性上绝对高于弱类型语言;java计算能力强大,跨平台性更好。

  • nodejs其实挺好玩的

     

  • NodeJS与java各有各的使用场景,分析完需求再选择

  • 活到老,学到老。技术是不断更新的

  • 给你点个赞

  • 感觉好幸运,能够接触到这么多技术。nginx+openresty应该很前景,可替代性相对差一些

  • 快到碗里来 程序猿 01/07

    俺是来赚积分的

  • 快到碗里来 程序猿 01/07

  • Steven   01/14

    厉害的工程师是不应该被束缚,首先你是不是厉害的工程师?到了不被技术束缚的层次了?厉害的工程师应该是在一个技术领域深挖然后才厉害的?选自己喜欢的技术方向,慢慢积累。技术背景和行业背景不要轻易换,除非自己的兴趣发生变化或者有了较好的机遇。

     

    共勉

  • Chu-Ting-Babe   01/30

    nodejs的确跟java思想不太相同,有学习的必要,但是也不是必须要啊,看情况吧

  • 黑夜   02/15

    认同你最后一段的观点。

  • 晴天 程序员 02/20

    我想说 bat 牛的 不是自己创业就是不会离开  离开了的 呵呵哒

  • aken   02/21

    java必须是主流啊

  • 瓦力   02/23

    感觉java还是比较流行

    • micro 软件攻城狮 02/24

      大王觉得用Java写业务太重了啊,所以让我们都用他擅长的脚本语言nodejs和lua写啊。。。

  • 随意   03/01

    nodejs不错,可以长期发展

    • micro 软件攻城狮 03/23

      小公司用这个做后端扛不住啊。就因为总监不熟悉Java所以逼我们都去搞这个。

  • 看见你们说的这些专业术语,我一脸懵逼的节奏,你们都在说些什么,让我这个刚入门java的人怎么办~

  • Unknow   03/02

    一个人的能力最重要的是解决问题的能力,至于解决问题的工具完全可以学习

    • micro 软件攻城狮 03/23

      项目紧急,我们学这个的成本太高了,我们还在搞语法的时候,要是用Java都上线了,就因为总监擅长node.js。但是可笑的是他都不写代码,也不加班,天天布置完就走

  • 语言只是一个解决问题的工具而已。到最后肯定是需要触类旁通的。现在团队有机会接触新的就用新的呗。

    • micro 软件攻城狮 03/23

      项目紧急,我们学这个的成本太高了,我们还在搞语法的时候,要是用Java都上线了,就因为总监擅长node.js。但是可笑的是他都不写代码,也不加班,天天布置完就走,还说什么什么很简单啊,几行代码就搞定了,只会B不会做。真正做才知道有多少坑。例如一个日志打印问题他说就写个文件几行代码一两个小时就搞定了,要是我们用Java分分钟搞定,现在我们折腾这个好几天弄个flume还生怕出各种问题。

  • 愛笑鱼121 程序员 03/06

    感觉要的是经验,技术不是关键!慢慢积累

  • 还是感觉要坚持自己的java道路,虽然nodejs可以实现api,而且我现在也正在走这条道路,但是我觉得nodejs有些地方远远不够

     

  • 小伙还是很厉害的,尝试新东西,踩坑再填坑,确实不是紧急项目应该采用的。

    • micro 软件攻城狮 03/23

      从来没想过因为这个原因跑路。。到时候线网出问题了,新人等着哭吧

  • fcoder   04/30

    作为一个javaer, 个人建议你先把java这么技术生态研究透了,搞精通了,再去横向扩展到其他的技术领域,否则就容易进入‘啥都懂,啥都不精’的怪圈。

  • seamoon   05/01

    是或多或少會有些不知前路如何走,或者重新開始的感覺。但是也不是完全的陌生

  • uljcheng2728 it打杂 07/02

    其实精通一门,学习其他的,得心应手,哈