------学以致用、用以促学、学用相长
换到平台产品部后,我进了基础组件组,跟我的几个要好的同事一个组。基础组件组主要是维护一些公共的模块和组件,比如rabbitmq,mysql,redis,memcache,tomcat,ejabberd,libevent等等。这些我之前都没有接触过,一个个都是他们认识我,我不认识他们。所以刚开始的时候就一通乱学,老觉得时间不够用,经常加班,跟在终端产品部时的工作状态形成鲜明的对比。但是我喜欢这样的状态,这让我觉得充实,有劲。
我还没转过来之前,基础组件组就在预研一个新一代的网络管理系统。因为平台产品部正在做一个全新的5.0平台,所以需要一个全新的网络管理系统,来管理平台的所有服务器和接入平台的所有终端。我转过来没多久,这个网管系统就正式立项了,由基础组件组负责开发。新网管系统设计成B/S架构,分为数据收集模块,数据处理模块,数据存储模块和前端展示模块四大模块。因为这是基础组件组第一次从头开始做一个完整的项目,其他同事对界面处理这已块都不懂,然后就安排我做前端展示这一块。虽然我懂界面处理,可是我从来没有做过网页呀,没办法,只能从头开始学。所以那段时间我每天都泡在w3cschool这个网站上面,学习html,javascript,css,ajax等等。
因为rabbitmq,ejabberd等这些开源组件都是用erlang写的。我那几个要好的同事当时为了维护erlang写的组件,就学习了erlang这门语言。然后一起吃饭的时候,就一直听他们说erlang怎么怎么好,所以我一直都对erlang很好奇,一直想也想学一学。决定转到平台部后,其中一个同事就建议我开始学erlang,还把他买的书借给我看,所以我转过来之后,erlang就学得差不多了。
虽然学了那么久的erlang,但是包括我的同事在内,还没人用erlang做过实际的开发。对于一门语言来说,如果从未使用它来开发过东西,那么对这门语言的理解是无法深入的。加上erlang在并发处理这一块确实表现很不错,很适合做服务端的开发。所以我们打算用erlang来写这个新网管系统的数据处理部分和web服务器,把这个项目作为我们的erlang练手项目。
因为我是做前端展示这一块的,所以这个web服务器就由我来写。于是乎又是各种百度呀。后来找到cowboy这个开源web框架,cowboy是erlang写的。然后我们这个新网管系统的web服务器就基于cowboy来写了。
当前端界面和web服务器差不多开发完成的时候,负责数据存储模块的同事因为一些原因要离职,但是他走的时候只定下来网管的数据使用mysql+redis来存储,mysql存储告警信息,统计信息等需要持久存储的数据,redis存储一些在线状态,会议信息,告警状态等实时数据。而没有给出具体的mysql表设计以及具体的redis数据存储方案。所以领导当时就很发愁,谁来接手这一块的工作呢?当时我的工作暂时告一段落了,后续的工作必须要等mysql表设计以及具体的redis数据存储方案出来后,才能开始。因为前端的主要工作就是从mysql和redis里面取数据,然后展示给用户。所以我就主动把数据存储模块的工作接了过来,但是redis和mysql我都没学过呀,没办法只能硬着头皮学了。
虽然很多东西都是从头开始,但是我却从来没有感觉到困难或者是不适应,我很享受这个过程。在这个过程中我深深体会到了,学东西最快的方式就是学了就用。你看我这短短半年的时间里,学了多少东西,前端开发,erlang,mysql,redis,linux,而且这样学了后,印象还深。所以我要感谢网管这个项目,如果没有这个项目,平台的一些东西,我不会学得那么快。当然,还要特别感谢我的同事们,在学习的过程中,碰到的很多问题,都是在他们的帮助下解决的,他们可以说是我平台开发的入门老师。
后来基础组件组进行结构调整,改为基础平台部,包含四个组,应用组,组件组,运维组和部署架构组。因为在终端产品部的时候,我一直是LTM,对于应用开发方面的东西还是很熟悉的,加上来基础组件组后,在网管系统的开发上表现也不错。所以结构调整后,我又成了基础平台部应用组的LTM,应用组主要就是做网管这个项目。
成了LTM后,领导分给我两个应届生,跟着我一起做网管。也许你会说,你自己都才刚刚转平台开发没多久,很多东西都还没有搞懂,怎么带新人?其实不然,正是因为我也是新人,所以我更懂得怎么带新人。因为我刚刚经历过啊,知道相关的知识怎么学习会比较快,知道他们会关心那些问题,会犯哪些错误。所以对这两个应届生基本上就是按照我进平台组后的经历进行培养的。试用期过后,首先让它们学前端的东西,因为前端的东西比较独立,而且适合新人学习。对于新人来说,最好的激励方式就是,学完一个东西后,能立刻用所学的做出点什么,这会带给他们非常多的成就感,能对后续的学习产生强烈的推动作用。
前端的东西他们一个月就基本上学完了,然后网管前端的工作就移交给他们了,我就专注在web服务器和数据存储这一块工作上面。把网管前端的工作移交给他们,一方面释放了我的工作压力,另外一方面也巩固了他们所学的知识,并且进一步加深了他们对前端知识的理解。
当网管前端的工作做得差不多的时候,我就让它们开始学erlang。erlang学完后,我就给他们讲网管web服务器的代码,然后我就把web服务器的工作也移交给他们了。同理,他们在做web服务器的过程中,又巩固了erlang的学习并加深了对erlang的理解。
因为架构调整之后,之前负责数据处理模块和数据收集模块的两个同事被分到了组件组,这两个模块本来要移交给我们应用组,但因为当时我的工作已经饱和了,新人又还没有培养起来,所以这两个模块暂时还由那两个同事负责。现在新人都培养起来后,我就把这两个模块都接过来了。所以最近就一直在维护和整理这两个模块,等自己弄懂后,再给给新人培训。
从2014年三月份转到平台部门到现在,一直在做这个网管项目,一直非常忙碌。自己要学一堆的东西,要开发新功能,查问题,改bug,还要培养新人。虽然忙碌,但收获很多,过得也很充实。
我个人感觉,终端开发和平台开发,差别还是挺大的。终端开发注重用户交互和用户体验,平台开发注重高稳定,高可用和可扩展性。做平台开发要求的知识面比终端要广,平台这边需要研究的技术比终端要多,而且很多方面都值得深入研究。
2016又是新的一年,对后续工作也要有新的规划。因为一直在做项目的原因,虽然很多东西都会了,但是了解得不深入,新的一年应该再往深处去了解。还有一些比较感兴趣的东西,但是一直没有时间去研究,新的一年也可以抽空去研究研究。
-----------------------------------------------------
欢迎关注我的微信公众号 ^_^
来源:oschina
链接:https://my.oschina.net/u/1263964/blog/611835