WhatsApp在非常短的时间里已经取得了非常大的规模。如今,WhatsApp只雇用了大约50名工程师,而且这么小的工程师团队几乎所有的东西都是自己在运行。
WhatsApp的软件工程师Jamshid Mahdavi简短地讨论了公司一些不同寻常的做法。诀窍之一是,该公司使用一种叫Erlang的编程语言建立自己的服务。虽然在编程社区并不那么流行,但Erlang特别适合于庞大用户群的通信,并允许工程师在不中断服务的情况下部署新的代码。其工程设计不同于任何他所见过的,部分原因是它使用Erlang和一个叫FreeBSD的操作系统,而且还力图保持其操作的简单。“对于建设高规模的基础设施,这是一个完全不同的方式。”他表示。
并行代码
WhatsApp使用Erlang,是对处理并发性多进程的编程语言的一个推进。随着互联网服务进入更多人的生活,这样的语言自然变得更有吸引力。
Erlang是爱立信的工程师在80年代为了高速电话网络开发的语言。“与其先发明一种语言,然后再搞清楚用它做什么,他们决定开发一个解决特定问题的语言,” 英国的Erlang大师Francesco Cesarini说道,“这个问题就是大规模可扩展性和可靠性。电话网络是当时唯一需要这些特性的系统。“
Erlang仍然不是编码界的主流,但在WhatsApp和其他的互联网公司,包括微信和Whisper,它已经在新的类似庞大的电话网络的应用里找到了家。本质上说,WhatsApp是手机短信的替代品。它也要求“可扩展性和可靠性。”
保持简单
这个语言确实有它的缺点。比如相对较少的程序员知道Erlang,而且它并不一定与很多互联网公司已经建成的代码相契合。Facebook用Erlang建立了自己原始的Facebook Chat,但最终还是不得不重建以更好地适应Facebook总框架的其他部分。
Mahdavi认为Erlang程序员的相对稀缺性不是问题。“我们的招聘策略是寻找最优秀的工程师。我们不会认定工程师必须知道Erlang,”Mahdavi表示。“我们期望新进来的工程师,通过第一个星期来熟悉这个语言并学会使用开发环境。如果你雇佣聪明的人,他们就能做到这一点。”
公司获得成功,是因为聘请在很多方面都适应性强的工程师。关于公司的秘决,Mahdavi 的回应似乎过于简单。但是,这就是重点,“最重要的就是非常专注于你要做的,”他说。“花时间在其他方面、其他技术,即使是发生在办公室的事情,像开会都是分心的。”
在 WhatsApp,员工几乎不开会。虽然他们只有几十人。但这同样也是专注的意义所在。
点击原文
译者简介:Ted,新加坡Realtek软件工程师,从事WiFi芯片、嵌入式系统软件设计及开发,物联网等方面工作。