我们在今年的 SegmentFault D-Day 技术沙龙里加入了别具一格的「圆桌讨论」环节,圆桌偏重的是技术热点、成长历程以及创业路上的经验交流,和主体的严肃议题分享形成互补,就是为了做出更加 SegmentFault 式的沙龙体验,让技术与实际经验结合,让普通开发者与大牛更深入地交流。
圆桌产生了很多非常有趣的对话,且大多都是围绕 React 展开的讨论,下面摘录部分以供阅读。
上海站圆桌讨论
上海站 的圆桌由嘉宾之一的 DaoCloud 联合创始人郭峰主持,讨论嘉宾分别是 Strikingly.com 创始人郭达峰、百度EFE团队资深前端研发工程师彭星、UCloud 高级架构师林超。
从左至右分别是:彭星、郭达峰、林超、郭峰
郭达峰:其实 React 在后端渲染的时候,有三个地方。在统统跑完三个之后,它会在前端跑。你把相关的东西放到 Data 里面去,有时候你要比较注意一点。其实这方面 。
能感觉到现场咱们这些开始者其实对新技术都很有激情的,而 React 整个设计还在发展的阶段,几位嘉宾都来讲一下,如果是创业公司技术选型,比如 React 这类该怎么办?
林超:说实话在我们 UCloud 这边的话,UCloud 首先从底层来说的话,还是比较传统的,但是在整个的模块或者交互模块,在创业很早之前也是去历险。现在 UCloud 也会往 Node 这边,已经转化到这边了。我觉得是看大家一个业务方向,如果说偏重于像对底层资源调度比较高的话,我觉得还是传统的一些,至于前端的一些模块,包括 Node、React 都是很好的。
郭达峰:我想回答一下,我觉得创业公司,毕竟你拥有的资源是非常有限的。你不能说有个新的技术,我想买就买,把整个网站重写,不是特别合理。更重要你要想你遇到什么问题,什么样的技术能帮体解决。我们一开始其实是一个很大的 APP,慢慢把这些东西放到前端去。我们有一些特殊需求,网站需要SCEO,他打开的时候要非常快。我们看到 React 能解决这个问题,我们看到社区反应,我们自己试一下水之后,发现真的可以解决这个问题。而且从根本上省了我们很多时间的,我们真正把这个技术应用上去。我看到公司觉得这个东西很酷,但是不明白能解决什么问题。如果你公司不需要的话,不能盲目追求某些技术(比如 Docker 也是我们之前很喜欢的)。我觉得都是回归到最根本,你要明白你要最什么样的技术最适合解决那样的问题。
彭星:我来讲一下,因为我是出身于 BAT 这样的公司。刚才郭达峰老师说创业公司资源比较有限,如果你公司只有一个人。如果技术人员只有一个,并且那个人很前端,选择现成的比较好。这还是要看你要做的 APP 是什么样子。如果你的 IO 操作比较多,可以选择。从前端方面来说的话,我自身还是一个前端工程师。如果你选择多的应用,并且不计较渲染网页,这种情况下用传统的技术比较好,HHP 这种模板比较好,因为它比较稳定、成熟。
刚才郭达峰的老师也是那样的意思,你定制化比较高,又是在前端要求比较高的,可能是选 React.js 的选择。还有一个选择,在我们公司里面有一个本地网站。你做成一个网站,总要提供给谁管理里面的数据,这种情况下一般都会选择这种方案来做。这种方案市场上是有很多东西,其实在百度有些东西,我觉得特别好。我其实并不是打广告,因为它上手门槛比较高,叫 DR 和 DSCY。它比较完善,整个百度内部几乎都是用这个东西做内容,因为它上手虽然慢,后面开发的效率特别快。这是我的看法。
因为我们这边有技术大牛,有架构师,在座很多的都是开发者。我想我们大家都想了解怎么样能够从一个普通的开发者到一个技术大牛,或者到 CTO 或者架构师,有些什么样的困难,大家想分享给在座的各位?
林超:我可能跟这边的多数的开发者的经历不太一样,首先我一开始,我刚毕业的时候主要是在爱立信这块做网络和网络的一些设置,或者 ISDL 那块。那时候的时候,可能大家方向不一样,主要是在运营商这块。运营商也在做网络的改善,包括 ISDL 的变化。运营商的角度是非常慢的,另外外企确实跟互联网这边,这边的话看到这边所有的东西,很快就发布的。爱立信那种外企一年发布一个版本,差距很大。
后来看到云这边慢慢落地的,大家都显而易见的一个趋势,结合到我对 ISDL 的一些兴趣,之后就来到了 UCloud 这边。来到 UCloud,主要是做网络这块,其他方面都会有很多技术。我觉得一个很重要的东西,可能就是持续学习。因为有太多新的技术,很早之前的朋友现在已经到 Docker 这些兴趣。我觉得永远都保持一颗好奇的心,对于新的东西不断去尝试。我们可能自己会有一点收获。
郭达峰:在这一点上,首先第一个很重要的,你要选择一家支持你去不断学习的公司。它提供你这个环境也好,提供你这样的机会也好,可能跟你老板很有关系,他会鼓励你去做这个事情,这是最重要的一点。可能你很想做一件事情,他不给你去做,没办法学习。公司里是不是有人鼓励你去创新?
另外一点,主要看你自己。我特别喜欢之前美团的王兴他发的一条微博,他问他下面一个实习生或者刚进来的一个同学,他说:“我想要这个东西做成这样子,可能需要这个、那个技术,你会吗?”那个实习生说:“我不会,但是我可以学。”这样的态度是非常重要的,我们在座的没有人懂所有的东西。我现在不懂,没关系,我可以不懂,但是我可以学。我知道怎么样去找资料也好,我要尝试一切方法把它学会,这是从态度上,有这个转变之后,是我比较大的一个启发。因为一旦有这个转变之后,你就愿意去拿到更多的职责,你可以说我做这个担当,我可以去学,把这个东西做好。
前后的结合,你有一个这样的环境,你的心态是我可以去学好,我要尽一切自己的努力,一直尝试去学新东西这样的心。
彭星:首先我不是技术大牛,我讲一下我的看法,讲一下我的经历。因为不像刚刚郭达峰讲的环境很重要,心态很重要,都很重要。
首先自己要有一颗想学的心,这是首要的前提条件。
第二个环境要好,如果在公司里面一直你一天的工作,你自己不去想知道解决今天做业务的这种状况的话,并且不思考业务里面会有什么问题,并且尝试解决这些问题,怎么样都是在做业务。你自己要发现业务中存在哪些问题,你在写代码的时候有哪些不爽的地方,然后尝试去解决。
我觉得学习的工具很重要,你发现一个问题之后,怎么样去找到解决方案,我比较喜欢谷歌。一般有问题,我就查谷歌。一般来说谷歌之后,问题都会解决。我的想法就这些。
郭达峰:其实前面三位都说了持续学习,作为 IT 这是一定要掌握的。因为 IT 领域翻得太快,其实 IT 是个很累的事,你看我这个发型。你要敢于接受新东西,我其实接触过很多牛人。那些牛人我发现有一个普遍的特点,他们很容易接受新东西。他们不是听到一个东西,我来把它解决掉。而是我看看别人的方案可以用,现成的有什么工具可以用?我之前不是这样的,我之前有什么新东西,咱们反正上两个人,可能两个月就搞定了。我遇到个牛人他不是这样子,他遇到问题先研究,有什么没有现成的项目。你有这样的需求,别人应该也会有,然后别人实现了很多东西。甚至别人一个开源的社区,实现的东西比你要好。
第二点大家不要排斥别人的东西。我来了一个新的朋友到我们公司,让他去改一个新的程序,他首先这个事情太麻烦了,重写。我觉得这样不是特别好,你要敢于接受别人。你全写一套,真的有别人好吗?这点大家也要注意,要克服程序员是无敌的,一定要克服自己心理的冲动。
我还有一个问题,在接受新东西,因为 IT 会不断地发展。新的东西是要学,但是怎么样去判断,你们会有一个试错的过程。我其实遇到过一些问题,就是说我们用了一个新东西,发现不是特别适合。咱们有没有这样的经历?或者是遇到这样的情况以后,怎么办呢?
郭达峰:在这个问题上,我觉得试错一定会有,任何一个新的技术,你对它不够了解,就去用的话,可能会踩在坑里面。因为 Strikingly 在硅谷这边还是有一些联系,所以在这一点上我一般采取的做法,找到发明的一些技术人。采用 Docker 之前,我找到发明的人,问他我们这些想法能不能做到?我跟 IBM 的控制师交流过,他们遇到的问题跟我们很像。如果没有这些条件下的话,我觉得有一点你可能不要这么快的做这件事。你要找那个领域的大牛问清楚,到底这个东西怎么好。比如像这样的活动特别适合,你问我 React 有什么坑?我也会讲很多的,刚刚也分享了。如果你不确定,对这门技术的掌握程度的话,我觉得你可能慢一步,没什么太大问题。慢个半年也没什么太大问题。
彭星:其实我的看法差不多,因为我在百度,大公司有大公司的好,一般新东西出来,总会有人去用它。我喜欢试新东西,试着试着,帮我们试错了。当我们想用这个东西的时候,会找公司的高 T,或者在大学里问一下,有没有用过这个东西?这个东西有没有坑?是不是我们这样的形态?然后我会选择谷歌。
郭达峰:在用 React 之前,我用 React 写了一些小的东西。有一些新的东西,因为你想解决某些问题,你可以做一个小的程序。花一两个星期去试错一下,这也是练手的方法。我相信很多人冲动的时候,不要把整个东西重写。写一些小的工具,作为一个练手的机会。
郭峰:我听下来总结,让别人先去踩坑。在互联网领域也是一样的,我不一定要上全上。假设我是要上的人,我也是先把它上在哪一个模块里面,没问题了,我再升级其他的组件。
比方说像 React 这样的新的技术出来,可能跟之前的方式有一些不一样,但是我认为它还是会存在失败的风险。比方说我在这条路上已经走了很长了,突然有一天 Facebook 说我们不用这个东西了,怎么办?
郭达峰:怎么办?悲剧了。回到刚才讲的,你对这门技术,你得有深度的了解,才去做大型的尝试。我现在讲好象马后炮一样的。我一开始真的不是特别看好,他想把所有的东西一次性用一个语言解决。我觉得有点太过了。然后可能他也刹不住车了,一直在走,走到现在也快过了。假设有一个东西它所有的东西都要改,那我就有点怕,因为我对所有的东西不是这么了解。但是它想改革的那部分我很了解,我愿意去尝试。
可能因为遇到这些悲剧的事情也比较多,所以不是这么愿意做很大的改变。当然我觉得有点太过了,虽然后面一些语言设计大牛特别多,但我觉得不是语言上的问题,这是工程上的问题。工程上的问题和流程上的问题,就涉及到不同的人。这些人是不是都有你所说的那些问题的存在呢?我作为其中一部分,我觉得不大可能到我这边。这是我的个人意见。React 可能会出现这样的问题,相对我同意你的想法。我试过前端渲染,我真的想不到有什么其他更好的办法。Facebook 的人有可能想得到吗?这帮人经历过的比我经历我的还要多,我挺同意他的说法。因为我对这个有一定的了解。
彭星:我补充一下,其实很多开源项目都是社区里用的。如果很多东西它在社区里很完善的话,几乎可以用的。
郭峰:我是从创业公司的角度,这个朋友的问题很好,如果你要问一个创业公司资源有没有限?你一定要用小众的东西,别人帮你躺坑的激励比较小。像刚才那位朋友提到的,那个技术挂,你被绑架了。你不可以像大公司一样把项目组干掉。你是一个创业公司,你会受不了,不可能花 3 个月或者半年重新写一遍。创业公司一定要用有一定使用量的技术,太新的还是让别的公司躺一躺坑。