这是2014年2月份写的,现在Whatsapp的技术可能已经很不一样了。文章前半部分从一个工程师的角度分析到底Whatsapp值不值$190亿;后半部分讲技术,讲用各种工具科学地性能调优的那部分尤其精彩。
Whatsapp 卖给Facebook 时,一个用户值 $40;Instagram 被收购时,一个用户值 $30;Twitter 刚上市那一刹那,一个用户值 $110。
技术人员普遍都有很强的 ego,一方面眼红别人的成功,另一方面又蔑视别人没技术含量 - 在 "某某公司以某某天价被收购" 的新闻出来后,经常能听到类似 "这东西我用 PHP 一个晚上就能做出来" 之类的语言。这些成功案例里,技术固然重要,但更重要的是非技术的部分,尤其是"有很多人用"的部分是很难做到的。
本文的很多信息是来自 Whatsapp 的工程师 Rick Reed 给的这个 talk。
ECS 是 Amazon 的 docker service。本文描述了使用 ECS 的各种坑,运维自动化方面自己多做很多额外的工作,跑在 EC2 instance 上的 ECS agent 不稳定等问题。
基本与我使用 ECS 的经历类似。他们最终改用 Kubernetes 了。
现在都讲究 data-driven 的产品开发,都说要定义关键指标,要让团队上下一心以提升某个关键的 metric 为目标。问题是,好看的数据能否保证好的用户体验?比如:用户使用你产品的时间变长了,说明你产品更好用了还是更难用了?
好的工程师因为对问题理解透彻,能写出简洁易懂很好维护的代码,实际代码行数一般不多;差的工程师看起来很忙,似懂非懂,刚开始看起来运指如飞写了很多又臭又长的代码,为以后维护这些代码的人埋下各种地雷。
写精简代码往往比写冗长代码要花更多时间;写冗长代码往往是懒惰的表现,懒于思考。类似写作,马克吐温说:"I didn't have time to write a short letter, so I wrote a long one instead."