近期的一些计划:
- 将以前写的一些文章移过来
- 开始翻译cloudera blog,目前在译Understanding HDFS Recovery Processes (Part 1)
- 重看Effective Java
- 重看Git权威指南
- 复习下数据结构和基本的算法,去LeetCode刷下题。自从大学毕业之后就没搞过这种纯算法的了。
- 看下Dremel的论文
- 研究下思维导图
有些书早就买了,读了一半就放下了,打算重读下
- Mahout in Action
- 信息简史
- 数学之美
- 编程珠玑
Just for fun
胡乱总结下,一个码农的知识体系应该分几部分:
- 理论:知道当然很好,不知道也无伤大雅。比如一些硬件相关的东西/操作系统原理/计算机网络/高级的算法/编译原理等等。毕竟不是搞理论研究的。不是说理论化不好,但过于理论化就是本末倒置。当年上学的时候没学好,不过书我还留着,有时间翻翻。
- 基础:无论什么工作都会用到。例如Java/Python一些语言层面的细节、JVM原理、GC、基本的数据结构和算法、设计模式、Linux的基本概念、bash脚本等等。
- 工具:因人、因工作而异,对我来说重要的工具包括git/maven/jira/IDE/Sublime,Linux下一些工具(vim/sed/awk/grep/top/netstat/lsof/strace/jstack等)。也包括常用的java类库(guava/slf4j/apache commons/junit/jackson/jodatime/jersey/jetty等),JDK自带的就更不用说了。
- 系统:跟工作关系很大。对我而言就是hadoop生态系统(zookeeper/hdfs/mapreduce/yarn/hbase/hive/spark/storm)。还有kerberos(目前唯一官方支持的安全机制)。也包括一些在hadoop之上的应用,比如统计、推荐、数据挖掘、机器学习。
只是个大概的分类,肯定还有很多细节。
很多技术都没有列上去,但都能按这个方法归类。
理论/基础对所有人、所有工作都是一样的。
工具/系统看自己的工作方向,因人而异。
这是一个抽象层次由低到高的过程。
有这些知识作为基础,剩下的只需要积累经验了。
切记只取一瓢,技术是无穷尽的。(最近又对Node.js很感兴趣。。。)