QIAOPANG.COM · 陈天(TYR CHEN)2013–2026 精选技术与随笔文集 · 共 260 篇按时间顺序浏览(2013 → 2026)↗
程序人生 · 陈天文集QiaoPang · Systems, Craft & Agentic Era
时间轴 ↗

向左走,向右走

向左走,向右走

是的,程序君已经半个月没出来冒个泡了,哪怕是花一秒钟摁个笑脸,或者传个被我家小丫头骑在身下扮演 Sven(Frozen 里的驯鹿)的照片。

有读者发了个哭脸过来,说刚把你置顶成真爱,就再没看到文章。我回了个大哭脸,说,对不起。我们的真爱经得起时间的考验么?等了许久,就当我悲哀地感慨自己被「真爱」无情地抛弃时,对方发来一段语音 —— 我愣了半天无所适从,战战兢兢打开后发现一票磁性的声音传出:affirmative,roger,go go go。哈,原来这是个 CS 迷。果然是真爱。

一般而言,我长时间没发文章只有两种可能,如果不是被病毒君劫持了,那一定是忙得分身乏术。最近我是二者兼具。感冒了一周,浑身乏力,还偏偏赶上了各种各样的事情。昨晚我是近些天第一次晚上什么活都没干,拿池老师的话说就是废了一晚,去超市买火车票,溜孩子聊天,9 点便早早睡下。你造么?我悲哀地发现,多睡了三个小时的后果是今天一天我都头疼欲裂。

自从一月份开始办理绿卡后,我就苦苦等待回国的机会。5月提交了 485,按律师的说法,最快也要两三个月才能拿到 AP,也就是传说中的回美证。不料老天开眼,上周律师告知我可以去按指纹,预计很快就可以拿到回美证了。这个证件最大的作用就是可以在正式拿到居留身份前,可以离开美国,而不必担心无法以一个合适的身份入境。离开美国干嘛?当然是回国,一年半没有回去,对亲人朋友以及美食的思念已经到达了一个令人发指的地步。回国干嘛?除了干一些废物最喜欢干的事情(吃喝玩乐),就是招募和培训工程师。

是的,我们要在北京招募工程师 —— 拿时下吹牛逼的方式说,就是我们要建一个海外的研发中心。不过牛逼暂且留给 marketing 的人去吹,咱们工程师之间还是掏心窝子说话:我们想在北京组建一个研发团队,和旧金山的兄弟团队共同打造一系列伟大的产品。至于团队建多大,天花板是什么,我目前还无法给出一个明确的答案。作为一家创业公司,我们在稳扎稳打的基础上小步快跑。这次我回去的目标是能够招募并培训几个能力出众的工程师,随着公司的成长,我们会稳健地投入更多的资源。

这并非一时的心血来潮或者单单靠我个人的推动。去年底我加入后整个管理团队就严肃地讨论了这个方案,并且在今年初开始,花费了巨大的代价(人力,金钱和时间成本),在北京设立了一个 WFOE(外商独资公司)公司(预计7月底能完成所有法律手续)。接触过 VIE 结构的朋友都应该知道,国内的创业公司如果拿美元基金,大抵是要搞个 VIE 结构方便资金的进出和日后可能的退出。这其中,WFOE 是重要的一环,也是整个设立过程中程序最复杂,监管最多的一环。我们通过设立 WFOE,发布了一个很明确的信息:和我们的其他 site 一样,中国团队是对等的,重要的组成部分。换言之,公司秉持的思路和总设计师一样:无论黑喵白喵,抓到老鼠的就是好汉喵。

如果你不清楚 adRise / TubiTV 是什么,可以参考我的这篇:,以及这篇文章:。团队现在有三个中国工程师,如果加上华人工程师,那就是五个;再加上正在学汉语的工程师,一共是七人,中国风横扫了半支工程师团队。

介绍一下团队里的中国工程师。

Haofei —— 北邮本科,master 就读于号称美国政治家摇篮的雪城大学,甫一毕业,果断放弃仕途,开着自个的二手Q7,载着心爱的菇凉和全部家当,浩浩荡荡横穿美国,来到阳光温暖的硅谷。他在 adRise 工作的两年时光里,神挡杀神,佛挡杀佛,硬是从小白工程师成长为横跨亚非欧,不对,横跨 web 端,OTT 端,后端等三大端的公司第一大腿 —— 公司一大半的系统,尤其是核心的内容管理系统和视频转码系统,都在他的统帅之下。我们最近 promote 了 4 个 tech leader,haofei 是 tech lead for everything —— 公司里外事不决问创始人,内事不决问他就可以了。haofei 同学的努力程度令人发指:经常在半夜十二点还给我发 slack,说在么,然后就是一大波问题和想法袭来。。。雪大的校训是:Suos Cultores Scientia Coronat,知识为追寻他的人加冕。haofei 显然从中寻求到了力量。

Zhiye —— 北邮研究生,前美团前端,在 adRise 变身全栈,做得了 API,还能一个人独自开发整个 web 产品。我们如今的 tubitv.com,85% 的工作都出自他之手。产品上的成就使他成长为公司的 tech lead for web。如今他孤身一人在大德州混迹于达拉斯牛仔群中,远程操控我们加州团队在 web 上的技术发展。zhiye 由于家庭的原因,住在达拉斯,但他身在德州心系旧金山。和我们在一起时,他是个 Warrior;走在达拉斯的大街上,他必须假装是 Maverick。所以当 Warrior 客场挑战 Maverick 时,zhiye 一般不敢出门。。。

Haofei 和 Zhiye 最大的特点是:self motivated。他们的脑袋里清晰地装着产品的 roadmap,公司的 roadmap,以及人生的 roadmap。不用有人催,不用刻意去关注进度 —— 他们能够把事情做好,并且,时时刻刻都在自我精进。haofei 刚入公司时在 xbox 上面写 C#,在后台折腾 php,如今做得了 angular(html5 smart tv),玩得转 nodejs,折腾得了 spark;zhiye 在重构我们的 web 产品时,力排众议选用他之前也并未大规模使用过的 react,在项目中愣是把 react + redux + react router 等一众坑填平,还引领整个 web 团队学会了 react。在我跟团队 1:1 时,web 团队的工程师最自豪的事情就是:我靠,我能在简历里写上精通 react / redux 了!(有没有逼宫加薪的味道~)

你看,他们二位就是我们团队的缩影:我们并非由一群牛气冲天的人组成,但我们是一群积极主动,自我激励,学习学习再学习的工程师们。不断学习,不断成长是我们的文化的重要部分 —— 和其他同阶段的创业公司不同,我们在这方面有充沛的预算,比如各种会议(今年我们的工程师参加了 EON - elasticsearch 会议,google I/O,Droidcon - android,预计参加的有 Node Up,还有 AWS re:invent 2016),各种在线课程(如 egghead,coursera, etc.),甚至线下的课程(我们的产品经理学了 javascript),还有同事间的交流(我们 android 的工程师现在正在跟我学 javascript)。。。

聊到这里,你大概对我们有一些基础认知。下面是也许让你热血沸腾的干货:

我们的所有后台服务架构搭建在 AWS 之上,是 AWS 的重度使用者。基本上你听过名字的 AWS 服务,我们都在使用或者在试验阶段。

部署系统使用 ansible。我们的 playbook 已经涵盖了 80% 以上的各种系统。一条命令,数分钟内能把代码无缝部署到所有服务器上。

尽管在局部使用 optimize.ly 等各式 A/B testing 工具,我们后台使用了自己开发的一套基于 planout (facebook) 的 experiment system,全局掌控所有产品线的 experiment 需求。

API 系统的内核是我基于 restify 写的,见我之前所写的系列文章:如今已经将大部分遗留的 API 移植到这个系统之上,运行稳定。只要你使用 tubitv 的任何一款产品,其背后都有这个 API 系统的支撑。我们有意在合适的时间将其开源。

analytics 我们有一套自己的体系,通过 analytics API 汇总到 kenisis,然后在 redshift 中沉淀,通过 spark cluster 做各种各样的 transformation,最终在诸如 periscope 的工具中呈现出来。

CMS 是自己开发的,涵盖一套管理我们的内容,并让我们的 TV programming team 可以调配节目的管理系统;同时还包括一套几十个步骤的,复杂的 content pipeline,把原始的视频抽取信息,转码,并传输到 CDN 上。

广告系统基于 php,支持我们所有广告客户的 realtime bidding。你在 tubitv 各个产品线看的每一个广告,都离不开这个系统的辛勤劳动。

我们崇尚 getting things done,所以拥抱拿来主义,公司并不明确限制对第三方技术的使用,所以我们使用了大量的第三方服务:ELK,datadog / new relic,twilio,sentry 等等。现在这个阶段,非核心业务,凡是能用钱解决的,我们都不堆人。

至于客户端,我们有:roku,android phone,android pad,chromecast,iphone,ipad,apple tv,sumsang tv,fire tv,xbox 等十多个客户端平台的支持。这其中,android 产品线一度在 play store 总榜五十多名,iOS 产品线在 entertainment 排位第八。

别问我十几个人的工程师团队怎么做得了这么多活,你来了我就偷偷地告诉你。

别问我你们的产品怎么能被 google play 编辑推荐,你来我我才偷偷告诉你。

如果以上的名词你听了之后感到热血沸腾,那么恭喜你,咱们可以再唠十块钱的。

工程师都是闷骚的老实人,咱们接着谈憋了半天的话题:钱和机会。

我们开得起能够匹配你价值的薪水,基本 guideline 是 25 ~ 50w base salary,跨度相当于外企 MTS4 - Sr. Staff 的薪资,或者阿里的 P5 - P7。期权另议。特殊的人才我们可以单独谈。

至于机会,下面几方面我认为是重要的,值得关注的点。我不是 sales,不能瞎忽悠,所以只陈列事实,请自行从字里行间发现潜台词。

我们已经是一家稳健的,收入充沛并持续快速增长的 B 轮公司。我们在 Free TV 这个市场是北美最大的玩家,business 地位相当稳固(好莱坞三大拿 Paramount,MGM,Lionsgate 是我们的合作伙伴)。

由于公司还很小,WFOE 公司的员工能够直接和总部的任何人打交道,你不必让我或者其他人成为你的传声筒。当然,作为你的直接上司,我乐于,也有义务为你扫清一切工作上的障碍,以及替你提升在总部的形象。

只要我们的业务不出现大的变故,国内的 WFOE 会持续投入。

我们同时在着手申请 L1 blanket petition。这除了说明我们对中国 site 的严肃认真,更重要的是我们在需要的情况下,可以把工程师从国内以 L1A,L1B 的方式 relocate 到美国。至于 L1A,L1B 是什么,有什么作用,请看我的这篇文章:。

整个公司依旧很小,任何一个工程师依旧有机会通过一行行指尖流淌的代码,去影响公司(同时影响自己的人生)。

我和我的同事会定期回国,和大家一起探讨技术,人生,足球,NBA,塞浦路斯(我们的 CTO 的家乡)究竟在哪等等。如果你是 LGBT,欢迎 ~ 公司的年会,他会带着他的男朋友;她也会带着她的女朋友一起和大家谈笑风生。

我们也会定期派人来总部和热情的同事们会面并接受技术培训。也许周末我们会开车带你到一号公路拉拉风,或者去 Muir woods Park / yosemite 洗洗肺。甚至,如果凑巧你赶上了 Warrior 主场的常规赛比赛,花上几十美金,可以和同事一起去感受一下 NBA 的氛围。我们都是 Stephen Curry 的球迷,Curry 某种程度上是我们自己的一个图腾:天赋的缺失,起点的落差都可以用勤奋和努力追回。

我们需要什么样的人?

  • 我们需要那种不用 manager 盯着,能够自我管理的人。作为 remote engineer,自我驱动无比重要。
  • 我们需要能够不断学习,不用自己的过去去定义自己的未来的人。技术变化一日千里,每个人都要随时准备去接受新的事物。
  • 我们需要 rock star,那种只要存在就能带来不同,让公司,团队变得更好的人。
  • 我们需要能够畅通无阻地表达自己观点的人。你的英文口语也许不必好,但你敢于并且善于用蹩脚的英文表达自己的思路。

第三点有点抽象,且容我拿我自己在Juniper的亲身经历(谁拿烂番茄砸我?)解释一下:

  • 2006年出差培训,我把培训所学内容总结成两篇长达100页的英文文稿,并请求所有培训过我的工程师帮忙审阅,前后历时两三个月,最终定稿。一起培训的数个人中,只有我这么做了。这份文档的价值有多大?美国同事称其为 netscreen 的「葵花宝典」,VP 在邮件中和 all hands 上表扬我,13年我回 Juniper 时,还有同事兴冲冲地跟我说:我们还在用你的文档培训新人,解决问题。
  • 2008 年我自动请樱做一个没有实权,吃力不讨好的 programme 的 leader 和 liason。这个 programme 的目的是建立 innovative 的 engineering culture,其中几个关键指标,patent,BBL等我们之前都是 0。我邀请公司内的一个在 IETF co-chair trust computing,同时又在公司内部 Patent review comittee 担任要职的 DE II 给大家讲如何做 Patent,并且通过自己趟 Patent 的浑水,找到方法和经验,激发大家写的意愿。最终那年我们 Site 摆脱了 patent 为零的尴尬,成功发表了十多个,而我自己也写下了五六个 invention disclosure(最终被批了 4 个)
  • 在 Juniper 的整个职业历程,我做了很多工具:crash analyzer,code exam system;写了很多文档

这些事情没有人要求我必须做。它也不是我的本职工作。只不过,在工作的过程中,我发现,如果我做了这些事情,可以让我周围的人和我自己要么变得更好,要么他们的工作更轻松。我创造的价值不仅仅是公司发给我的工资的那部分,还包括我觉得一切可以改进的事情。

好,具体职位:

  • 资深全栈工程师。要求:精通 nodejs / javascript。所谓精通,是指你起码对 event loop 的机制比较清楚,知道如何使用 event emitter 和 streaming,对于异步的处理得心应手,会在合适的时候使用 callback,Promise,Observable。ES6 的语法对你并不是个障碍。掌握至少一种前端的框架,熟练使用 websocket。会使用 MySQL / Postgres / MongoDB / Redis。知道如何合理使用不同的技术方案架构一个后端系统。遇到不懂的技术(比如前文中我所罗列的)能很快接受和掌握。
  • 资深 android 工程师。独立开发过中等规模的 android app。你可以到 play store 下载 tubitv 的 android app,然后思考一下我们所用的技术。如果让你单独完成这样一款产品,你有多大的信心搞定?
  • 资深 xbox 工程师。开发过 xboxone app。掌握 windows universal platforms 和 winjs。
  • 资深 html5 工程师。能够为 smart tv 开发 html5 app。要求:掌握 react / redux / react-router 开发栈。

加分项:

  • github 上有拿得出手的 repo
  • 精通 python
  • 精通除以上要求外的至少一门语言(go / scala / elixir / clojure / ruby)
  • 精通 spark
  • 使用过任意一款或多款本文没有提及的 apache project。比如 lucene,kafka 等。

工作地点:北京(地址待定)。初期我们会使用共享工位。等 team 增长足够大后我们会权衡大家的居住地点租一个位置合适的写字楼。一周之中,你可以根据自己的需要选择一到两天在家办公 —— 我们充分相信每个员工会做出对个人和团队最有利的选择。在家办公虽然高效且节省时间,但大家聚在一起能够增强互相的理解和信任,也有利于碰撞出来更多东西。

福利:五险一金。其他福利和总部相同。

本季度招募计划:3~4人。招满为止,下次开放 headcount 可能就在四季度初了。

期望到岗时间:7月底8月初。我届时会回去帮助完成包括培训在内的一切杂活,帮助大家尽快融入团队。

我已经敲定了一个详细的培训计划,这里先罗列一二。

  • adRise / TubiTV regulations, benefits & team (美女同事)
  • adRise / TubiTV business orientation(公司创始人)
  • engineering culture(我 & CTO Marios)
  • 开发环境,部署环境等(我)
  • aws 各个服务的基本知识和操作(我)
  • nodejs / es6(我)
  • API 系统(我)
  • 内部服务(Haofei 同学)

除我之外,其他培训都是远程会议的形式。所以到岗的时间非常关键。我希望我们能在一起多多交流,我们充分了解彼此,同时我尽最大可能移除工作中的各种可能的障碍。

嗯,就说这么多。不管你是否对我们感兴趣,希望上面的文字都帮你思考职业生涯中「向左走还是向右走」的终极问题。当然,我非常希望你能对此有兴趣。如果觉得自己匹配以上的需求,请发邮件到:jobs.china at tubitv.com。我们会就优秀的简历做一个 phone screen,然后再做 online code exam,之后再有一到多轮的 video interview。

好了,淡就扯这么多。

英国脱欧后,德州牛仔们叫嚣着要脱美重归德克萨斯共和国,

一步一步地,统领 web 产品线,

现在独立支撑着我们的达拉斯团队

尽管我们的创始人是法国人,韩国人和西班牙人组成的多国部队,整个团队也以白人为主,但中国工程师是顶梁柱,真大腿 —— 这一点毋庸置疑。

MORE IN 工程管理与职场

同专栏延伸阅读

查看「工程管理与职场」全部文章 →

暴走的程序员

今天一篇 "a sad day for rust" 霸榜了 hacker news。actix-web 的作者 fafhrd91 在无法忍受 "unsafe shitstorm" 之后,决绝地将这个在各大评测网站名列第一的 web 框架下线了。一时间社区叫苦不迭,所有使用了 actix-web 作为依赖的项目,都受到影响。这件事的影响力虽然不如之前让半个互联…

天叔奇谈 (2013–2020)2,451 字 · 5 分钟

实习生娜娜

我对实习生的要求,除去学习能力外,便是足够长的实习时间。所谓「足够长」,我的定义是至少两三个月。小于这个长度,往往还没有开始贡献有价值的工作,实习生便带着写满好话的评定拍屁股走人了。 娜娜本来原定是六月初来实习的。然而因为她学校办理 EAD(Employment Authorization Document)令人发指的低效,她最终八月初才来报道。这个暑期,我…

程序人生 (2015–2019)4,528 字 · 10 分钟

ArcBlock 一周年

(一) 这是我开过的最艰难的一次长途了。从家到 springfield(中转站)570 英里,我早上 8:30 出发,下午 4:50 到。进入 Oregon 之后,天就跟漏了似的,一路时断时续的暴雨,有的山路已经形成洪流,车驶过的时候,轮胎被水流带着,方向盘都有些不听使唤。好在一路车少,有惊无险。 - 程序君 04/28/2018 岁月如梭,光阴似箭,湾区的…

天叔奇谈 (2013–2020)6,593 字 · 15 分钟