毕业工作五年的总结和感悟(上)

        时间过得太快,马上就要大学本科毕业五年了,从实习就开始加入现在的公司,所以算起来加入现在公司的时间已经超过五年了。五年的时间很长,而且这五年也是人生中事业(说事业感觉有点高大上,说职业可能更合适,不过我喜欢把什么事情都当做一份事业来干)最关键的时间。上次写工作总结的时候还是4年前了吧,刚毕业那个时候由于时间全部用于工作和研究技术了,所以可以抽出很多时间来写东西。

     其实写文章或者博客是很花时间的,因为需要回忆和思考。正因为需要回忆和思考,所以写文章和博客其实对自我的提升还是很明显的,特别锻炼自己的表达能力。很多人其实技术很nb,但是就是表达不出来,其实就是因为对自己的总结和思考太少了。很久不写文章了,我现在写起来都是很慢的,想表达一个意思需要思考很久。

在正式写工作总结之前还是想谈谈今天回老家的感受。很多邻居见了我都说我很多年没有回去了,但是我总是觉得我应该是经常回到那个熟悉的地方,感觉就像前几天刚回来过一样(以前经过但是没有回去走走,熟悉的感觉应该是来至儿时的记忆和梦中经常回去)。回到老家的每一个地方(我们的土地、老房子、老老房子、我们的每一棵树)都是那么的熟悉,那种儿时的回忆和感觉一下子就在我脑海里不断的浮现。这次回老家虽然很匆忙,但是还是利用有限的时间把儿时的记忆都带着我现在的身体去过了一遍。遇见了很多熟悉又陌生的邻居,由于我时间也很赶,他们也正在忙着自己的事情,都是简简单单寒暄了几句。回老家所有的回忆都是儿时的艰苦生活,这就是触景生情。老家的格局变化不大,就是那条清澈的小河被污染的太严重了。

      先简单介绍一下这五年都做了一些什么样的工作,然后在详细描述每一个工作内容的具体情况和收获。2011年3月进入公司实习,实习的内容就是开发一个Symbian的客户端(那个时候Symbian系统还占据大量中国用户的手机客户端),后面毕业以后进入公司的第一个除总部以外的研发中心,这个时候开始调研分布式日志系统,也开始接触hadoop生态系统,接着开始做基于分布式文件系统的云存储系统,再下一个项目就是统一日志平台(类似splunk和elk的产品),后面又做了一年多的公有PAAS平台,几个月的Docker。以上所有的项目我都是以技术负责人或者系统架构师的角色参与其中。2015年上半年带领五十多人的团队做整个公司的研发工具生态链的建设,下半年做一些技术产品创新的项目,其中异步并行框架小有成果。目前主要负责技术委员会的建设、部门的服务器资源分配管理、专利评审、部门技术晋升流程与制度的制定和优化等,也负责部门一些项目的技术方案和架构的优化。

      在进入现在的公司实习以前,自己已经在一个家具公司实习过一段时间,在家具公司里面主要做C#的开发,不过这个公司只干了一个多月时间,然后又去了一家大型的上市外包公司做兼职,具体的工作就是在地震局做GIS系统的开发,主要使用到的技术就是ArcGIS+C#,这个从我最早的博客内容就可以看出来。后来我还使用这个项目作为我毕业时的论文,并且还得到了学校的优秀毕业论文。真正进入现在这家公司实习是2011年3月14号,那是从学校坐了1天的火车去首都实习的。实习的内容就是根据我们自己擅长的语言安排到各个项目组当中。因为我大学期间做嵌入式相关的项目和研究,所以对于C和C++比较熟悉,当然java语言基础也是学习了的,会使用SSH框架,不过自己当时的爱好和侧重点还是在C++上面。所以自己去了一个与C++开发相关的Symbian客户端项目组,在这个项目组中本身人就不多,2个有经验和2个实习生(加上我)。因为以前没有接触过Symbian系统的开发,所以用了2天熟悉了Symbian开发环境和工具,做到能够自己开发一个简单的应用并且能够在Symbian的模拟器上运行起来。在熟悉开发环境和工具(sdk)期间给我们实习生安排了两个小项目给我练手,一个是简易的计算器,另一个是九宫格。这些项目虽然很小,但是对于从来没有接触过Symbian开发的人还是不知道怎么下手。但是由于自己的计算机基础很好,主要是在大学期间锻炼好了很好的自学能力(大学期间自己不断自学了很多计算机基础知识和一些高级的专业知识:例如编译原理、linux操作系统内核、嵌入式操作系统uCOSII、ARM体系结构与开发,所以有很好的自学能力),所以用很短的时间就完成了这两个小项目。leader看我完成的还不错,而且通过平时和他的交流,他也深深的感受到我良好的计算机基础知识和很强的学习能力。所以leader就开始分配一些真实项目的开发任务给我,但是都是整个项目里面的很小的一块,而且框架已经搭建好,只需要在固定的地方用代码实现指定的功能就ok。接触正式项目时,我还是非常小心翼翼,比较这是我第一次开始做正规项目,因为这个也是比较简单的功能,而且有成熟的模板可以参考,很快的就完成了功能。不过刚开始我总是很小心,所以进行多次的测试和验证我实现的功能,确定了没有任何问题才提交给leader。经过这个正式项目的小模块功能锻炼,leader和我都发觉自己完全可以胜任正式的开发任务了,就开始把很多独立的小模块交给我,包括架构的设计和代码的组织。随着不断的进行,我对Symbian开发也是更加的熟悉,基本上各种复杂功能和架构设计都是可以轻松的完成。最终我们Symbian开发团队在时间很紧迫和人员很少的情况下顺利的完成了Symbian客户端上线。虽然在这个项目组中我只简单的待过一个多月,而且这一个多月基本上是天天加班到凌晨3、4点,周末也是经常加班,我记得清明节也是连续加班,都是大家都很激动的填写加班申请,而且都写的要求是工资低加班,结果后来还是只换来调休。这也是我第一次正式的加入公司和团队一起作战,当时的自己每天都是充满了激情,不断的编写着自己喜欢的代码,累了的时候就和团队的其他人一起吹牛,一起吃饭和一起喝酒。我还记得一个周六加班的时候,那个晚上有刘德华的演唱会(我也是刘德华忠实的粉丝,不是因为他帅,也不是因为他歌唱得好,更不是因为他的演唱会是多么的精彩,当然更不是他是影帝;是因为他是劳模,一个靠自己辛辛苦苦努力实现自己梦想的普通人),因为我们上班离开演唱会的地方还是有一段距离。所以我就需要早一点出发,我也问问我们组的其他同事是否想去,他们刚开始说不是很想去,那我一个人就自己出发去了,刚到楼下我们的leader就打电话给我,问我走到哪儿了,等他们一起去。最终我们4个人一起到达演唱会地点,现场去买的票。本来我说买最便宜的180,结果leader说买最贵的,不过当时最贵的票也只剩380的。我们就买了这种票,不过还是离舞台太遥远,看到的刘德华很小,只有通过大屏幕才能完全看清楚,不过现场的气氛太棒了,基本上是全场一直在一起high。我也算实现了一个小小的愿望。通过这个实习的项目让我完全的进入了工作的状态,在这期间我也学习了很多移动端的开发知识,自己也自学了一点Android的开发。所以对于一个想进步的人是没有任何理由阻止他的,虽然我们工作的内容有限,但是我们可以自己去学习和工作内容很相关的技术,后面从我另一个项目也可以看出来。

        实习期间还发生了一个小插曲,就是在最后阶段我需要回老家参加一个高中同学的婚礼,因为他提前一个月就给我说了并且我也答应了,所以必须要回去,而且一个星期以后又是我亲哥结婚,所以我就准备请假回去了,并且就不回来继续实习了,因为还要回学校准备论文和项目。但是由于项目还有一些紧张,需要继续在干一段时间。当时我提出来以后上面的leader就不是很高兴,就找了另一个直接管我的leader(我是从其他团队划分到实习的项目组的,我真正的leader也是我现在的直接leader是即将成立分研发中心的负责人)。当时我和直接管我的leader其实根本还不认识,他就直接过来找我谈话了。他了解了一下事情的经过和原因,然后我们就随便的聊了一些工作的事情,讨论了以后即将成立的研发中心的工作内容情况,他也了解了我熟悉一些什么样的技术,以及喜欢做一些什么样的技术。当我说了真实的我掌握了一些什么的技术以后,他比较惊讶,还反复问我没有吹牛吧。当时也没有办法证明,就只能说后面有机会试试这些技术。最后还是找到一个折中的方案解决这个问题,就是参加完高中同学的婚礼在回来工作一个星期。不过当时公司是不能对这种情况的机票进行报销的,但是也不能坐火车,因为时间来不及,最终我出了一半的机票,leader他们帮我解决了一半的机票。

        毕业以后进开始真正的进入公司了,我进入的就是公司刚刚新成立的分研发中心,我是这个分研发中心的第一批员工,我也是公司招聘的第一届应届毕业生。因为是刚成立的分研发中心,很多项目都需要从北京拿过来,当然还需要自主的研发一些新的创新项目。我毕业后进入公司的项目就是调研一个分布式的日志采集传输框架,最终选择的是一个Facebook开源的C++实现的框架scribe。我们的目标是让散落在各个服务器上的日志最终归集到一个集中存储里面,因为各个项目当时都是单独的汇总日志进行各自的业务数据分析。所以我们当时最主要就是给各个团队提供技术方案,并且帮助他们部署和解决遇到的问题。因为scribe的代码本身不多,所以完全可以全部掌握其代码,有了这个计划就需要完全投入时间去研究这部分代码了。在研究代码的过程中还是发现很多不足和值得改善的地方,但是目前是没有计划去修改的。大多数人最多做到这一步就已经很不错了,能够把scribe的源码全部熟悉,其实很多人在工作能够熟练的使用和运用就已经很满足了,因为已经基本满足业务使用了。如果对技术有比较大的兴趣的话会把源码大致浏览一遍,但是说实话scribe其实本身是很简单的,只是考虑到各种日志传输的情况来支持各种业务,真正核心的技术是底层的分布式数据传输框架thrift。这个框架是真的很强大,能够支持各种语言开发数据传输,并且能够支持多种协议。如果你不是一个真正喜欢技术并且愿意刨根问底的人根本不会对thrift感兴趣,或者根本都不会注意到它的存在和作用。因为当时研究scribe一段时间以后,确实觉得没有什么可以继续深入去研究和学习的了,为了满足我强烈的学习愿望,我会对工作中涉及到的各种高级的技术产生浓厚的兴趣,所以自己又开始深入研究了thrift,并且针对它的C++版本实现完全的阅读其源代码。包括从它的IDL语法,怎样通过IDL文件生成对应的代码,各种传输协议的支持,编码解码和服务器模型,序列化方式等方面完全的从源码进行解读,当然还和其他类似的框架进行对比。如果你还觉得不过瘾,其实还可以继续深入下去,thrift它的实现又使用了C++的boost库和libevent库,这个两个库又可以学习很长时间了,并且都是很有技术含量的技术。还可以在继续深入,因为这些库的实现最终都会依赖linux的API,可以继续学习linux系统编程。如果对linux的系统API实现感兴趣完全可以继续研究linux的内核实现,这样你完全就可以仅仅通过一个简单的分布式日志传输框架就学习到最最底层的linux内核。很多人抱怨工作中使用到的技术都很简单,只是简单的写写业务逻辑的代码,特别是做web开发的,总觉得自己没有机会接触到一些nb的框架或者更加底层的技术。其实很多技术就在我们工作的身边,只是我们顺其自然的把它们都忽略了。例如很多都是做java开发的,觉得能够使用java的jdk和ssi框架开发业务逻辑就ok了,而且也觉得这些业务逻辑做过一次两次就没有什么难度,如果自己的技术需要提高根本没有机会。其实真正对技术感兴趣或者对自己有追求的,java使用的jdk完全可以深入的研究,看看他们是怎么实现的。jdk继续深入就可以了解到jvm的相关知识,如果继续深入完全可以看看开源jvm的实现,开源jvm最终也会使用到linux系统api,那么也是完全可以继续接触和学习linux内核的。ssi框架也基本上都是开源的,如果愿意深入学习其原理,完全可以掌握这些框架的实现,学习他们优秀的设计和实现。很多东西大家可能看起来学习没有太多的用处,但是学习这些东西其实在悄悄的改变你对技术的认知和感觉,然后使你的技术在无形中成长,很多时候你不知不觉就已经使用上这些技术了。

        先写到这里吧,感觉写的东西太多,一篇文章很难写完,就是上面这些内容我都已经写了快一个星期了,总是写写停停。打算还是分成三篇来写吧。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

谷歌利用大数据提高通用翻译

20611
来自专栏知晓程序

一篇文章读懂微信小程序 | 观点

2314
来自专栏罗超频道

应用分发创业者已无机会

在百度选择91无线之后,独立应用分发市场的未来变得严峻起来,发生一系列连锁反应。机锋网遭贱卖,其CEO谈毅甚至认为,三年内完全独立的应用市场将会消失。此后,P...

3868
来自专栏云市场·精选汇

小程序分类知多少,八大分类你来找

小程序现在已经成为了互联网圈的热门讨论对象。从 2017 年 1 月登场,到之后被称为鸡肋,再到现在反叛逆袭称为互联网圈的大热点,小程序经历了不小的高低起伏。现...

3.8K107
来自专栏云加头条

腾讯云工程师:中小企业的四个上云要点

这是来自我们服务保障中心一名高级工程师的工作思考,他列出了一份中小企业的上云清单,在此分享给大家。

6160
来自专栏PPV课数据科学社区

大数据从小做起—中小企业的Big Data之道

任何一个时代或者模式的兴起,都离不开与之相关的Killer App,比如,C/S时代的SAP ERP,互联网 1.0 时代的门户,以及互联网 2.0时代的搜索和...

3335
来自专栏Java学习网

新手程序员应该知道的7件事

新手程序员应该知道的7件事 资深软件开发人员分享的一些关于专业化编程的经验和教训,这些经验教训都是经过多年历练总结得出的。 如果你刚进入专业的软件开发世界,那么...

2397
来自专栏大数据文摘

失败成就伟大:谷歌的23个失败案例

7791
来自专栏FreeBuf

企业安全团队强大与否,看这八个关键指标

? 概述 安全人员喜欢用一些比较消极的方法来防御恶意攻击,比如“没有消息就是最好的消息”(此说法源自美国南北战争时期,由于打战死人后,家人都要收到阵亡通知书,...

2065
来自专栏知晓程序

各大 App 直接打开小程序!微信收割移动互联网的时间开始了

1283

扫码关注云+社区

领取腾讯云代金券