Adobe (Marketo) 入职半年总结

从2019年7月底到现在,已经工作了半年。在这半年里,基本完成了从学生到职场的转变,也从这个过程中学到了很多东西,在此做一个小的总结。

索引

要说的分为以下几个方面。

  1. 专业技能
  2. 工作流程
  3. 公司体制
  4. 与人相处
  5. 思维方式
  6. 对社会的认识

专业技能

提高最多的应该是写代码能力了。但是与同龄的一些名校CS PhD相比,还是相形见绌。一位好友曾经和我说过这样一句话:“其实我并不觉得他聪明,只不过比我们多学了几年计算机而已。”

但是科比也同样说过这样一段话:“对于我来说,这是常识。如果你的工作就是尽可能地成为最好的篮球运动员,要那么做,你就必须练习和训练。你希望尽可能地训练,尽可能频繁地训练。所以如果你早上10点起床,在11点12点训练,就12点吧,在12点训练,训练2个小时, 12-2点。你必须让你的身体恢复体力,所以你就要吃,恢复体力。然后你再回去,6点再次开始训练,6点到8点。现在你回家,你洗澡,吃完饭,睡觉,醒来,你再这么做一遍,对么?一共有2个session。现在想象一下,你在早上3点醒来,你在4-6点训练,回家,吃早餐。放松,blabla。现在你又回去了,9-11点对么?你放松休息。然后忽然间你又回去了,2-4点。现在你又回去了,7-9点。Look how much more training I have done if by simply starting at 4. Right? So now you do that, and as the years go on, the seperation that you have with your competitors and your peers just grows larger and larger and larger and larger. And by year 5 or 6, it doesn’t matter what kind of work they do in a summer, they’re never gonna catch up because you’re 5 years behind.”

现在,我觉得从来没有“聪明”一说。只不过是因为一个人见得多了,思考的也多,辅以正确的思考方法,看事情、看世界自然便通透很多。勤奋也是一种能力,多学了几年,同样带来的是能力的提升。与智商无关。为自己之前一直认为是自己的天赋加成而产生的骄傲,而感到羞愧。

开始做工程项目以后,首先发现的是自己思维方式的局限。对于工程项目而言,我认为有两点比较重要。一,实现能力。二,架构能力。

实现能力是指快速写出可用的代码的能力。架构能力是指科学地写代码的能力。写出代码并不难,刚接触编程的人同样可以写出大段大段的代码。但是如果抽象能力不够,写出的代码将会是纯面向过程的,而非面向对象的。况且现在又出现了多种编程范式,比如应用越来越广泛的函数式编程。这样的代码,是不易维护的,是很丑的。所以实现能力强,并不一定说明工程能力好。所以还要培养架构能力。抽象思维提升以后,对于系统的设计,就会有一套自己的方法。

开工至今,上了3门公开课。其中2门是Scala语言入门,简而言之就是介绍了Scala语言的一些特性,以及函数式编程思想。从面向对象编程,逐渐迁移到函数式编程。而Scala就一门完美的过渡语言。另外一门是CMU的Introduction to Database。遗憾的是,作业什么的并没有跟上,只是把课程视频看了一遍。

具体的工作经验,还涉及一个软件小组是如何运作的。这一点,在不同的公司,会有不同的答案。自己所在的公司应该属于典型的硅谷软件公司,采用的是敏捷开发的策略。每两周一个Sprint,每天会有Scrum。然后基于Jira进行Ticket/Feature的分配和管理。


工作流程

从刚入职到现在约合半年,期间从配置开发环境做起,到现在已经能够逐渐承担一个项目中的任务。可以说不知不觉间能力得到了很大的提升。这种提升很难说具体体现在哪里,只能分成不同的方面陈述一二。

工作流程方面,从日间的Scrum接到任务开始,然后自己根据任务难度,会估计出一个合理的完成时间。然后每日进行日间的汇报。期间需要和组员进行交流和分工。

自己所在组的主要开发语言是Scala/Java/PHP,工作内容主要是写应用的业务逻辑以及一些framework的library,不涉及系统层面的调优。后端存储涉及的软件有Google Spanner/MongoDB/MySQL等。日志系统有Splunk/Kibana(Elastic Search)/New Relic/WaveFront等。协作系统使用Jira,文档系统使用Confluence。代码仓库是Gitlab,code review会在上面开个discussion然后进行讨论。代码提交系统使用Git/SVN。部署系统会使用Jenkins。

而这其中又会涉及硅谷著名的办公室政治。如何在多方利益不协调的情况下做事情,对于刚入职的我而言确实是个难题。一开始自己就像是个愣头青,只知道跟着任务走,后来自己开始思考办公室中每个人的行动逻辑。是的,中午和谁吃饭,scrum时说话的语气,问谁不懂的问题都能反映一个人的站队倾向。分析清楚以后,还要考虑什么是主要矛盾,什么是次要矛盾。要抓住主要矛盾,集中攻克,还要适当地采取一些手段。

例如,孙子兵法有云:“强而避之。善守者藏于九地之下。”

适时韬光养晦,明修栈道,暗度陈仓。


公司体制

自己所在公司的名称是Marketo,于2018年被Adobe收购,但是保留了原工程团队。

从工程角度来说,从上到下主要有这么几类队伍。

自己所在公司的体质,其主干是管理人员,这些管理人员自上而下构成了一棵树。而从这些管理人员的节点旁逸斜出的,则是大量的工程师。管理人员负责管理不同层级上的事务,而工程师无需多说,自然就是干活的。

不同层级的管理人员有不同的侧重点。比如VP-level的人可能更注重部门间的协调,确保整个体制能够有效的运转,同时保证自己手中的权力。而基层的工程经理可能更注重在自己能够升迁的同时,让手下的人干活。

期间自己观察到一个很有趣的三层权力架构现象。高层制约中层,中层制约基层,而基层制约高层。中层想要得到提拔,就要紧紧围绕高层。基层想要得到提拔,就要紧紧围绕中层。而高层为什么受制于基层呢?因为基层是干活的——总不能没有人干活吧,哈哈。这种三层权力结构,无论在哪里,我想都是成立的。

因此,管理人员会纵横捭阖,拉帮结派。工程师也要尽可能地抢夺生产资料——也就是提高自己的工程能力,提高自己解决问题的能力。

总体来说,感觉自己所在公司的权力结构还是相对而言比较松散的——即一种松耦合。确保了一定的自由风气,也导致了内斗现象的出现。大部分领导还是会使用权术手段管理下属,所以学点兵法是很有必要的。


与人相处

这一点没有太多的章法可循。每个人的性格是非常不同的。只需要在自己性格的基础上,稍加调整,对人对事都客客气气即可。至于跪舔等行为,每个人有每个人的选择,不同的场景有不同的效果,因地制宜,不做评价。有的领导可能喜欢这种下属。有的领导可能反而讨厌这种下属。


思维方式

每个人的思维方式也是不同的,这就导致了不同的做事风格。有的人喜欢先下手为强,优点就是行动力高,代码能力强。但是架构能力却不一定很强,写出的代码质量也因人而异。缺点就是做事欠考虑——创业其实是很需要这种人的。

像我就属于做事节奏比较慢的人,做事情之前喜欢现在脑海里想出一个大概的蓝图,然后一步一步地工作、更新、计算、调整。优点就是做事情绝对靠谱,缺点就是节奏有的时候比较慢。也就是经常提到的“拖沓”。

有的人应变能力强,他们的思维模式一般是针对一个已有的事物,迅速想出多种解决办法,所以具有很强的应变能力。但是缺点就是思维的深度不太够。

有的人写代码喜欢系统化,自己就属于这种人。喜欢思考:当前所做的事物在整个系统中大概处于一个什么样的位置。有了模糊的定位以后就可以开始。好处就是对整个系统有高屋建瓴的认识。而抽象水平的高低,就和一个人脑中逻辑树的深度有很大关系了。总体来说,博士的思维层次普遍更高一些。

有的人写代码喜欢抽象,并且在不同的抽象实体间建立联系。自己所在组有一名犹太人就是这样。他的代码通常晦涩难懂,但从中能体会到一种复杂的思维组合。


对社会的认识

工作前,总觉得计算机天下无敌,给钱又多,是当今独一无二的存在。但后来思考一些社会现象后,觉得自己以前的认识太过狭隘。

社会的构成是复杂的。对于任何一个国家而言,从政治、经济两股命脉出发,延伸出了科教文卫、政府部门、经济部门,以及一系列为了保证国家人民利益而存在的机构。而计算机行业在其中只是小小的一环。

为什么给钱多?答案很明显。

资本永不眠。

由于人作为生物的逐利性,金钱一定会朝着投资回报率最高的地方涌去。第一次工业革命期间,蒸汽机彻底改变了人类社会的生产协作方式。因此诞生了一大批工厂,也产生了大批的新兴职业。而第二次工业革命为这个世界带来了电力,有促进了一波经济、科技的发展。

我国在上世纪末,处于基建事业迅速发展的阶段。也就是在我们的父辈一代。因此诞生了“艰苦奋斗”的哲学。

而最近一波红利,就是互联网和人工智能。这波浪潮还能持续多久?不知道。这要看世界上最新科技的研究情况。但目前来说,人工智能会在未来的5年仍然保持一个不错的发展态势。人永远无法预测5年以后的事情。

互联网、人工智能既然能够大幅度提高人类的生产效率,与其相关的公司必然能够在未来的时代得到不错的利润。因此各种风投资金都向其涌来。

所以给钱多。而并不是因为计算机本身有多么神奇——要知道03年互联网泡沫破灭的时候,多少人哭着后悔学计算机呢。