码农十年连载六

------学以至用、用以促学、学用相长javascript

换到平台产品部后,我进了基础组件组,跟个人几个要好的同事一个组。基础组件组主要是维护一些公共的模块和组件,好比rabbitmqmysqlredismemcachetomcatejabberdlibevent等等。这些我以前都没有接触过,一个个都是他们认识我,我不认识他们。因此刚开始的时候就一通乱学,老以为时间不够用,常常加班,跟在终端产品部时的工做状态造成鲜明的对比。可是我喜欢这样的状态,这让我以为充实,有劲。css

我还没转过来以前,基础组件组就在预研一个新一代的网络管理系统。由于平台产品部正在作一个全新的5.0平台,因此须要一个全新的网络管理系统,来管理平台的全部服务器和接入平台的全部终端。我转过来没多久,这个网管系统就正式立项了,由基础组件组负责开发。新网管系统设计成B/S架构,分为数据收集模块,数据处理模块,数据存储模块和前端展现模块四大模块。由于这是基础组件组第一次从头开始作一个完整的项目,其余同事对界面处理这已块都不懂,而后就安排我作前端展现这一块。虽然我懂界面处理,但是我历来没有作过网页呀,没办法,只能从头开始学。因此那段时间我天天都泡在w3cschool这个网站上面,学习htmljavascriptcssajax等等。html

由于rabbitmqejabberd等这些开源组件都是用erlang写的。我那几个要好的同事当时为了维护erlang写的组件,就学习了erlang这门语言。而后一块儿吃饭的时候,就一直听他们说erlang怎么怎么好,因此我一直都对erlang很好奇,一直想也想学一学。决定转到平台部后,其中一个同事就建议我开始学erlang,还把他买的书借给我看,因此我转过来以后,erlang就学得差很少了。前端

虽然学了那么久的erlang,可是包括个人同事在内,还没人用erlang作过实际的开发。对于一门语言来讲,若是从未使用它来开发过东西,那么对这门语言的理解是没法深刻的。加上erlang在并发处理这一块确实表现很不错,很适合作服务端的开发。因此咱们打算用erlang来写这个新网管系统的数据处理部分和web服务器,把这个项目做为咱们的erlang练手项目。java

由于我是作前端展现这一块的,因此这个web服务器就由我来写。因而乎又是各类百度呀。后来找到cowboy这个开源web框架,cowboyerlang写的。而后咱们这个新网管系统的web服务器就基于cowboy来写了。mysql

当前端界面和web服务器差很少开发完成的时候,负责数据存储模块的同事由于一些缘由要离职,可是他走的时候只定下来网管的数据使用mysql+redis来存储,mysql存储告警信息,统计信息等须要持久存储的数据,redis存储一些在线状态,会议信息,告警状态等实时数据。而没有给出具体的mysql表设计以及具体的redis数据存储方案。因此领导当时就很发愁,谁来接手这一块的工做呢?当时个人工做暂时告一段落了,后续的工做必需要等mysql表设计以及具体的redis数据存储方案出来后,才能开始。由于前端的主要工做就是从mysqlredis里面取数据,而后展现给用户。因此我就主动把数据存储模块的工做接了过来,可是redismysql我都没学过呀,没办法只能硬着头皮学了。linux

虽然不少东西都是从头开始,可是我却历来没有感受到困难或者是不适应,我很享受这个过程。在这个过程当中我深深体会到了,学东西最快的方式就是学了就用。你看我这短短半年的时间里,学了多少东西,前端开发,erlangmysqlredislinux,并且这样学了后,印象还深。因此我要感谢网管这个项目,若是没有这个项目,平台的一些东西,我不会学得那么快。固然,还要特别感谢个人同事们,在学习的过程当中,碰到的不少问题,都是在他们的帮助下解决的,他们能够说是我平台开发的入门老师。web

后来基础组件组进行结构调整,改成基础平台部,包含四个组,应用组,组件组,运维组和部署架构组。由于在终端产品部的时候,我一直是LTM,对于应用开发方面的东西仍是很熟悉的,加上来基础组件组后,在网管系统的开发上表现也不错。因此结构调整后,我又成了基础平台部应用组的LTM,应用组主要就是作网管这个项目。ajax

成了LTM后,领导分给我两个应届生,跟着我一块儿作网管。也许你会说,你本身都才刚刚转平台开发没多久,不少东西都尚未搞懂,怎么带新人?其实否则,正是由于我也是新人,因此我更懂得怎么带新人。由于我刚刚经历过啊,知道相关的知识怎么学习会比较快,知道他们会关心那些问题,会犯哪些错误。因此对这两个应届生基本上就是按照我进平台组后的经历进行培养的。试用期事后,首先让它们学前端的东西,由于前端的东西比较独立,并且适合新人学习。对于新人来讲,最好的激励方式就是,学完一个东西后,能马上用所学的作出点什么,这会带给他们很是多的成就感,能对后续的学习产生强烈的推进做用。redis

前端的东西他们一个月就基本上学完了,而后网管前端的工做就移交给他们了,我就专一在web服务器和数据存储这一块工做上面。把网管前端的工做移交给他们,一方面释放了个人工做压力,另一方面也巩固了他们所学的知识,而且进一步加深了他们对前端知识的理解。

当网管前端的工做作得差很少的时候,我就让它们开始学erlangerlang学完后,我就给他们讲网管web服务器的代码,而后我就把web服务器的工做也移交给他们了。同理,他们在作web服务器的过程当中,又巩固了erlang的学习并加深了对erlang的理解。

由于架构调整以后,以前负责数据处理模块和数据收集模块的两个同事被分到了组件组,这两个模块原本要移交给咱们应用组,但由于当时个人工做已经饱和了,新人又尚未培养起来,因此这两个模块暂时还由那两个同事负责。如今新人都培养起来后,我就把这两个模块都接过来了。因此最近就一直在维护和整理这两个模块,等本身弄懂后,再给给新人培训。

2014年三月份转到平台部门到如今,一直在作这个网管项目,一直很是忙碌。本身要学一堆的东西,要开发新功能,查问题,改bug,还要培养新人。虽然忙碌,但收获不少,过得也很充实。

我我的感受,终端开发和平台开发,差异仍是挺大的。终端开发注重用户交互和用户体验,平台开发注重高稳定,高可用和可扩展性。作平台开发要求的知识面比终端要广,平台这边须要研究的技术比终端要多,并且不少方面都值得深刻研究。

2016又是新的一年,对后续工做也要有新的规划。由于一直在作项目的缘由,虽然不少东西都会了,可是了解得不深刻,新的一年应该再往深处去了解。还有一些比较感兴趣的东西,可是一直没有时间去研究,新的一年也能够抽空去研究研究。

-----------------------------------------------------

欢迎关注个人微信公众号 ^_^

相关文章
相关标签/搜索