2016 是时候来一个年终总结啦

在这2016年,我获得了什么?失去了什么?是什么?为什么?怎么样才能做得更好?

在这2016年,是时候给自己一个交代了。

 

零、为什么要写这样一篇文章

现在我一个人在公司办公室里。

为什么一个人在公司办公室里?因为还在放假,公司当然没人来啊。

那么问题来了。公司明明就在放假,为什么只有我一个人提早回来了嘛。是工作没做完要回来加班,还是我这个人特别好学,要回来提升自己嘛。

开什么玩笑,其实是我记错上班日期了。

因为年初七上班人很多,因为我不想挤地铁,所以干脆7点钟就出门了,一路上我都在思考:怎么和师兄师姐打招呼,怎么祝领导恭喜发财,怎么拿个红包。来到公司才7点40,实在是太早了,公司里当然只有我一个。当时我就美滋滋:“新年新气象,就我最努力,不愧是公司第一人”。coding到了9点,我才开始怀疑自己上了个假班,怎么一个人都没有?一看日程表,才发现放假放到年初九。

当时我的心情就是这样的:

1464603129455704_meitu_1

痛定思痛,我得到一个教训:做什么事情之前一定要先搞清楚是怎么回事,再付诸实践。

来都来了,我干脆就总结一下2016年的工作。

一、我学到的东西

1.框架

具体指:

ssm,jersey,spring boot,beego

达到什么水平:

spring系列看过一些源码,因为涉及很多设计模式,所以一知半解,没有很深的了解(我个人认为spring的源码真的是非常复杂)。jersey和beego没看过。只是会用而已。以上的框架都能理解原理,能够良好地进行使用,独立解决业务问题。但是没有达到开发,定制框架的水平。

要怎么提升:

先看《设计模式》,有个基本的了解,才能较好地掌握框架的接口,了解作者的思路。同时尝试实现简单框架的功能,比如mybatis基础sql的映射,从创建数据库链接到关闭链接(mybatis是典型的使用了工厂模式的框架)。发现实现不了,就看看源码,对照着官方文档,接着实现。框架学习的优先级较低。

2.语言

具体指:

java,go,python

达到什么水平:

掌握java基本特性,能独立完成开发任务。但是java真的易熟难精,有非常多的细节问题需要注意。刚开始实习的时候,我写的jdbc可以说是错漏百出(因为框架用多了,我不知道底层的代码这样写会出问题,幸好熟练之后大为改善了)。java的一些高级特性很难熟练掌握:像是多线程,线程池,nio,动态代理,反射等,我只能算是会用而已。如果要在这些方面写出靠谱的程序,我想我还是达不到这个水平。特别是jvm等java底层的东西,可谓是个无底深坑,稍微看了《java编程思想》和《深入理解java虚拟机》之后,我感觉对底层的知识稍微明朗了一些。

至于go,在写习惯了java之后,感觉go也是特别好上手,很多思维是共通的,就是一些习惯要纠正过来,而且特别要注意规范(很多字段开头一定要大写,不然会出现很多问题)。其实要在java和go两种语言间频繁切换,我觉得还是挺复杂的。go在很多地方明显比java要简约,例如开线程,不但写起来好理解,而且实现效果非常惊人。同样的程序,go的代码可以比java少很多。但是go的原理同样也是个大坑,我也是一知半解。

至于python,我只是个完全的入门者而已。装了个anaconda玩了一下,可以写一些基本的逻辑。

要怎么提升:

java:看完四大名著,每天坚持写日志(重要),优先级最高。

go:说实话我用得还是太少了。go真的非常好用,要多用,制造需求,多写,优先级第二高。

python:兴趣为主。先熟练基本语法,再尝试接触脚本和机器学习,优先级第三高。

3.操作系统和一些工具

具体指:

linux(ubuntu,centos),maven,git,tortoisegit,jenkins,docker,swagger,nginx

达到什么水平:

linux:工作需要,我一开始对linux的一窍不通,现在已经觉得linux很爽了。能比较熟练地使用linux命令,部署环境和应用。对linux的底层有一定的了解,没有达到调试linux内核的水平。优先级最高。

maven:从打包到测试,使用得都比较多。似乎有些高级用法没有使用过,不太了解。

git:工作需要。我在实习前只是稍微会一点git而已,现在使用得比较熟练了,切实感受到到git的科学优越之处,较为熟悉基本的git工作流程。一定要熟练使用,优先级最高。

tortoisegit:git的图形界面?在对比文件版本上简直是一绝。各种图形界面非常人性化,我比较喜欢diff的界面。其他的功能我用得很少,还是比较喜欢git bash(因为习惯了),以后一定要尝试着多用。还有很多实用的功能(比如创建git仓库,等等)

jenkins:我在个人Linux上使用docker镜像搭建的jenkins,不知道为什么不能稳定运行。如果在服务器上再开除jenkins以外的服务,就会导致系统变慢,然后两个服务一起崩溃。如果单独运行jenkins,则没有这种问题。我个人使用jenkins配合github做了之前项目的持续集成,可以正常运行。之后写了自动构建的脚本,能正常执行计划构建。至于pipeline等特性,我还没有接触,没有体会到优越之处。现在jenkins似乎在力推Blue Ocean,大量使用pipeline。感觉jenkins主要还是用于敏捷开发中保证软件质量,和目前公司的流程不太吻合,所以我估计公司里是用不到了。在私下里我还是要多多研究,多多使用。优先级较高。

docker:我个人感觉2016最大的收获之一。使用docker做运维,简直爽。部署应用奇快无比。我现在个人的mysql,tomcat什么的全部都是用docker搭建的。目前我正在学习写docker file。2017我一定要好好学学docker,优先级最高。

swagger:之前我一直是敏捷开发,所以用得很多。现在因为工作模式的改变,用得很少了,只是用来调试接口而已。swagger-editor写文档实在是不好用,我已经放弃了,看看什么时候有缘再看看。

nginx:比较熟练地进行配置了。映射、日志、转发什么的感觉挺简单的。负载均衡暂时还没有尝试,似乎也不难,优先级较高。

要怎么提升:

主要是linux,docker,git,nginx,jenkins这5个关键点。其中git和linux是工作中经常用的,我一定都不担心。jenkins还好,主要是docker和nginx,工作中不一定有使用的机会。一定要自己找机会去使用(或者忽悠dalao让我去使用,然后上生产环境)

4.工作方法

具体指:

工作计划,沟通,工作流程,工作总结

达到什么水平:

之前我一直一个人在搞敏捷开发,所以花了不少时间去适应公司的工作流程。现在有了不少心得。

工作计划:工作之前要做工作计划,把一天分成上下午两部分,把这个开发周期之内的安排写成excel。上午上班第一件事看工作计划,下午也如此,要对照工作计划检查工作进度,进行调整。

沟通:当面沟通效率最高。远程沟通往往没什么用。有效沟通,要达成共识。

工作流程:这个具体看这篇文章

什么情况适合使用swagger?

工作总结:每天下班前总结一下进度,便于明天的工作安排。每周五总结一下这周的整体进度。

要怎么提升:

工作方法是一种习惯,要在工作中刻意地提醒自己。其实工作方法本身就贯彻了整个开发周期,只要坚持,就能养成。关键还是在于坚持。

二、很遗憾的东西

1.疯狂偷懒

现在我确实感觉到:人懒起来,真的是很可怕。

其实在春节前,我就做好了整个春节的学习计划,感觉充实的不得了。结果不难想象,整个春节我都在偷懒,学习计划只完成了三分之一。结果在昨天(也就是我认为的上班前一天),我整个人都活在碌碌无为的愧疚之中(最后我自暴自弃了,还是心安理得地打起了游戏)。

嗯,大概是这样:

1

总之:偷懒是人之常情,但是不能养成习惯。其实还是一个决心的问题。要知道人的本性是软弱的,只要可以逃避,绝对不会选择前进。只要没有决心,就可以找到一万种给自己偷懒的借口。

2.理论基础不扎实

其实还是偷懒的问题。

这个问题可以等价于:我很后悔没有好好学c语言、数据结构、计算机网络、操作系统、linux编程、编译原理,等等等等。

现在感觉,这些东西其实才是最重要的理论基础。工作任谁都可以上手,但是这些理论基础决定了你的上限和学习能力。

3.找实习很失败?

其实还是基础不扎实的问题。

我在网上笔试一些大企业,没有做任何的应试准备(刷题什么的),就是想看看自己的真实水平,结果是全军覆没。感觉网上笔试涉猎很广,概念的理解是最最基本的,还有一些很偏门的(我认为偏门)的问题,我回答得十分勉强。总之,我的感受是:要求基础特别扎实,理解很深,学习能力很强(事前准备非常重要,应试必不可少,可以帮助你查漏补缺)。

网上笔试的失败给了我很大的打击,可惜啊,这时我还没有总结这次失败的意识(其实这才是我觉得最遗憾的,如果那时好好总结了,后面高新兴的面试不会这么惨)。

后来面试了高新兴,感觉薪酬比较不靠谱,其他倒没什么。开始我还是很有自信的,事前好好地准备了一下,笔试之后,在一面和一个面试官谈笑风生(并没有聊太多的技术),结果连二面都没进…

我当时就不信这个邪,回去更仔细地准备了一下,再跑了一趟高新兴的宣讲会。结果这次遇到了另一个技术型的面试官,叫我回答的问题非常全面和详细,问的都是很底层的问题,刚好是我的薄弱之处。毫无疑问这次我也败下阵来了。

在第二次失败之后,我还是非常感谢这个面试官愿意给我这么多机会(一些面试官见你前三个问题回答不好,会直接把你pass掉),可以看出他已经在努力找我的闪光点了,可惜我底层还是太薄弱,没有抓住这些机会。

其实我个人认为面试高新兴失败没有什么可遗憾的,因为我把整个面试过程的所有问题全都记下来了,在反思自己的问题时,我很深刻地感觉到,我的底层知识太薄弱了。在这之后,才有了我学习的故事。

4.观察得太少

从今天的问题也好,之前的问题也好,都可以看出我平时观察得太少,太不谨慎了。做事之前一定要多思考,多观察,多问自己为什么(搞清楚是怎么回事),再去做。

春节前我很遗憾地发现,我学习《java编程思想》的那几篇文章,都是按照第二版来写的…所以春节期间我买了一本第四版,发现确实更加详细。如果刚开始学习的时候,我能多观察一下,发现当时的版本有问题,就能找一本第四版来学习,肯定能少踩很多坑。现在看来,我只能对照着新版本重新检查一次了(从某种意义上说,说不定是一件好事)。

三、要感谢的

我很喜欢JoJo里面的一句台词:

我们的灵魂流浪了数万年,或许只为在这里相遇。

我从小到大,从来不相信什么缘分和命运。但是我能遇到这么多贵人,真的能用科学概率来解释吗?

谢谢,真的谢谢,谢谢大家。

四、总结

2016年真的已经过去了。在新的2017年里,我希望自己能够保持贪婪,多问自己为什么。

欲望加速。

发表评论

电子邮件地址不会被公开。 必填项已用*标注