19 February 2015

转眼已经工作一年半有余, 借新年的气象,是时候总结

###工作

记得在12年开始找工作的时候, 我其实几乎没有写过什么代码, 而此时已经是 9月份了, 因此,我毅然放弃9月所有的招聘, 利用1个月的时间学习 linx, C, 数据结构,算法, 在 十一后才开始找工作, 由于时间准备时间短, BAT 我基本是不考虑的, 而且只投来我们学校的公司. 不过结果还是勉强满意吧. 找到了一份做无线的公司, 公司也正处于发展阶段,薪资也还给力. 但家里觉得我一人去上海没人照顾, 希望我回西安, 直到13年4月, 在一次电话中,作为交换他们愿意 来西安帮我做饭(其实我就是希望他们不要再继续劳苦,该休息休息了). 但我大约在13 年4月份回西安, 那是基本招聘的已经晚了, 我回去的时候,西工大刚进行完西安最后一波大型招聘会.于是和家里商量 我继续去北京找工作(姐姐在北京,家里认为这样我们有个照应), 投了几家,在北航的一个招聘会上, 找到了一份工作, 由于是云计算, 当实习完一个月后, 回校做毕业设计,但北京这家公司不如上海, 经过一个多月的深思熟虑后, 我决定放弃上海的工作,去北京这家, 主要原因是行业, 我认为云计算是未来的潮流, 而无线基本是成熟产业, 所以未来发展云计算应该会好点. 就这样, 我在北京开始了自己的云计算发展之路.

天有不测纷纭, 当我刚刚转正, 母亲突发的病如晴天霹雳(后面再表), 让我措手不及. 为了平衡家与工作, 谢谢我的直接上司, 我请了整整一个月的假,后面自己的也不好意思再请, 由于姐姐,哥哥,我每人轮流一个月, 终于挨过了2013, 2014 年后,在项目告一段落的时候, 为了方便照顾母亲, 我毅然辞去了北京, 去西安照看母亲, 在母亲4月份出院后, 我也在西安找到了新的公司, 找西安的工作说起来有几分幸运, 我这个仅仅半年的工作经验,在西安的工作, 工资却涨了2/3, 而且工作基本与我的兴趣相关, 主要是 C++, Lua, 由于是新产品研发, 我们几乎不加班, 直接上司也非常nice.

经过一年半, 我接触了 c, c++, python, lua, java. c, c++ 主要是自学, python 是我在北京工作的主要语言,

对于python, 我不敢说是精通, 但各种 hack, 基本都接触过, 目前对 python 的评价是 表达能力很好,你可以面向过程,也可以面向对象,还可以函数式, 丰富的第三方库使得构建原型系统速度非常快. 但是性能却差强人意, 与 c 的交互不友好, 这也是我新的 公司选择lua 的原因. 如果不是功能非常丰富的产品, 为了平衡性能和编码的复杂度, 基本 C++ C 和 lua 的选择比和 python 的选择更好.

对于 lua, 非常简单的语言, 官方包中,没有很多库, 对于 语言的掌握基本就是一本书, 所以学习起来要轻松很多(python 有很短库是它的优点也是它的缺点, 因为掌 握那些库本身就需要花费不少时间).而且语言的表达能力也很好,没有 python的函数式编程技巧和语法糖, 整个语言中规中矩, 非常实用.

对于java, 我之前是很讨厌java的, 主要是看到很多对java 的批评, 如过度 OO, 还有<黑客与画家> 中对 java 的批评, 所以直到最近项目需要 SDN 控制器, 由于是 java 实现, 所以我不得不硬着头皮学, 但真正接触后, 你会发现事情不少那样的, 对自己以前对语言的偏见而汗颜. 首先, 很多编程非常牛的人也用java, 如我分析的一个项目的代码就是斯坦福 的人写的, 而开源界著名的 hadoop 也是 java 实现. 还有一些数据库如 cassandra. 当然 HBase 也是 java. 从语言角度, java 的 collection, nio, thread, concurrent 库都是非常精巧的设计. 再加上第三方库如 netty, logback, karaf 等,这些强大的工具让你实现一个企业级的系统的门槛大大降低, 而且性能还不差. 很多人诟病 java gc 导致的性能, 而最近的 off-heap 技术,使得 java 也非常适合高实时的系统. 总之, java 是一门非常实用的语言, 目前应该仍然是服务端主流.

对应C, 当你拿高级语言写程序写多了, 当写 C 的时候,就有种, 你以前开车, 现在不得不走路的那种感觉, 速度的差距有时候不得不感觉有点别扭, 但是你也会感到重新造轮子的快感, 我一直坚信,每一个极客都追究对事物的事无巨细的糜查, C 就能给你这种感觉.

对于 C++, 如果经常关注 C++, 一定会注意到最近 C++ 的发展, C++14 的发布绝对是里程杯式的, C++ 在保持的高性能的同时开始追去编程的效率, 如果github 上有一个项目专门交你如何用学python 的方式学 C++, 是一个非常好的尝试, 而且 14 版本的发布, 让 11 版本的那些特性真正可以用于产品. 但C++ 的复杂度却仍然在变大, 尽管 Bj 在14年末专门写文章为C++正名, 但是, C++ 本身就是为性能而生, 因此,每个使用它的人应该充分了解程序的细节, 而不是为用而用, 如果性能不是关键 那么,那些垃圾回收语言是更好的选择(尽管 C++ 14 对指针的使用进一步增强, 减少的内存泄露发生的概率). 但不管怎么样, C++ 仍然是一门值得持续学习的语言, 至少我会持续关注.

讨论完对语言的总结, 也说说对业务的总结. 我的第一份工作是云计算, 其实就是开源云计算平台 OpenStack, 主要是基于python, 开始的时候, 我非常看好云计算, 但半年后, 我对它有了比较清晰的认识, 从技术上, 我基本到了分析源代码的阶段. 我曾经阅读过 neturon 和 swift 的部分代码. 尽管我一年已经没有关注 OpenStack 了, 但是我还是觉得谈谈我对它的理解. 首先, OpenStack 本身技术一个平台, 涉及计算, 存储, 网络, 就是对整个 IT 系统的抽象, 所以说, 云计算是未来的趋势,我一点也不怀疑. 一个初学者掌握基本的知识大约就需要半年时间. 从技术上, OpenStack 通过 python 开发, 利用它便捷的库快速的迭代, 我对它的性能还是怀疑的. 但是目前,网络的短板仍然非常严重,对于大规模的自动化使用仍然有问题, OpenStack 的成熟依赖于 SDN VFN 的成熟; 目前 OpenStack 各个厂商利益驱动, 大的厂商仍然掌握着主动权, 对于初创公司的机会并不大. 再加上目前外有 Google, 微软, Amazon, 内有 阿里云,青云, 腾讯云 已经各个厂商的私有云, OpenStack 的未来还很难确定.

我的第二份公司, 算是 SDN 吧, 虽然我们只是使用了SDN 很少的一部分, 但是, 我后半年的时间主要是 研究 SDN 相关的.

其他, 我还在目前的公司帮助完成了web server 协议部分, 基本了解了HTTP 协议; 我自己工作之外买了 Raspberry Pi, 开始 DIY 我自己的一个 demo 产品.

###新年愿望

我们的产品能够如期完成上线.

学习 Scala, 跟进 C++ 最新进展

demo 产品尽快完成

##生活

当我转正的时候, 记得是农历八月十五, 早上起来, 我和姐姐商量去哪的时候, 却接到了父亲的电话, 母亲突发脑溢血,神志不清, 正在手术. 我和姐姐立马买票回家. 在医院守护了一个月, 后来母亲出院, 我和姐姐,哥哥每人请假一个月轮流协助父亲照顾母亲. 后来我思考再三, 决定回西安, 工作之余帮助父亲照顾母亲, 新的工作基本不加班,使我在工作和家之间取得平衡.如今,母亲已经能站立简单走动. 回首一年多, 不禁感慨万千. 但我仍然感谢, 我能有一个机会能照顾母亲. 而我最要好的发小的父亲却在我母亲发病的同一年突发心脏病去世.

14年的9月, 姐姐工作7年, 利用下班工作之余的持续学习, 如愿成功考取国外一家TOP MBA.

弟弟也毕业在即, 培训半年, 准备新年的找工作大潮.

##情感

我也一直在也没有遇到合适的人, 当然现在的时机也不成熟, 等 15 年过去, 母亲能够基本生活自理的时候, 但愿我的那个她也能尽快出现.

现在开始羡慕大学的恋爱, 最近回想, 其实,大学的时候, 我也遇到一个比较合适的, 但是当时 自己心高气傲, 想想些许遗憾.

##总结