腾讯实习见闻

前言

这是去年交的一篇假期见闻,回过头来一看,感觉还是收获很多。因此放上来作为存档。

正文

不知不觉在腾讯已经实习了三个多月。应聘实习生的时候还大言不惭的写着“熟悉Java+Android,有一年+Android实践经验”,现在想起来还是挺汗颜的。记得最开始导师和我和我谈话时,问我:在Android上,你觉得你哪方面比较强?当时的我不知如何作答。也是那时,我才知道移动客户端开发并非仅仅把他的效果做出来那么简单,它至少可分为:UI、数据库、网络、性能优化这几个方面,而每个方面都是一门大学问。Android是一个系统,搞好Android开发,其实就是跟系统打交道,享受到系统提供的便利,也要知晓其中的限制,而PC端需要面对的问题,在移动端也免不了要面对。

技术

实习的这段时间里,技术上的收获是很大的。以前自己学习,知识的来源大部分是书本,而接触到的书本有限,因此对Android的认知也仅仅停留在使用系统提供的API,绘制界面,完成跟后台交互这些功能。总体来说并没有脱离Android提供的框架,其实处于典型的初学者水平。最开始负责开发的模块是数据上报模块,当时在想,要怎样才能使得这个模块脱离Android提供的组件的制约独立运行呢?想了很久都不知道要怎么做。Android四大组件:Activity,Service,ContentProvider,BroadcastReceiver里,也就只有Service能提供所需要的功能了,这个组件要如何跟其他的组件交互呢?这点我又陷入了纠结。后来的后来,有一天,参考其他项目的代码才发现,原来在PC上用Java能干的事情,在Android上依旧能用,在PC上编写一个逻辑模块,启动他,并调用他执行所需的工作,同样的实现在Android上大同小异。同样是操作系统,同样是提供了虚拟机,Java能办到的,Android就可以办到。就那么一瞬间,整个人豁然开朗,感觉就像是打开了一扇门,看到了更大更宽广的可能性。

在技术上还发现学习的知识和工作所需的知识的侧重是不一样的。在大学学习的时候,我更注意的是广度,因此我搞过Web前端,搞过客户端开发,搞过后台开发,搞过服务器,很多知识了解但却并不深入。而到了工作,在所处领域的能力高低则是在这个方面的深度,有些东西仅仅了解是不行的,还要会用,还要对细节有所掌握,对可能出现的情况进行预测,这些需要付出时间去专研,去实践,去积累经验。工作中遇到的难题,将会持续加深在这个方面的能力,比如在实习中,我接触到了App性能优化,数据库缓存,App反编译,网络请求抓包,图形学相关知识等等。在这个暑期里,学到的这些东西,在我面试阿里的时候,帮了我很大的忙。面试官问的很多问题,我都能答出来,这为我拿到offer奠定了基础。不过这其实也有弊端:在工作中所能接触掌握到的知识,也受限于工作,如果工作没有挑战性,面临的将会是日复一日的重复作业,一直处于一个行业,也会因此局限了自己的眼界,这对于程序员来说,是一件很危险的事情。你将有可能因此跟一个技术领域绑定在一起,倘若这个技术领域衰落了,你的技术生涯也可能由此没落。因此我也感到很惶恐,以前我有使用RSS工具订阅一些技术类新闻,时常关注新技术,但一旦工作之后,发现由于忙,竟然拉下了。基础也忘了去夯实,这其实很危险,需要在平时不断的去提升技术敏感度,提升自己的能力的多样性,

工作流程

除了技术上,工作中也接触到了很多流程规范。开发规范、测试规范、发布规范等等。但令我印象最深的是CodeReview这个环节。这个环节将要求代码的创建者去向团队里的成员讲述你编写这段代码的思路,设计这个模块的考虑,将自己的整个创作过程重新捋一遍讲给大家听。这样就要求你在平时写代码的时候要有所注意。你会在写代码的时候有意识的去让自己的代码变得更加优秀,你也会在讲解的过程中,跟听众交流、获得新的感受。而作为听众,能够从别人那里得到成长。这是一个相互促进的过程,也是保证项目工程质量稳定,代码设计透明的关键。从CodeReview里我收获了很多。

公司制度和文化

到了大公司,还有一些其他的感受。比如资源会比较丰富。首先,能够享受到自由的互联网。各种国内被禁的网站,在公司里都能方便的访问。最爽的是能畅快使用Google,在遇到问题查找相关资料的时候特别方便。其次是公司里分工明确,有产品组、后台组、测试组、Android组、IOS组,每个组为了保证产品在一直努力着。而互联网公司,首先组织架构就是扁平化的,有问题了,各个组之间进行对接非常方便。再者是自动化程度很高,有专门的系统负责持续集成构建,有专门的工具进行代码扫描,及时发现可能的问题,有专门的工具进行性能测试,每项工作的结果都会以邮件的方式通知到相关的人。无形中效率就得到了很大的提升。公司内部还有腾讯学院,有很多的培训学习资源让人去学习,也有专门的知识管理平台去整理沉淀技术知识,能让人得到很大的自我提升。最后呢,就是公司的福利工作做得很好,节日的礼物、平时的活动、健康方面的福利、员工亲属的福利等等,很容易就让人对公司产生依赖感,愿意为公司付出更多的努力。

以上就是这个假期在腾讯实习的见闻和收获,这真的是一次非常有意义有成长的实践。

That's all, But NOT ALL.