陈涌,网名“题叶”,Teambition前端工程师,非计算机专业出身,通过自学顺利进入前端开发领域。长期活跃在前端开发技术社区,并维护着React中文社区。将国外社区前沿的Web开发技术传播入中国,是他正在并将长期投入精力去做的事情。
该采访中,陈涌向我们介绍了他的 成长经历及学习心得,很值得广大前端开发者参考借鉴。
CSDN:首先请做一个自我介绍。
陈涌: 我叫陈涌,网上会用“题叶”这个网名,或者“jiyinyiyong”的 ID。目前专注于前端开发领域,主要关心的是制作图形界面的小应用、函数式编程这些方面的技术。另外也在SegmentFault上写技术文章,还有在Mix上学习画画,都挺有意思的。我在公司里主要专注于研究单页面应用方面的技术,研究React也是出于这个原因。
在社区当中比较活跃的除了技术文章,主要是维护 React中文社区 ,同时还帮着F2E.im的同学一起维护微博。把国外社区前沿的Web开发技术在国内进行传播,是我长期投入精力去做的事情。目前至少在React中文社区当中我觉得效果是不错的。
CSDN:您什么时候开始投入到前端开发领域?背后有什么样的故事?
陈涌: 我于2013年春天开始实习,那时候已经大四了。单单说写代码,大二就开始自学CSS。那时候我主要精力花在Linux上,我折腾了很久的Ubuntu,因为喜欢Linux桌面那种华丽的效果。跟很多人一样,被计算基础华丽的界面和动画所吸引,希望自己能做出一些漂亮的东西来,后来发现需要编程,就开始找门槛最低的途径,自学了CSS,后来还有CoffeeScript。
因为学CoffeeScript我还认识了后来推荐我进公司的寸志。但那之前因为学习Linux有机会加入了学校的精弘网络社团,跟他们一起度过了两年时光,还参与了学校FM站点的开发。当时做得比较粗浅,但也因此在后来找实习的时候找了份前端开发的工作。
CSDN:您在前端领域都做出了哪些贡献?
陈涌: 2014年底,跟几个朋友交流,并用Discourse搭建了React中文论坛,并且一直做着react-china微博的维护,后来就与几个朋友一起推动React.js在国内传播,我觉得这是我目前最有成果的事情。特别是Facebook发布React Native以后整个技术圈子对于 React的关注度一下子就提高了。我很高兴自己在其中贡献了一份力量。
自2012年在知乎上了解到 Hacker News 的重要性之后,我就一直保持关注,也渐渐让我了解到国外的技术氛围相对于国内领先了多少,所以我很在意国外的技术圈子深入挖掘的那些技术。特别是函数式编程,我注意到前端已经开始借鉴函数式编程的研究成果解决实际的问题。所以我也在关注函数式编程的中文社区,比如Haskell中文社区、Elixir中文社区和Clojure的社区,希望能推动这些技术在国内传播,并且能对同行的前端开发者带来可以借鉴的技术成果。
CSDN:您目前比较关注前端的哪些技术?平时主要通过哪些渠道获得前端技术的相关信息。
陈涌: 特别吸引我的两种技术是:华丽的界面和交互,强大的开发技术。前者我限制在前端,主要像React.js 、Famo.us这类能帮助开发者快速开发交互界面的框架,后者就是函数式编程语言,也就是上边提到的几个,他们在前端也有PureScript、ElixirScript、ClojureScript 这些实现可以应用。
说到技术信息源,Hacker News绝对是目前Web开发领域质量最高的,我觉得从它扩展开,顺便阅读一下 SmashingMagzine 、 Medium 、 Designer News 、GitHub上边的资源也就好了,如果有时间发散一下还是挺多的。
CSDN:能否谈谈您获得今天的成就,自己的一些学习方法或技巧。
陈涌: 我是非计算机专业出身的,知识也主要来自于自学,加上在网络社区,还有社团的同学或者后来的同事之间耳濡目染。另外我挺喜欢的一件事情是用代码写小的项目做各种界面试验,在这个过程中实际积累了很多编程中操作的习惯,这对于技能的积累来说非常有帮助。不过我觉得系统学习编程对于开发者来说更重要一些,前端是快速发展需要不断从社区吸收营养的职业,但是出了某个范围,各种理论体系方面的知识就很要紧了。我觉得那些是很重要而且未来需要补上的。
CSDN:您目前就职于哪家公司?担任什么职务?可否简单介绍一下公司前端团队。
陈涌: 我在Teambition担任前端工程师,主要负责简聊项目的前端。我们公司还有Angular 中文社区的站长严清,不过我们是在两个团队。其他还有不少前端的同事,我们一起主要的心思花在Teambition实时性很高的单页面应用上边,同时也维护着公司业务涉及到的一些站点。
CSDN:贵公司在研发时主要使用哪些前端技术?前端技术架构是怎样的。
陈涌: Teambition的应用的主要特点是基于网页,是实时性很高、功能也较多的单页面应用。我们做任务管理以及团队交流都需要实时进行,所以前端开发也围绕着这样的问题展开,用前端 MV* 方案编写应用,做完整的打包和上线。目前主站产品用的是Backbone,简聊用的是React.js ,其他还有一些用到Angular的应用以及服务端渲染的站点。后端主要基于 Node.js 、MongoDB、Redis这些方案,而且前后端分离在两款单页面应用当中是非常明确的。
CSDN:目前公司有没有尝试使用一些热门/新的前端技术?公司尝试这些技术的原因是什么?通过您的研究,觉得这些技术的优缺点是什么?
陈涌: 简聊前期和主站一样用Backbone,然而Backbone对于View层仅仅提供模板引擎,剩下的操作只能通过jQuery进行。这一点随着项目扩大,开发的负担也就越来越重。我原来一直在关注Angular、Vue这样的MVVM的方案,正好那段时间Facebook发布了他们的Flux 方案,我深入了解之后发现Flux对于单页面整体架构的思考非常清晰,而且作为类似模板引擎的实现很方便从Backbone进行迁移,所以选择了React。
对于Angular我了解不够多。但是首先Angular 1.x的学习成本很高,React却是非常简单的,我认为这是对开发可靠性来说比较重要的一个考虑。而React在我们大半年的使用当中,也感受到一些数据层不够成熟的问题,也是Facebook计划发布Relay的原因。我也考虑过简聊全线的网页迁移到React.js,但这时React.js本身巨大的体积也是一个不足。
CSDN:现在前端新技术不断推新,您觉得前端开发者/公司该如何选择新的前端技术?
陈涌: 前端目前技术范围已经越来越广了,大公司也努力把Web建设为一个平台,这个平台最终涉及到的技术也繁多和复杂。所以还是具体到项目需求,仅仅讨论单页面应用的话,需要在应用架构、界面组件化、服务端渲染等多个方面都有清晰的演进方案,我会推荐大家加入到React.js这个社区当中来。当然Angular 2也许未来会是很棒的方案,目前我了解不太多。
CSDN:您觉得优秀的前端开发人员必须具备哪些技能?该如何提升自己的前端技能?
陈涌: 前端开发者对渲染引擎,还有编程语言本身应用有足够的了解。渲染引擎这里当然说的是DOM树、CSS Object Model等等,对于加载和渲染的过程也应当有深入的了解。另外就是编程语言的特性,我个人跟着社区接触了不少函数式语言,所以对JavaScript并不觉得非常信任,那么我所指的编程语言其实是函数式编程语言了,那些语言里数据怎样抽象,过程怎样抽象,大规模程序如何完成建构。我觉得对于开发者来说,掌握用代码进行抽象,实现业务逻辑,实现图形界面,就非常重要。
我个人全职做前端开发的时间不够长,所以觉得开发经验会比较重要。广泛了解和学习理论,然后通过大量的实践来积累经验,这是我认为加强技能的主要的途径。
CSDN:请分析一下前端开发人员的未来职业发展前景。
陈涌: 我对前端整个社区的情况不够了解,整个行业的前景我看不明白。我单单说对于单页面应用的想法吧。站在简聊已有的实践上我并不是很喜欢前端开发者前面的路,前端开发实际上应该是两部分工作,一部分是编程,一部分是界面制作。
编程部分的主要内容是跟服务器的数据库以及其他众多的客户端之间同步数据状态,就像是 Meteor框架做的,实时Web应用,这其中就需要投入很多精力解决数据模型、网络的问题。界面部分则是UI交互设计的工作,需要很多的设计理论的理解,还有把想法转化为代码的能力,应用所需要的效果在DOM的渲染引擎中难以完美实现,所以Famo.us框架甚至抛弃浏览器DOM原生的排版算法作为解决问题的方案。
编程和界面两部分工作只有代码使用一样的,其他知识差别很大,那么一拨人想把两边全部精通难度就大了。所以我期望的主要是一部分开发者能专注于数据和网络,以及单页面应用基础开发架构开发工具的制作。另一部分开发者能专注在之上专心制作界面设计交互。用这样的方式实现功能的稳定性,同时也让功能开发做得高效和精致,我认为在这两个方向上前端技术会继续被关注和推进。(记者:陈秋歌)
《前端人生》,一个展示前端技术人才 励志故事和成长经验 的平台,帮助后来前端技术开发者指引方向,少走弯路,获取不断成长壮大的力量。
只要你对前端开发技术有着执着的追求,活跃在该领域,并有着丰富前端研发经验,欢迎联系我们(发邮件至chenqg@csdn.net,或微博私信:CSDN陈秋歌)。CSDN真诚为您提供展示自我风采的大舞台。
欢迎加入CSDN前端交流群:218126086,进行前端技术交流。