编程十七年心得与流水账

前言:

好些年没有写博客了。

最近公司很忙很忙,在从早到晚连轴转的情况下,感受需要花点多思索思索自己的事情。从03年高一正式学习编程算起,已经经过了17年了。事情也十年了。回想起这17年,突然有种想纪录一下流水账:一方面不希望有些器械之后忘记了,另一方面也希望自己的履历和教训能够辅助到别人。

高中三年 (2003-2006):

我03年上高一,高中是天下对照著名的搞盘算机竞赛的学校,出了几位OI金牌和银牌。这点上是一个很好的时机,之前对电脑是异常的兴趣,那时刻是比尔盖茨、乔布斯的年月,为了学习编程,刚上高中就最先了编程竞赛训练。那时高中时期就经常做ACM题库的训练,也做了美国的盘算机竞赛的问题演习(USACO)。高一的那次竞赛准备时间很短,成就很不理想,做到高二的时刻已经对动态计划,种种搜索之类的异常熟悉了,差不多刷了PKU、USACO前前后后几百道题。写个堆啊快排啊BFS啥的也基本上可以闭着眼睛写完。高二的那次省赛也没什么负担,还记得400分的总分拿了380分,扣掉的20分是有一个搜索剪枝没有写好。那时信心爆棚以为自己应该半只脚踏进清华了。

厥后没有想到自己在省队选拔赛内里做得异常不理想,现在都还记得那时有个Dijkstra需要用堆来优化的算法没有写好,以是与省队失之交臂,基本上是煮熟的鸭子都飞掉的感受。然后后面的选择就是,要么靠着省赛一等奖的高考20分加分去高考,或者加入自主招生免掉高考。由于我对应试考试并不善于,差不多也就能考600分出头,加上加分差不多能够上10名左右的大学。以是我就险些无脑去加入自主招生了。

自主招生总体是个很愉快的历程,第一次独自一人,去跑了几个都市,最后拿到了华科的资格,专业选择了自动化,由于感受自动化是一个跟机械人相关的专业,而机械人是一个未来的专业。华科的自动化的专业排名很高。然后就去了。

另外高中竞赛时期,在编程之外,很愉快地和小伙伴们在机房内里玩星际,极品飞车,而且在保送后的三四个月内里疯玩由于不需要再思量高考的事情了。也算是一个很稀奇的高中回忆。

对我来说,省选失败的履历应该是远远跨越了获奖,任何获得的奖都是已往的声誉,而失败的教训却适用于之后的一生。这个履历一直到现在都无比的好用。

另外最近几年回学校去跟之前的先生谈天,这几年的小同砚做OI竞赛要加倍有针对性了,为了加分和保送,而且盘算机专业的大火也让许多高中同砚更多的介入。不外看下来少了一些纯粹和小我私家的动力,有些时刻以为从长远来看未必最好。

大学的四年(2006-2010),武汉:

上了大学之后才发现自动化跟机械人确实有一些关系,不外博士的研究课题内里可能更多一些。控制理论那些器械看到就以为没劲,也没兴趣学习傅里叶变换、拉普拉斯变换之类的。对于电路、芯片编程另有传感器也是兴趣寥寥,可以说自动化的专业课程直到结业的时刻一点都不会。

不外好在华科除了学习考试以外,有几个跟盘算机相关的竞赛可以搞一搞,比如说微软创新杯,ACM ICPC之类的。原本被拉去加入ACM集训,厥后去了几天感受做的事情跟高中刷题没差异,就没再去了。厥后看到微软创新杯似乎有些有趣的项目,我大学的前两年加入了两次,由于对游戏对照感兴趣,加入项目是给一个类似于RTS的游戏写AI,控制机械人采矿征战之类的。第一年没有做好,第二年进了全球第二轮,详细名次记不住了,也许能排到全球前20。

第三年的时刻就以为不想加入这个游戏AI的竞赛了,厥后想了一个架起来的自行车加传感器做输入装备,在3d的天下中骑行的一个项目。类似于 https://zwift.com/ 这种项目。那时整个暑假最先召集小伙伴,然后没日没夜的做这个项目。厥后用这个项目去加入微软创新杯的软件设计竞赛,进入了中国前八。不外很遗憾没有进去中国前三,错过了那年在埃及办的决赛。

创新杯回来后,萌生了用这个项目去创业的想法,跟一些天使投资人聊了一下,也写了一些创业计划书什么的。厥后聊了一圈之后以为这个市场并不好做,体育这个领域也并不是自己很喜欢的领域,我连环法都没有好好的看过。而且真的没有找到人愿意做天使,第一次创业未遂就这么草草竣事了。

厥后一转眼就到了大四,那时在思量要不要去读个研,身边人都劝自己最好去读一个否则会碰着天花板之类的。我那时的想法是,若是能保研到一个还不错的学校那么就去读一下,考研的话就算了,本校我也兴趣不大。厥后找好同伙推荐了一下一个清华的先生,已往跟这位先生聊了一下感受对照好,他也异常希望我已往,做一做搜索引擎和AI相关的器械。然则需要我搞定一个华科外推保研的名额。然则华科的推研成就要top 15%,我的成就估量是bottom 10%,要推研需要特批。厥后想设施找到同砚要了校长李培根(根叔)的电话,在某个晚上打电话给他自我介绍了一下,看看是否能有设施特批。根叔那时准许说会协助找教务处问问,然后就再也没有新闻了。

厥后感受自己去工业界混混也应该能够学到不少的器械,三年读研不是一个很短的时间,然后我很快就最先找事情了。现在回想起来,这个可能是最明智的决议之一:研究生学位在公司招聘的时刻若是候选人专业水平类似的时刻可能会看看,在水平差不多的情况下,反而本科优势更大。

由于自己之前对3D的器械对照喜欢也有一些积累,自己也用D3D来写了一些玩具级别的3D引擎,最初的想法是找一个游戏的公司。腾讯游戏和网易游戏面试后希望我能加入他们,不外我发现自己对腾讯和网易的游戏产物(那时主要是网游)毫无兴趣,总以为是坑害无知青少年的工具。直到现在我都险些没有玩过他们的游戏。厥后听了阿里云王坚关于云的宣讲,突然一下感受到眼前一亮,那是我第一次关注到云和企业市场,以为会是一个异常有趣的市场。由于在解决庞大问题的同时还能给企业带来林林总总的辅助。厥后顺遂面试完,就加入阿里云(北京)了。

在阿里云(2009-2011),北京

阿里云在那时看起来应该是一个最有硅谷特质的中国公司,公司是满满的工程师文化,很新潮的感受。加入的团队是阿里云的算法团队,实习的时刻就最先做了一些机械学习算法的研发,主要跟文本分类另有聚类相关的一些器械。厥后在实习完,正式入职的时刻团队碰着Reorg(阿里就是Reorg多),之前我实习时刻的团队就已经散伙了,几位同事去了淘宝。

[Jenkins01] Jenkins的安装和部署(jenkins教程)

加入之后做了一些跟数据处理平台相关的器械,也就也许一两个月,以是细节记不太清晰了,自己的兴趣也不是稀奇大。过了不多久碰着新老板品数入职,我就自我介绍加入内部叫做XLab的一个项目,之后是ODPS的前身。那段时间就天天拿着MPI去写矩阵运算的程序,和一位数学PHD同伴,他卖力研究公式,我卖力把公式实现成MPI而且做性能测试。也给MPI写了一个Adapter让MPI可以跑在飞天(阿里云内部自研类似于Hadoop的系统)上。另外就花了许多时间学习机械学习的知识,这个博客内里关于机械学习的文章基本上都是谁人时期写出来的。

其中跟团队一起搞出的成就是超大规模的矩阵SVD剖析等矩阵操作,晚上的时刻就在东三环北路四周吃肯德基,照样异常快乐的时间。

入职的前半年(一直在2011年头)的阿里云也是路子很野的时期,一方面公司的士气高昂,希望自研所有的大数据系统,基本上把上古仙人如盘古女娲之类的名称都用了一个遍。另一方面自研系统缺少理性的思索和全局的架构,导致许多系统做了一半之后发现不可用。工程师陷入加班写码,重新推倒,再加班写码的循环之中。

厥后阿里云也有一些内部的危急,由于飞天的性能一直上不去,要害的营业也不敢跑在飞天上。以是阿里云在团体内部备受质疑。在事情之中也接触了一些开源项目,同事在讨论的时刻也经常说哎呀这个器械Hadoop都有了,我们也实现一下吧等等。以是我那时的想法是,与其在飞天的基础上做,还不如做真正的开源Hadoop。厥后收到了EMC Greenplum Hadoop团队的约请,就去了上海。

若是要复盘的话,当年在阿里的手艺选择照样对照准确的,云盘算,机械学加上大数据。若是按我现在的心智可能那时跳槽的时刻还会再稳一稳,至少不会由于内部或者的质疑而容易换事情,由于每个事情不开心的地方实在都差不多,那时年幼的我可不懂这些,而这些也往往只有跳过几回槽之后才融会获得。不外从另一个偏向来看,出去走走也是很有意思的事情。

EMC Greenplum / Pivotal (2011-2014),上海

2011年是Hadoop刚最先在企业市场内里最先火起来,Hadoop的名字基本上是和大数据连在一起的,提及大数据,人们的第一反映就是Hadoop。那一年也是Hortonworks确立的时刻。厥后Greenplum,CloudFoundry从EMC和VMWare内里分出来,确立了Pivotal,以是我就把他们写在一起了。

在Pivotal内里花了大几个月做了跟Hadoop周边的一些数据ETL的工具,类似于Hadoop Distcp的++版本。不外厥后真正一个有趣的项目是叫做Hamster (MPI on YARN),那时Pivotal挖来了年过半百的Ralph Castain (OpenMPI的创始人之一)。Hamster把OpenMPI跑在Hadoop上面(Hadoop And openMpi on the Same cluSTER)。那时Pivotal对Hadoop有源码有对照深入认知的工程师异常少(虽然内疚说来我们是主打Hadoop的团队),厥后跟Ralph联系了一下,Ralph也是很开心的跟我一起互助。

然则为了完成Hamster这个项目,YARN那里实在有许多跟资源调剂的功效还不具备,比如说Gang Scheduling。另外一方面为了给用户提供一个完整的体验,我们希望mpirun后面的事情都是用户不会瞥见的,以是需要对OpenMPI做深度定制。厥后跟Ralph一起介入了许多MPI社区的会媾和讨论。这个实在算是我第一次融入进开源社区的相同之中。

另外一个主要的履历是介入了Hadoop社区:记得最早使用YARN的时刻,那时YARN还主要称为MRv2。那时YARN许多器械都不完善,那时针对做MPI on YARN需要的一些功效,在社区内里提出了好一些JIRA,其中花时间最多的是YARN Container的垂直扩缩容的功效。花了两周的时间写了设计文档、代码等等,效果没想到社区回响挺大,那时Spark社区在犹豫是否用Container的垂直扩缩容照样厥后的动态申请新的Container的功效。若是能够有垂直扩缩容对Spark的辅助对照大。通过介入Hadoop也感受到了Hadoop社区和MPI社区的差别,小我私家更喜欢Apache社区更开放的方式,也坚定了继续在Hadoop项目内里继续走下去的刻意。

Hortonworks/Cloudera (2014-今天)

做Hadoop YARN哪家强呢?固然就是Hortonworks了,那时以为Pivotal内部做开源照样限制太多,社区内里也险些没人能够帮获得忙,另外自己也想去硅谷事情看看(12年的时刻出差去过一次,印象照样挺不错的)。以是那时就想着找找Hortonworks试试看,效果几面下来很顺遂就有了Offer,而且是最心仪的YARN团队。

厥后四月入职Hortonworks,先在中国短暂的事情了几个月,十月份去了美国。身边都是都是各个Apache项目的committer,短暂的顺应了之后就最先代码的孝敬了。Hortonworks算是一个很恳切谋划社区的公司,公司在最先的几年内对开源险些是无保留的状态,许多项目从内部到开源险些不需要什么批准,Hortonworks的孝敬在许多时刻也被大公司比如说AWS、Azure不费一分钱就可以拿去盈利,而且险些不孝敬回社区。由于这种吃免费午餐的公司太多,这几年开源的生态也转变许多。

在Hortonworks的四年多内里,履历了Hadoop与大数据从鼎盛到被人唱衰的完整周期。最最先的时刻只要是Hadoop相关的器械都市获得极大的关注,Apache Mahout这种粗制滥造的项目都可以火确实从另一方面证实了泡沫也多大。

厥后Hortonworks与Cloudera合并,我也转行做了治理, 现在编程不是义务而是兴趣,更多的时间也是花在项目治理、团队设计和架构设计方面。这两年照样投入了许多时间到开源社区和mentoring新人和现有的项目。也有机遇把几个项目比如说Submarine, YuniKorn 推进到Apache内里,确立社区、让更多的公司能够使用,也能够让自己的公司有机遇从这几个项目中取得商业的价值。

由于开源的缘故,可以接触到异常多的公司,从最最先的Yahoo是社区中流砥柱,到厥后Microsoft大肆进入,然后Yahoo的从如日中天到被Verizon Media贱价买入。到后面的Linkedin、Uber进入,这几年海内的公司也在开源领域发力。在已往的六年最有意思的事情是在开源的天下内里认识了许多的同伙,也全力的辅助各个公司介入开源。这几年险些走遍了硅谷所有的大公司(不只是蹭饭 ),这个履历很怪异也很有趣。

开源也是一个庞大的小天下,有种种至心无私的、辅助社区的人,也有盯着功名利禄、用开源作为跳板的人。有至心开源、无私奉献手艺的公司、项目,也有只是用开源作为幌子,挂羊头卖狗肉的商业公司。

虽然 “Business is business”,不外从做手艺的角度来说,至心开源的公司和人比开源为跳板要可爱许多。

总结一下这几年最主要的履历吧:

  • 失败永远是无所谓的,不多实验多失败不可能乐成。
  • 这许多年考察下来,从事情的成就而言,小我私家的动力的正面影响往往会跨越物质的回报。而在强烈的小我私家动力驱动下,物质的回报只是一个副产物而已。
  • 至心辅助别人是很主要的(而不求回报),虽然现在开源社区的一些同砚发的邮件和问题我很难逐一回复,不外我也会只管的辅助别人找到需要的信息。虽然商业社会提倡互惠而非单偏向的辅助,不外小我私家的考察下来,在能力相当的情况下,抱着理想主义的giver会走的比taker更远。

好吧流水账先写到这里。

原创文章,作者:admin,如若转载,请注明出处:https://www.2lxm.com/archives/4094.html