网易半年实习总结&收获&感想

自一月来网易实习以来,掐指一数已经实习了大半年了。实习内容主要是对内测试平台相关前端开发。这半年时间里,无论是从技能还是心智上,我都成长了很多。总的来说,我所接触的有两个大的项目,下面以项目入手,总结下所学所做、锻炼的能力和遇到的一些问题。


渠道发布平台

前两个月参与制作渠道发布平台的后期迭代开发,该项目采用的是原生的rails erb模板,前端方面采用的是JQuery和JQuery UI框架,该项目是移动应用一键发布更新的平台,为App上线各大主流市场提供了极大的便利。

锻炼的能力

1.阅读他人源码的能力:项目已成型,相关目录结构、代码繁杂,代码也几经人手,不是每一段代码都能简单、易读抑或有良好的封装和注释,部分代码甚至让人摸不清头脑,在这样的情况下,如何快速上手、熟悉项目便是成了重中之重。尽管给了一个看似普通的需求,但是如何在正确的位置采用正确的方式来编程还是需要探究一番的。
2.快速适应新的环境:对代码的规范、相关流程、相关业务等有所熟悉。对git仓库的一些规范,如何提PR,如何去测试和review。
3.快速学习的能力:这边采用的是JQueryUI框架,中文文档不是很全面(像Highcharts中文网一样坑),调用的时候只能去看官网的文档,这时候发现自己的英语特长发挥了很大的作用。从下拉组件开始到日历组件等,保持新增的页面和内容与之前保持一致。

遇到的问题

1.阅读英文文档的能力有待提高,尽管四六级考出了excellent的成绩,发现读一些框架的文档时还是有一些吃力,吃力的原因在于对一些计算机专用术语的名词不熟悉,不过这不是问题,只要多读下去,相关术语的词汇量一定会有极大的提高。


测试用例管理平台

锻炼的能力

1.独立解决问题的能力:遇到看似难以完成的需求,该去如何实现,不能饭来张手地求人,毕竟每个人都有自己的任务和需求要完成。学会使用搜索引擎,能够找到解决问题的正确方式,不一定一开始就能一蹴而就,踩些坑是很可能的,所以边踩坑边学习边思考。将一个庞大、复杂的问题进行拆分,一步步攻破,以实现最终要解决的问题,在实现的过程中也会突发灵感想到横好的方案,可能会对之前的部分代码重构。能做到,给我一个复杂的问题,我不会随意地说不会,会进行深入的思考和调研,努力去尝试解决,独当一面。

2.思考并主动交涉的能力:一些需求给下来并没有确切的实习方案,这时候需要主动去和别人探讨一些细节问题。一开始的时候我还是比较胆小,怕自己一个小小的前端实习,给个需求,有什么好找那么忙碌的leader交流的,担心会打扰到他。但事实证明并没有,主管是很欢迎我去主动找他交流的,逐渐我也放开了戒备心。当然,去探讨前,还是得做好准备,对一些问题进行一个深入的思考,自己会给出一个大概的解决方案,去询问意见和可行性,听取主管的意见,最后确认最终的方案。

遇到的问题

1.数据统计页面:时间短 需求复杂 还是第一次接触前端MV*的大型项目,从前也就是写写Demo没有深入地理解其原理和本质。对于全部组件化+MVVM+Ajax+Restful前后端分离的单页应用,难以直接上手。由于人手的缺少和不知名的原因,也没有一个Mentor抑或导师来带我、给我指点或进行引导,只是给了时间、给了需求,一切都是自己做。我真的能做到吗?在种种压力下仿佛爆发了某种力量,内心的小宇宙开始燃烧:从学习Regualr开始,阅读它的文档,了解它的语法。了解项目的结构和代码,理解组件化的流程和调用方法,学习其路由的方式。熟悉原先调用接口的规则并在内部的NEI平台制定接口规范。熟悉需求并确认实现方案、规划任务的进度。需求并不简单,新增项目的一个数据统计页面,来展示一些统计信息。要实现一个数据展示表格,该表格集成了分条展示、分页、排序、筛选等功能,该表格原先是在另一个项目中通过erb模板+jQuery表格组件来完成的,所以对于此项目来说,不能引入jQuery,没有任何参考性作用,一切都是从头做。如果是用原生js或者jQuery,我一开始就能明确其实现流程,但是放在MV*的模板中实现,一开始我是一头雾水的。从分页开始实现、到排序、到最后的筛选,在实现过程中,我发现了数据驱动项目所采用的MV*框架所带来的便利,可以说,进一步解放了生产力,让前端开发人员不再把大量时间花在DOM的选择和代码的拼接等。筛选最后我选用了自己较为擅长的正则来判断,将每一行的数据组织成字符串,匹配的时候筛选出留下的内容展示出来。

2.单元测试: 新领域 新内容
Mocha、Karma、Chai???一下子涌入三个不熟悉的名词,从一点点开始熟悉,两天的时间学会了前端单元测试的相关内容并开始补偿单元测试。从测试执行管理工具到测试框架,再到断言库、覆盖率,从前看似高神和莫名其妙的,也能从了解个大概开始逐渐上手。

3.遗留bug修改
修补了大量从前留下来,俗称“填坑”。包括一些浏览器的兼容性bug,一些小细节的bug。其实修bug是不轻松的的。修一些只是样式导致的bug还好,但很多时候会碰到疑难bug,几经转手,如何去复现、去定位bug是第一步,如何去解决、修改是其次,bug修复后又户不会引入新的回归性bug也是一个重要的课题。要做到以最优雅的方式去修复bug,尽力避免hack的方式,很多bug从表面掩盖不如从源头解决,在一些函数代码处理中要做一个整体的调整。

4.脑图相关
由于缺乏文档、只能直接阅读源码,从源码中找接口和一些实现。从git上拷过来,大致浏览基于angular开发的脑图核心代码实现,解读部分原理,尝试修改部分代码并重新打包,以探究内部实质。


很幸运能遇上当前的主管,主管技术精湛,为人也十分幽默风趣,实习的过程中充满欢乐,也很愉快,得到了很多指点,有所长进。愿来日有机会继续合作。