我的 2014
今年初就为自己全年定下了基调:疯狂学习,决不能再像刚毕业那会儿一样浑浑噩噩的虚度光阴。
回首这一年,也确实过得相当充实,而且在很多方面都有了提升甚至突破。
Coding for Fun - 学习 7 种编程语言
没读过 Seven Languages in Seven Weeks,但陆续新学或深入学习了 7 种编程语言:
Golang: 去年下半年通过《Go Web 编程》学了基础语法,今年继续学习了
reflect
、crypto
、数据库操作、JSON / XML / 正则表达式的处理、网络编程等高级内容。主要产出是 Go-Snippets 和 servgo。Objective-C: 这个主要是落实去年决定的 “iOS 和 Android 两手抓” 战略,不仅学习了 Objective-C 语法,还学习了 UI 、动画、事件处理、多线程、数据存储、文件操作、网络操作、通知中心、多媒体等 iOS 开发相关内容。并且通过《Objective-C 高级编程》和《Effective Objective C 2.0》进一步学习了
GCD
、block
、内存管理等高级内容。主要产出是这篇文章和 Objc-Snippets。Rust: 学这个主要是因为在知乎上看到一个关于 Golang 的帖子种有人提到而好奇。平心而论,语言本身确实很多方面比 Golang 设计的更好(比如支持泛型等),逼格也更高(带有函数式编程的元素,门槛比 Golang 稍高),但是因为语言本身和背后的社区成长太慢(相比 Golang),个人并没有去深入学习。产出主要是 Rust-Snippets。
Haskell: 之前就有人向我推荐学习函数式编程语言,因为 Haskell 是一门纯粹的函数式编程语言( Scala 同时还兼容面向对象的 Java, 就像 C++ / Objective-C 兼容 C,所以是不纯粹的),最终选择了它。主要是通过 Learn You a Haskell for Great Good! 和 Real World Haskell 学习了函数式编程的思想(递归、惰性求值、lambda 和高阶函数)。产出主要是 Haskell-Snippets。
C++: 很久不写 C++ 了,而且现在又出来了 C++ 11 和 C++ 14 标准,所以通过 C++ Primer, 5th Edition 对模板编程、动态内存、lambda 等部分进行了学习。主要产出是 Cxx-Snippets。
Swift: WWDC 2014 推出的新语言,虽然暂时还不能完全取代 Objective-C,但肯定是未来的方向。吸收了很多优秀语言的特性,不过自己还没学完(刚学到结构体和类这块)。主要产出是 Swift-Snippets。
Lua: 这个纯属是在公司“工作量不饱和”,写来练手的 — 我现在又不做手游开发,学这玩意儿还真没啥大用处。刚学到函数这块。主要产出是 Lua-Snippets。
除了上面 7 种语言的学习,在学习 Golang 的过程中,还顺便学习了 MongoDB 和 Redis 这两种流行的 NoSQL 数据库。
Android 方面,主要是通过面试、做项目,对知识点进行了一些总结和梳理;然后就是对开源项目和新技术的关注,比如 volley 、j2objc 等。
磨刀不误砍材工 - 巩固理论和基础知识
当年大学毕业的时候,因为嫌搬起来麻烦,各种专业书包括自己买的技术书几乎都卖了。
现在终于又重新认识到理论和基础知识的重要性,所以把这些书又买回来了。
数学基础: 《普林斯顿微积分读本》、《线性代数及其应用》、《概率论及其应用》、《离散数学及其应用》;
计算机理论: 《算法导论》、《计算机组成与设计》、《操作系统》、《编译原理》、《计算机网络》、《计算机图形学》、《数据库系统实现》、《软件工程》、《应用密码学》、《神经网络与机器学习》;
然后又通过《算法》这本书对基本数据结构和算法进行了温习,并通过 刚学的 Golang 语言给出了实现:Go-Algorithm。
开源与技术交流
今年因为技术学的多,代码写得多,GitHub 上的数据也比往年稍微好看点了。
线下技术交流虽然今年没怎么参加,但还是收到了一些开发者的技术交流邮件(主要是关于 Roid-WebP 项目)。虽然不像那些技术大牛一样每天都能收到这种邮件,但至少已经慢慢起步。
More than Coding - 探索编程以外的世界
其实很早就想培养至少一门专业以外的技能或爱好,但之前一直苦于没时间。
下半年房子换到了离公司很近的地方(步行 14 min),而且又不怎么加班,空余时间一下就多起来了。
吉他
11 月底报了一个吉他培训班,老师基本每节课都在讲和弦(但讲的还是很细心,有问题也会耐心解答)。
然后自己又买了《弹指之间》和《基本乐理》,加强理论的学习,特别是五线谱相关的乐理。
五线谱不仅比简谱逼格高(可表示绝对音高),而且更通用,比如你搜一首英文歌的谱子,基本都是五线谱,所以这个必须掌握。
当然,吉他还得靠不断练习,现在坚持每天练 1 - 1.5 h。目前仍在熟悉各种和显转换的过程中(听说不少人练这个练了几个月)。
绘画
然后,本来还准备学绘画的,一来确实想培养下审美,开发下右脑,二来也算是个实际需求 — 之前一朋友托我画过一个东西,但我不会,结果找的一个同事帮忙的。
买了《像艺术家一样思考》、《贝蒂的色彩》、《素描的诀窍》,因为时间和精力有限,只稍微翻看了一些,具体的学习和练习应该要等到明年吉他学到一定阶段后再说。
其他感悟
之前太任性了,放纵自己在屌丝码农的道路上越走越远…
虽然是兴趣驱动,但 Coding 不是人生的全部,其他领域也有很多值得去探索的。
要以开放的心态做一个正常的人,而不是一个自己眼中的 geek、别人眼中的 nerd。
2015 年要做的
技术上回到追求深度的路上,不再继续拓展广度;尤其是 iOS (首先学完 Swift) 和 Golang (看完《Go 并发编程实战》) ,当然最好都能完成更多实际的项目;
当然 Android 方面也不能放松,多结合项目进行总结,继续看《深入理解 Android》和 《Android 应用性能优化》,关注开源项目和新技术。数学基础和计算机理论要继续巩固,至少看完一遍《普林斯顿微积分读本》、《操作系统》、《计算机网络》;算法也要结合《算法导论》和《算法》多练习。
结合《弹指之间》继续练习吉他和弦以及其他弹奏技巧,力争能做到自弹自唱;看完《基本乐理》,掌握五线谱读谱以及和简谱互译的技能。
在吉他学到一定程度并且时间和精力允许的条件下,要结合《像艺术家一样思考》、《素描的诀窍》正式开始学习和练习绘画(素描)。
读完《全球通史》、《哲学导论》、《黑客与设计》;时间允许的话,再读一些经济学 / 金融方面的书籍,比如《经济学的思维方式》、《证券分析》等。