8小时之外

近期的一些计划:

有些书早就买了,读了一半就放下了,打算重读下

  • 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很感兴趣。。。)