#211 谈谈过去三个月在实验楼的实习经历

这篇文章原本写于实习满一个月的时候,本打算作为阶段性总结,但本人实在是比较懒,一拖再拖,到现在实习已经基本结束了,本该属于我的坑也基本填得差不多了,我也可能要正式迈向我的研究生新生活了。就干脆改成整个实习阶段的总结吧。

与以往大二暑假、在德国交换的时自己主动找的几个实习不同,之前的实习都是我主动投递简历、毛遂自荐。而这次在实验楼的实习确实也是一件巧事,原本还在纠结暑假究竟是回家修整准备读研的事宜、还是找份实习打发一下无聊时间。结果正好在我决定回家的前夕,收到了来自实验楼的工作邀请。心想回家闲着也是闲着,自己正好也是实验楼一个(不算称职)的用户,所以在简短的和 BOSS 磊哥聊了一些工作事项后,就接受了在这里实习。

以前大二那份实习的工作内容异常的简单,每天就是面向 C++ 修各种 bug,写一写无聊的测试,实现各种简单到不能再简单的需求,每天下班前交付代码然后领工资,两个月坐下来没有一点感觉,没收获多少新知识,最大的收获可能就是零花钱。而这次的实习差不多重新点燃了我对新技术的几乎快要熄灭的渴望。

先说说工作情况

毕设的时候,我总以为我接触过的技术是在是够多了,大大小小的各式各样的技术也不过如此,万变不离其宗,所以只要认认真真读一读文档,没有什么不能解决的问题。

然而事情并没有想象的那么简单,踩了不少坑,总结下来就是太年轻。在实验楼实习的三个月里,倒是接触了很多以前并不在意、也没有需求去了解的技术,比如 Linux 运维、比如 Docker 等等,我甚至为此列了一个长长的 TODO-DONE-LIST,并希望我能够在研究生生涯里把这些内容逐一攻破。

第一个月电脑如实的记录了我的工作状态(部分时候断网没有记录):

每天下来过得还算充实,比起整日待在在学校里、面对昏暗的寝室环境浑浑噩噩效率提高了不少。这次的实习干的事情不多,总结下来其实就是四件简单的事情:

  1. 十七门 C++/JS/Swift 学习课程
  2. 一个跨平台的桌面客户端
  3. 一套基于 ELK 的 Nginx 日志系统
  4. 一个很挫的 kNN+协同过滤 推荐系统

入职前和磊哥聊起工作内容时,我甚至不知道我主要要去解决的是已经很长时间没有碰过的 C++,直到入职后才任务才逐渐变得清晰起来。正好借助这个机会,让我有时间重拾 C++ 的一切,某种程度上算是带薪学习吧。

公司搬家前的那一个月坐在磊哥和进哥背后,所以经常能听到各种各样的关于实验楼产品的讨论。因此那一个月也可以毫不夸张的说是我在实验楼实习收获最大的一个月,也正是那一个月在我完成不到三门学习课程的编写情况下,被叫去写客户端、搭日志系统,也正是那一个月我差不多了解完了实验楼使用的主要相关技术以及还需要被解决的问题,妥妥的收了很大一波经验。

写推荐系统更是完全不敢想,尽管大三整年研究过深度学习这类技术,写过机器学习算法框架,但仍然没有任何底气能够打包票自己能够写出来,但仍还是强行装一波接受了下来。最后写完的时候磊哥突然和我说要把我的代码 merge 到主库里去,瞬间小兴奋了一下(因为即便是此前的客户端在当时也没有被正式上线),就马上滚回去重构了…

刨去写推荐系统的那一周多的时间,剩下的差不多一个半月的时间里,就是安心的去填自己留下的坑,我也不再被安排其他新的开发任务,这从我即将去读研这件事来看也是符合情理的。

再说说公司运作

我个人骨子里其实是非常反感、极度的厌恶那种反应及其缓慢的公司的,尽管多次的 Review&Meeting 可能带来业务上的稳定与安全,但如果一个非常非常简单的内容也要花上近几个月的时间来推进,每个人甚至只专注于解决某一件微乎其微的需求,那么这种公司基本上不适合我长久待下去。

在小创业公司的好处就是可以完整的接触到整个公司的运作方式,一个人可以从设计到开发,从测试到迭代、从运营到上线,了如指掌。

从我整个大四、暑假在实验楼实习以及电科研究生就读的第一个月在导师底下干活的这三段经历来说我目前倾向于将目前的公司根据技术栈进行分级:

  1. 学术驱动型公司。这类公司普遍对新技术不敏感,全公司上下对新技术充耳不闻,甚至连所谓的 CTO 对一些五年前就已经火的不行的技术闻所未闻。他们的产品使用的技术较为落后,但核心技术确实学术界中比较重要的成果。

一个比较典型的例子是我五月份跟着一个本科老师去接触的家居公司,这个公司的核心产品不偏不倚,说不上差,核心技术也有,主要在前端,可惜服务端太糙,服务端的用居然是 JavaEE 等一些老掉牙的东西,整个外包给电子科大,连版本控制都没有。

此外,有朋友跟我说他的公司居然还有用 Turbo C 这种上古神器。显然,这类公司在我心里其实已经『死』了,无论他们的产品多么出色(具有历史性的产品除外),我反正是不会接受的。

  1. 产品驱动型公司。这类公司一切以产品为重,一句话评价这类公司就是『就差一个程序员』系列。无论他们的产品有多么出色,我依然还是不能接受我的上司是一个不懂技术的人。因为开发上的事情,是很难解释给外行听的。隔行如隔山。

  2. 技术驱动型公司。这类公司愿意尝试使用新技术、生产新技术,敢于用新技术来试错,而这类公司其实是我心里最为满意的一类公司。通过在实验楼的实习,我认为实验楼可以被归类为技术驱动型的公司。从我个人对这类公司之所以存在有一个看法:老板是一定是技术出身。

实验楼的 CEO 磊哥就是技术出身,每次和他闲聊起技术的时候总能感觉到被吊打。这种谈话已经不仅仅局限于讨论某个技术的实践,而从他的话语中能够感受并学习到作为一个不再常做技术的人,如何能保持对技术的关注、并寻找合适的机会将其应用到自己的产品,最后以一个上帝的视角透过技术对行业进行观察。(经验+MAX)**2 :)。

另外举一个例子就是 ZEALER 2.0 的落败。ZEALER 的王自如只能算是一个极客,由于他不懂开发,他的合伙人李侃虽然是学数学的,但实际上也不懂开发。所以在 ZEALER 早期发展的时候有点不屑于顾,只认为『需要一个牛逼的网站』。所以导致了在 ZEALER 2.0 刚发布的时候由于技术积累不够成熟,被罗永浩吊打而萎靡不振的大半年之久。

从骨子里来说我是一个比较倾向于自由的人,不太愿意受到太多的束缚。一个从管理上『扁平』的公司是我最愿意接受的。虽然有人会说没有严格的管理感觉就像只是换了个地方坐下来写代码,但我认为有一个环境还是很重要的,因为环境对于人的影响总是潜移默化的。换句话说,你应该相信我一定会遵守并维护公司的利益,而不是一开始就用一堆规定来限制住我,Trust By Default。就这点来看,实验楼是一个好公司。

总结

总的来说,在实验楼的实习算得上是我人生规划中一次意料之外的经历,而这次意料之外的经历让我无论在技术上还是在产品运营上都学到了不少东西,也为我励志在三十岁之前专注技术增加了不少筹码。

如果我的文章对你起到了帮助,你可以选择金额不限的捐助,帮助我写出更多的文章。