适当时机:发展壮大之后
  2010年底,Facebook曾遭遇过一场危机。PHP并不是一种强调代码性能的语言,但当时Facebook出现了这方面的需求。Facebook的发展速度很快,因此如果不作出一些重大改变,那么该公司将会走向失败。
  彻底改变编程语言并非可选方案之一。Facebook使用PHP编写的代码已达到数百万行,从事这一开发的工程专家已有数千人,而所形成的产品已积累了数亿用户。因此,Facebook的多名高级工程师成立了一个小团队。他们试图发明一种方式,使Facebook正常提供服务,同时不必放弃自己的“母语”。
  整个解决方案的一部分是开发一款编译器,将Facebook的PHP代码翻译成运行速度更快的C++代码。而另一部分则是计算机语言工程领域的一项壮举:继续给Facebook程序员带来PHP风格的文化,同时让他们编写可靠性更高的代码。
  这一“救援小组”为此设计了PHP语言的一个变种,即Hack。Hack是一种带可选输入检查系统的PHP语言。你既可以像以往一样,快速编写出代码混乱的PHP程序,也可以遵循系统要求,通过添加注释让系统来检查代码的正确性。这一输入检查工具完全使用OCaml来开发,而这并非巧合。Facebook希望程序员使用熟悉的语言来快速编写代码,但并不希望他们将事情搞错。(去年,扎克伯格公布了Facebook新的工程口号:“在确保基础设施稳定的情况下快速行动。”)
  与此同时,Twitter也在进行类似的转型。Twitter的开发初基于Ruby on Rails。这是一款采用Ruby语言开发的热门网络编程框架,并借鉴了PHP的很多思想。然而,Twitter随后也看到了用户数的暴涨。如果某一用户有着数十万关注者,那么当他发布消息时,数十万用户的时间线需要得到相应的刷新。以往,一些热门Twitter消息常常会压垮系统,导致Twitter工程师不得不暂停服务,对问题进行修复。Twitter也因随之而来的频繁宕机而“名声昭著”。
  Twitter随后用Scala语言重写了服务的很大一部分代码,从而解决了这一问题。意料之中地,与OCaml类似,Scala也是一款由学术机构设计的语言,有着强大的输入检查系统,强调代码的准确性和性能,并因此牺牲了程序员个人的编程自由和娱乐感。
  在找到营收模式之后,创业公司将走向成熟。与此类似,它们也可以利用编程语言的力量来操纵企业文化。编程语言设计师圭多·范洛塞姆(Guido van Rossum)曾在谷歌供职7年,而目前加入了Dropbox。他表示,当软件公司达到一定规模之后,避免混乱的方式是使用对程序员有更多要求的编程语言。“你的速度可能会因此减慢,因为你需要重复3次去表述同一件事情。”他表示。
  因此,许多创业公司希望等待尽可能长的时间再做出改变。它们可能会失去一些起步初期的牛人,同时也不利于小型团队迅速开发出新功能。不过,这样的语言将帮助全公司的程序员相互理解彼此的代码,带来更稳定的产品。如果希望你的产品成为人们日常生活的一部分,那么这样的稳定性必不可少。
  视不同情况采取不同策略的能力在一定程度上推动软件创业公司的发展。软件的发展依赖于计算机的普及,而这些公司也有着独特的方式去重塑自我。随着变化和发展,它们所能做的并不仅仅是调整组织架构,还可以做出一些更深层次的改变,即变革自身的文化及思维方式。