五月份以来很久没有写过博客了,这次简单记录点东西,恰好今天也是程序员节呢,有点意思。
Chromium
去年八月中旬正式入职百度,一年来一直在从事移动端网络优化的工作,前半年在探究如何完美地模拟出移动端的弱网效果,做了个算是独立的项目WNR出来;后面大部分时间都在靠Chromium吃饭,大体就是将它的网络协议栈部分抽离出来,作为Android/iOS的网络库来使用,然后在此基础上添加自己需要定制的东西,例如HTTP DNS、长连接维持、SSL握手优化、etc……说实话,这些事情本身很有意思,蘑菇街也在做(虽然感觉这公司快跪了的样子),认真做的话也能出不少成果,因为Chromium的体系尽管很成熟,但是覆盖面太广,所以能够挖掘的点实在是丰富。但就我自己而言,虽然Chromium的架构和设计思想都极其优秀,研究它是件很有意思的事情,然而真正到了上手开发的时候,大多的情况下都受限于已有的框架,少有当初研发弱网模拟器的那种get your hands dirty的感觉,而我个人觉得这样的挑战才能给工作带来激情。总而言之,我可能真的是不适合再在网络方向上发展下去了。特别是,我开始反感移动端上面的工作。
关于移动端
一部分原因可能是我一向就不喜欢App研发这个领域。客观来说,不管它是否真的还能代表未来,但起码它占领了现在。所以不可否认的是,目前除了深度学习,这是来钱最快最多的领域,门槛还低,只要你选对了方向。事实上我喜欢作为用户,对APP的研发水平品头论足,一有不爽可以直接开喷PM脑子进了翔,但自己并不想将精力用在去满足像我这样的挑剔用户的良好体验需求上面。其实如今已经完全失去了半年前想要把糯米变成真正高可用产品时的那种强烈的motivation——这是由一些原因导致的,其中最重要的一点是,现在没当初那么穷了,出去吃饭不至于总是要用团购,所以也就不怎么用糯米了,除了买电影票还会支持一下。
对网络优化的看法
另一方面,随着对移动互联网络特性的了解,我发现网络优化这件事本身是有上限的:它受限于协议栈的设计以及物理特性。不管你在应用层再怎么优化,搞什么多路复用也好图片压缩资源内联也罢,下面的TCP还是会头阻塞,一丢包速度就惨跪,QUIC这张大饼又不是短期内人人能吃到的东西。从场景上来看,例如在人多拥挤的商场里,不管再怎么优化,我们也不可能让用户强行就这么抢到一个信道,但如果做不到这一点,那么不管网络库多么神奇,也做不到让用户连上网络。所以想想这简直还不如塞班时代,那时候我们有神器基站锁定,用过都说好。所以事实上网络库里能做的,也就只有尽可能地提升效率,缩减请求,复用连接,减少劫持之类,本质上这些都是锦上添花,而非雪中送炭。所以虽然可做的事情多,但我却渐渐地丧失了去做这些事情的动力。
即将离去
这两天算是差不多完成了交接,周五是last day。回顾留下的文档和代码,感觉花在Chromium上面的这半年多真是做了不少事情。从当初对这套庞大代码库的初次接触,到搞明白编译系统,再到能够深入理解代码框架和设计思路,按照想法来修改代码实现效果,这期间我最大的动力其实是发现并尝试解决问题的过程。但如今项目已然进入正轨,没有那么多问题隐藏在重重迷雾之中,也没有去负责新的feature,说得直白点就是即便没有我的工作的话,对项目应该也不会产生太大影响了。所以,可能也到了去选择个人兴趣的时候吧……
新方向
总的来说,我个人比较擅长数学和物理,也是我的兴趣所在,这点多年未变,然而如今的数学能力相比以前有了极其明显的下降。一年来计算机网络方面的工作与我专业所学相关性不是很大,相比之下,我还是更希望从事性能优化,数值计算方向的工作。所以新的职位是INF的异构计算软件研发,应该也是我正式选定作为自己深入探索的研发方向了。一个比较适合我的地方是,异构计算这方面的工作存在大量待填的深坑,并且是创造而非修补,所以这就是最吸引我的地方了,嗯。