×

4位客户端工程师与产品经理的促膝谈心

96
纯银V Db3aaf4f effd 43dc 9137 d6bf7f70211e
2017.08.10 19:08* 字数 6086

开门见山,不耍花枪,这是一篇 Android 工程师的招聘贴,月薪25-35K,坐标上海,产品是纯银7月刚发布的短视频创作工具「猫饼ö」,目前仅有 iPhone 版本。

现在我开始耍花枪了。

以下是老板纯银对猫饼组4位客户端工程师长达6000字的访谈。

95后22岁,少年老成(面相也比较老)的产品神犬纯银,简称银sir,准备采访91年 iOS&Android 工程师吕sir,91年 iOS 工程师张sir,92年 Android 工程师鄢sir,89年客户端合伙人Dom——他之前是白鹭游戏引擎的研发总监与核心代码贡献者。

吕sir

银sir:我先跟吕sir聊聊。吕sir之前是穿衣助手 APP 的 iOS 主程,也熟悉 Android 编程。吕sir,讲讲当初你加入“一穷二白的猫饼组”是怎么想的?

吕sir:去年10月就看到你招人了,心想不合适啊,我没视频研发经验啊,关了窗口干别的事情去了。又过了两个月,你找到Dom做技术合伙人,把招聘要求给换了,没视频经验也行。这时朋友把你发在 v2ex 的招聘启事转给我看,说我特别合适,当时就心痒了,发了简历过去。

银sir:我记得你那时工作选择很多,最后为什么选猫饼组呢?

吕sir:当时我有三条路,留在穿衣助手做技术管理,去大公司想办法升架构师,还有就是加入猫饼组学视频编辑技术。首先我不想做技术管理,精通一门技术才是最佳选择。然后去大公司面试,问面试官“做到架构师的学习路径是怎样的?”对方的回答没达到我的预期,而我过去2年的经验都在UI层,对客户端UI已经非常熟练了,不愿意一年经验复用三年。技术上再提升一把的话,那就加入猫饼组做视频咯,好歹有Dom带我入门。

银sir:对对对,我现在还记得面试你90分钟,其中60分钟都是你反向面试我们,对我们提各种问题,气氛一度很尴尬。还好Dom镇住了场面,完美回答你的所有问题,这才把你拉进团队。虽然当时看起来有点没礼貌,但我们就是喜欢你这样目的明确又直率的人。

Dom:银sir最开始完全招不到人,因为第一份招聘启事需要视频编辑开发经验,但有这块经验的人很少,会让很多人畏难不投。后来调整招聘方向为:由我来封装 iOS&Android 端的视频编辑库,客户端工程师在底层库之上开发,不依赖视频研发经验,只需要对视频兴趣浓,底子好就行。再发第二份招聘启事后,简历一下子多了起来,这才招到了后面的3位工程师。

银sir:Dom,比心。

Dom:刚才吕sir提到走管理线和技术线的问题。走管理线跟一家公司绑定比较紧,通用性比较弱,一旦跳槽,有可能身价缩水,除非你长期呆在这一家公司,公司本身也有足够大的上升空间,才适合走管理线。但如果走技术线,你跳槽的自由度就很高——技术是硬通货,放哪都不贬值,跳槽还能接触不同的业务需求。而架构师并不是按某条固定路径学出来的,深入钻研技术,解决业务难题,自然而然就会达到那个水平。所以推动技术进步的最主要的因素还是环境,业务需求复杂的项目会迫使你快速学习,快速成长。如果长期呆在安逸的技术环境里,很快就会进入“一年经验复用三年”的阶段,技术停滞不前。

银sir:来来来,吕sir你继续讲「猫饼ö」是不是这样的好项目?

吕sir:从头讲起吧。我刚来的时候,前面你找的兼职已经写了一部分代码,一看是从没接触过的 Swift,虎躯一震,担心这试用期还能不能过了。幸好两三天后找到了一个熟悉 Swift 的窍门,就是用 OC 的方式来使用 Swift,基本能满足需求,高级特性放到后面慢慢熟悉。

Dom:是的,最快学习一门新语言的方式就是直接撸代码,用到什么学什么。我这次做 iOS 底层库开发也是现学 Swift,之前跟吕sir一样,只会 Objective-C。

银sir:吕sir,抓重点。iOS 版本的编辑器是你一个人开发的,我们直接讲编辑器嘛。

吕sir:视频编辑器我是零基础上手的,先读 AVFoundation 文档,那个 Programming Guide 大概读了三遍吧,然后跟Dom不断讨论用法和接口,同时看苹果官方的各种 demo 与开源库,掌握滤镜与贴纸的基本实现方式。要说开发难度,这半年遇到的每一项 feature,都比我之前做过的 App 复杂得多。比如有一项需求是“滤镜不应用于贴纸”,涉及 AVFoundation 的高级用法,需要重构不少代码,编写自定义的合成适配器,还好最后弄清楚了整个自定义合成的细节。

银sir:你从零基础上手,到初步完成一个复杂的视频编辑器,用了多长时间?

吕sir:3个半月。包括滤镜、剪辑、变速、字幕贴纸、画面与声音处理等功能。因为时间比较紧,虽然功能完成度很高,但闪退率也不低。上个月刚修复了一项循环引用的闪退,还有一些闪退和 UI 实现有关,下个月抽空搞搞。

银sir:3个半月也太夸张了吧?(此处为明知故问)

吕sir:这得感谢Dom啊。我遇到问题的时候有个习惯,自己先定位问题,提出几种解决方案,再向Dom请教,他会告诉我正确的解决方向。解决过程中的关键节点,我也会先提出思路,再跟Dom讨论最佳尝试方案。“有人带”的效率大不一样,少走很多弯路,有个朋友比我提前一年多做类似的视频编辑项目,但我这半年的进展早已经弯道超车,现在跟他聊这块内容,我掌握的很多东西他还不知道呢。

Dom:这时候我就要夸一下吕sir了,每次遇到问题来找我的时候,他已经调试了很久,准备了好几种可能性跟我讨论,这样不仅解决问题的速度很快,他个人的成长性也很快,解Bug的效率“以肉眼可见的速度”在提高。而且吕sir特别好的一点是,很乐意学习任何新技术,遇到新技术和新挑战的时候非常兴奋,而不是畏难不前。所以他早就主动接手了视频编辑库的维护,我忙不过来的时候,他会帮我修复bug,添加功能。

吕sir:现在 iOS 编辑器的完成度只有一半,接下来半年还可以学到更多东西,我很开心。同时在Dom指导下再学一些 OpenGL 相关的渲染技术,实现更深度的视频合成效果开发。

张sir

银sir:张sir,张sir到你了。张sir之前是美拍 iOS 社区端和直播端的主程,加入猫饼组时,美图开出5万股票挽留,当时美图股价飙红,5万股票接近百万人民币,但张sir还是从厦门举家迁往上海,加入猫饼组。这可能是一种本地风俗?我离开携程再次创业时,也放弃了价值500万人民币的携程股票(卖蝉游记的一部分收入)。

张sir:其实我只是不想开会啊。当时每周5天工作,差不多2天都在开会,开毛线会啊。

银sir:耿直boy!

张sir:现在互联网最热的技术方向应该是“人工智能、区块链、图形视觉”。算法不是我的强项,所以选择图形视觉,应用面广,弹性很大。再加上我喜欢有设计感的美的东西,所以倾向于图形的特效与渲染实现。来猫饼组可以从头学习做视频编辑器,觉得是个很不错的机会……虽然我当时是陪老婆去B站面试,顺带来你这边瞄一眼,没想到聊得投机。

银sir:缘分呐,这就是缘分呐。张sir加入我们已经3个月了,觉得达到“放弃百万股票”的预期值了吗?

张sir:其实前两个月都在搞社区,最近几周才参与到编辑器开发里来。我能看到一个完整的视频编辑架构,从底层渲染合成到前端交互展现。近期的任务是将静态相片渲染成动态视频,由于涉及到结构的重构,我也开始动手修改底层库,蛮有挑战的,短短几周里提升相当的大。

银sir:你看,加入时我答应过你的嘛。我们在 iOS 和 Android 端各配置2位工程师,要求是工作可以随时互换,所以你有大把机会参与编辑器开发,同时兼顾社区开发的特长。老板我是一个很重承诺的人,答应你的事绝对不会变卦。

Dom:补充一句,张sir最近自学了不少 OpenGL 的知识,前段时间邮轮上(量子号团建)还问了我好几个跟美颜和滤镜相关的问题。我感觉几个月后,张sir和吕sir完全可以自主维护 iOS 视频编辑库了。

张sir:既然是招聘公关稿,那我再夸一下猫饼组吧。现在研发组就5位工程师,每个人都很优秀,参与项目的每个模块,我和吕 sir 合作 iOS 版本,对编辑器有全面的了解。如果在大公司,新人只会负责边缘需求,完全没机会深入底层库,个人技术提升不可同日而语。

银sir:这就是精英小团队的……

张sir:我还没说完。这边的技术氛围也很好,每天都会大量讨论技术问题,有时候“场面焦灼”,那就由 Dom 来救火。尤其是大家的心态特别好,就算有分歧的话,回去各自验证自己的方案,talk is cheap, show me the code. 我们用结果来对话,错了就承认,从来不装逼。跟聪明人讨论问题,不需要照顾面子。

银sir:我闭嘴,你继续。

张sir:除此之外,这边的同事都很 nice,我刚来的时候对项目不了解,拍档吕sir有问必答,帮了我很多的忙。而老板银sir也很尊重技术,每当我要求时间“重构代码”时,他总是会答应我,因为他理解重构代码会提高长远的效率,而不是急急忙忙地为新功能赶工。即便工期紧迫,他的第一反应也是“我砍需求”,“我再砍一部分需求”,不会逼着我加班或者放弃代码质量。

Dom:是的,一个团队的平均水平是由短板来决定的。现在这支团队产品/设计/研发/运营都比较强,所以沟通成本低,讨论问题的效率非常高,几句话就能讲清楚并达成共识。另外小团队的好处是,你能接触到的技术挑战是方方面面的,如果是庞大的团队,通常只有一两个人有机会接触到全局,很可能就轮不到你了。

鄢sir

银sir:访谈的最后上重头戏,猫饼组最年轻的工程师,25岁的鄢sir,之前在网易邮箱和网易严选工作,也是 Android 端的主力工程师。当然一个 Android 工程师是不够的,我们正在招聘第二位 Android 工程师。

Dom:这里我要强调一下,Android 视频编辑库的开发难度和 iOS 相比简直是数量级的差距。Android 没有苹果这么完善的视频编辑 API,几乎所有基础设施都需要自己动手实现,单说最普通的音频参数调整,系统只提供最原始的字节流,自己按位操作,这个过程需要学习 PCM 音频格式,了解Android支持的采样率等等。再说到视频硬件解码,也只有最基础的底层接口,得自己封装解码器,音频视频又得多线程解码,引入同步加锁问题,复杂度相当之高。最后到上层,连播放器和录制模块全都得自己徒手开发,相关资料少得要命,很多时候只能靠直觉……写起来都是泪啊。整体重构了好几次,最终才满足上层业务需求,总共花了3个月时间搞定,终于能接近 iOS 自带的视频编辑API了。

银sir:Dom,比心。你觉得 Android 底层库最难的地方在哪里呢?

Dom:解码器和编码器的封装吧,因为业务需求要求“分段循环播放”和“跳跃式播放”视频,但解码器是有时序的,无法随意跳跃。最简单的做法是每次遇到循环或跳跃就重置解码器,但时间开销太大,所以得设计复杂的队列机制,只有到不得不重置解码器的时候才重置,最大化降低延迟。这个过程还得考虑音视频分开解码与线程同步……

银sir:听不懂,反正你好棒棒哦。

鄢sir:就我的了解,这套底层库通常需要两三位资深工程师,用半年以上的时间去开发,而Dom一个人3个月就完成了。

银sir:因为Dom只有一个,没法再克隆一两个,先做完 iOS 底层库再做 Android 底层库,这时都6月了,所以 Android 版本的进度比 iOS 迟很多,功能上还比 iOS 阉割了不少……我这不是正在为招聘 Android 工程师写公关稿吗?

鄢sir:是啊,没有Dom封装好的 Android 视频编辑库,我几乎就没法开发了。这半年从零接触音视频开发,再到基于底层库开发维护,最大的感受是这块内容“复杂而迷人”。Dom决定上硬解码之后,我先去 Android 官方文档看了几遍编解码 API,然后收集市面上大部分录制导出、解码播放的demo,同时研究 Google 的 ExoPlayer 开源项目,总算能跟上Dom的脚步。做滤镜时也趁机学习了点 OpenGL 知识。

Dom:这半年鄢sir的成长速度的确很快,他有跟吕sir一样的好习惯,遇到问题,先尽自己的最大能力去调试,实在继续不下去了才会来找我,所以调试技巧突飞猛进。

鄢sir:调试技巧确实学到不少,另外上层业务需求也相当复杂。之前在网易开发客户端只需要调用 Android 的视图 API,但现在的编辑器还需要了解安卓底层的 View 机制,然后对 View 进行自定义改造。这次有机会一个人负责 App 开发,技术提升就不用说了,更重大的意义是我能对产品体验产生全面的影响,这样才算得上是我的作品,代表我的技术水平。

银sir:这里我得再强调一下,鄢sir今年25岁,他研发的 Android 版本已经临近公测了。这就是好项目,好团队用业务需求Push你成长的正面案例。

鄢sir:那得感谢Dom啊,我在猫饼组的成长有Dom作为范例,观察有经验的工程师是如何解决问题的,遇到难题时他第一直觉是什么,解决思路是什么,算是在模仿中学习吧。

吕sir:除了技术合伙人很强,我也很喜欢这边两人一端的研发分工,比如我和拍档张sir紧密合作,每天讨论,互相都能完整了解项目,对整体有一致的把控,随时都可以互换角色和任务。

鄢sir:老板,那我的 Android 拍档呢?

银sir:正在找正在找。我已经签约付10万猎头费去找这个人,但还是觉得,自己上门的会对猫饼组有更多的认同感。产品刚发布一个月,严格上来说还在公测期,我不画饼,不吹牛,只说两件事实:1、半年内拿到两轮融资,账面上还有几千万,咱们不缺钱。2、今年内一定能做出来市场上最强大的视频编辑器(现在已经很接近“最强大”了),如果工程师有志于“进阶视频编辑”,这可能是五年一遇的机会。现在的三位客户端工程师全都是零基础快速上手,只剩下最后一位 Android 工程师的名额。

招聘信息

Dom:我们招工程师主要看两点:你过去做过什么有挑战的项目?你过去解决过什么有难度的技术问题?这是我面试必提的经典问题,先看面试者最出彩的技术经历,再展开来聊你的长项。如果你看了上面的访谈,感觉自己跟这几位sir有很多相似之处,那就来信聊聊呗。这次招聘面向“资深 Android 工程师”,大约3年+开发经验,有 Github 项目以及技术博客是重要的加分项。

银sir:应聘信发到我的邮箱「firecicada@gmail.com」,2个工作日之内来信必复。

彩蛋

张sir:这就散会了吗,我还要回去撸代码。

银sir:等一等,大家再说说你们喜欢的猫饼组的工作氛围吧,软实力也是实力嘛。

吕sir:(掏出一个小本本)我认真统计过,从年初入职到现在,晚8点之后下班的次数不超过10次,通常是发版本才需要加个班,这也是合理的。

众人:“啥?这个你都记账?”

张sir:我最喜欢的是入职有2万元额度,想买什么工作设备自己挑,比如我就买了最新款的MBP加支架。就算稍微超支一点点,老板也很好说话。

鄢sir:这里的产品经理和UI设计师都很优秀,互相之间绝对信任,主动承担责任,从来没发生过扯皮推诿的事情。响应速度也很快,大家坐这么近,有什么事喊一声就过来了。平时从来不写报告,不发邮件,只开半小时周会,沟通成本低到不可思议。

吕sir:公司还养了两只猫,平时猫喜欢在工程师的键盘前面睡觉,敲会儿代码撸两把猫。

张sir:如果不喜欢撸猫,那就去撸仓鼠(仓鼠笼子在我旁边),从不觉得上班是一件痛苦的事情。哪天感觉自己状态不太好,说请假就请假,又不扣工资,第二天满血复活再回来工作。

吕sir:每天公司提供早餐和午餐,每周还有自选零食——研发组自带每周500元零食额度,我都吃胖一轮了。每个月既有团队娱乐(7月是大型体感电玩厅),又有团队电影(可带家属),还有工作时间内的1小时上门按摩,就连羽毛球这种体育活动都由公司报销场地费用。

银sir:最重要的是,以上所有活动自选参加。我是个骄傲的自由主义者,不会强迫你参加任何活动,你爱来不来,“加勒比量子号邮轮团建”居然都有几个人说不去就不去。平时工作交流用QQ,扯淡用微信,一下班就关QQ,我特别不愿意让工作侵入员工的私人时间,更不需要你在朋友圈对公司表态效忠——我从来都不看朋友圈。

众人:“中国好老板!”

银sir:至于产品本身,我们想做的是“短视频创作平台”,区别于VUE的“随手拍工具”与抖音的“节奏表演媒体”。具体的产品思路,你来面试时,我会详细告诉你。你现在看到的 iPhone 版本在社区端还不够好,8月和9月会有比较大的两次迭代,但我们对编辑器已经很满意了……除了闪退率略高之外。接下来的半年,编辑器还会更强更强更强,feature排期到了12月。

Dom:所以,重复一次,如果你是一位资深 Android 工程师,曾经解决过不少技术难题,对 Android 设备的兼容性调试也很有经验,而现在有兴趣“零基础进阶视频编辑”,这可能是五年一遇的机会。

银sir:「firecicada@gmail.com」,我们等你来。

产品
Web note ad 1