同2018一年一样,2019年同样是充实的一年。回顾一下2019年,做出总结,不足的地方在未来的日子里改进;顺便展望2020年,给自己一个比较清晰的目标。
2019年工作之外的时间基本都花在学习英语和编程相关的技术上,学习英语花费的时间多于学习技术的时间,所有的周末和节假日基本没出过门,几乎都是坐在电脑前。有过一次例外,部门组织旅游,在泰国待过5天,除此之外,学习未曾间断。
2019年前九个月系统学习了商务英语初级、中级、高级三本书,每天晚上边看视频教程,边做笔记,针对每本书分别做了200~300页的学习笔记。听力材料也都全部整理出来,每天上班路上戴上耳塞听,周末背诵听力材料,能默写则默写出来。
通过学习商务英语,也熟悉了一些基本的商务知识,同时也发现商务英语和新概念英语其实差别还是挺大的。
《Listen to this》目的在于提高听力。学习过程贯穿2018年和2019年,可谓漫长又痛苦。
全三册分为初级听力、中级听力和高级听力,总共有113听力材料。最初也是上班或者下班路上听,每篇文章听过几遍后,通读听力材料,把不认识的单词和习语整理出来,每天晚上抽出一部分时间复习。直到现在,还是没能掌握所有的单词。
前9个月学完了商务英语全三册,后三个月便开始学习《老友记》台词。《老友记》台词总共分为十季,到目前为止,还差5集学完第二季。
学习《老友记》台词对口语提升帮助大,但是也花时间。平均下来,一集台词从学完,再把不认识的单词或者习语整理出来需要3个小时。如果每天晚上状态好,并且不被干扰,可以正常完成一集。当然,做不到每天都不被干扰,也不可能每天状态都很好。
口语在外面报了班,基本每个周末都会去上课,针对特定的话题,和外教练习或者同学之间相互练习。
为什么报班?并不是因为钱多,而是自己太宅,2018年宅着学了一年新概念英语,结果开不了口。所以不出点钱,是不会去练习口语的。到目前为止,上了十个月的课,每次上课前,都会提前预习相关材料,只希望在课堂上多说几句。口语算不上流利,但也基本能正常交流。
针对英语的学习并不仅仅只是包括上述内容,平时也会看TED演讲、奥巴马演讲、国外一些大学的公开课之类的视频,也会阅读一些英文原版技术类相关的书籍。
年初未找工作之前,补上了大学时代课本上的基础算法,基本的算法都自己实现了一遍。
后续的算法学习基本都是围绕**《程序员代码面试指南 IT名企算法与数据结构题目最优解》**这本书,基本都是每个周末尝试刷几题,完全没思路或者超出自己认知的题目直接看答案,在纸上画一画,基本都能理解。截止目前,学习了一大半。显然,只学一遍是不够的,遗忘是比较快的,后续还要针对不同的题去归纳总结。
今年大部分学习技术的时间都花在学习网络相关的知识上,重点阅读了如下几本书。
《Wireshark网络分析就这么简单》
《Wireshark网络分析的艺术》
《Practical Packet analysis, 3rd edition》
《The TCP/IP Guide 2005》
除了阅读上面几本书之外,也阅读了一些网络相关的博客以及《TCP/IP详解:卷一》中的部分章节,后续应该会把这本书看完,这本书确实值得看。
另外,在写博客的时候,参考阅读了《Effective TCP/IP Programming》中的相关章节。
Linux性能优化主要学习了极客时间专栏《Linux性能优化实战》,对部分案例进行了实际操作。极客时间该专栏还是挺值得学习的,分别从CPU、内存、IO和网络四个方面结合具体案例讲解了如何去诊断以及优化Linux系统。同时也阅读了作者推荐的《性能之巅 洞悉系统、企业与云计算》部分章节。
严格来讲,这部分的知识大部分还是停留在理论上,在后续的工作中,还是得多加实践才能充分掌握。
《Android群英传》:
原本不在计划之列,因工作需要,也就学了下Android,不过仅仅只限于非常基础的东西。
《实战Java虚拟机:JVM故障诊断与性能优化》:
书中有很多已经学过的东西,案例较多,基本上算是作为了查缺补漏的工具。
《Redis设计与实现(第二版)》:
这本只看了半本,看到一半的时候,发现书上有些C代码看不太懂,便停下来去学习C语言了。
《鸟哥的Linux私房菜-基础学习篇(第四版)》:
同样只看了半本,看到一半时被一些事情耽误,后面也没时间捡起来,估计明年会继续看完。
《Java Concurrency In Practice》:
中文翻译过来为《JAVA并发编程实战》,里面专业的术语太多,不太好理解,看完英文版之后,目前在看中文版,一边看一边做笔记,遇到代码就自己敲一边,加深印象。
这本书有技术圈的大佬推荐先看十遍,个人觉得,只需要认认真真看一遍,把代码自己敲一遍,每个细节搞懂。看完之后回顾,每个细节搞懂,三遍足以。
主要复习一下C语言,学习了go语言。
复习C语言的原因很简单,在看《Redis设计与实现》时,C语言的部分语法遗忘了,也为了以后方便学习一些C语言编写的经典开源项目。
至于go语言,原因之一是有两本书是用go语言写的,一本叫《自己动手写Docker》,另一本叫《自己动手写Java虚拟机》,准备学完明年抽空看一看,里面的源码写一写。另外一个原因则是为了防止Java凉了。
我自己所理解的软技能包括但不限于表达能力、组织能力、领导力、资源协调能力、处理情绪等能力。身为程序员,一整天大部分时间都是一个人待着,部分软技能得不到练习,平时自己也不太注意,自然也不会太好。
这方面也在尝试改变,主要也是先阅读理论的知识,再去慢慢有意识地改变。
Soft skills The software developer’s life manual
今年主要读了一本专门针对程序员提升软技能的书,名字叫做《Soft skills The software developer’s life manual》 。书中主要从事业、自我推销、学习、生产效率、金融、身体健康、精神世界七个方面给出了一些中肯的建议。
Team Geek: A Software Developer’s Guide to Working Well with Others
这本书也是专门针对程序员的,教程序员如何在团队中更好的工作,个人觉得部分章节有些鸡汤。英文版全书不到200页,自己走马观花式地看完了,后续再看第二遍,做下详细笔记。
The Healthy Programmer: Get Fit, Feel Better, and Keep Coding
这本书中文书名叫《程序员健康指南》,主要教程序员如何养成健康的工作和生活习惯,定期检查自己的健康,如何预防程序特有的职业病。全书英文版200多页,也是走马观花式地看完了。因为自己工作日每天都会运动半小时,基本没有书上所说的症状,所以个人觉得用处不大。
1.规律作息,每天至少坚持锻炼30分钟,身体是革命的本钱;
2.学习算法、编译原理、网络、Linux等基础技术;
3.每天抽出1小时复习以前学习过的英语词汇、课文等;
4.每周抽空去两次英语角,周末去上英语课,提升口语;
5.重拾日本语的学习,年末能进行基本的表达;
6.学习分布式架构相关的技术,搞清楚一些细节;
7.至于博客,有时间就写吧,有时候实在太忙,没时间写;
8.提升软技能,把握好每一次公众表达演讲的机会;
9.如果有时间,尝试做一下副业,争取能有一份工作之外的收入。