按:此文作者为 Stack Overflow 的 Nick Craver,译者为陶克路,毕业于哈尔滨工业大学,现为后端工程师。
几天前我在朋友圈感慨说这篇文章很好,中文科技媒体忽视了这篇文章。没多久,陶克路联系我说他把文章翻译完毕,并且告诉我已经征求了原作者意见。跟大家分享一下这篇文章,我只对翻译稿件做了一点可读性修改。客观的说,翻译仍有瑕疵,但已经不影响阅读。
做开发的恐怕没有人不知道 Stack Overflow,但是这家公司「怎么赚钱」的?恐怕没有人知道。这篇文章毫无疑问值得一看。更重要的是,文章中的坦诚和传递出来的价值观,令人欣赏。
我是 Nick Craver,你可能还记得我。我之前写了三篇文章 How Stack Overflow does deployment、How we do hardware 以及 How we built our architecture。
关于我们如何赚钱,我还一直没有谈及,对于大部分开发者来说这一直是一个迷。我现在决定来谈一谈我们是如何赚钱的,一是用来回答这个经常被问的问题,二是我和公司都相信对于社区坦诚布公是百利而无一害的。这涉及到现实中一些比较模糊不清的事情,比如财务,这也是为什么我们会创建一些项目,比如 Stack Overflow Salary Calculator, 来使我们的工资流程透明化。
我们为什么要赚钱
在正式开始之前,我来交代一些背景:我负责 Stack Overflow 的架构组,就在我写这篇文章的时候我们刚结束了公司年度聚会( meetup )。聚会对于远程工作者来说非常地棒,比如我,因为终于可以面对面地认识之前和我一起远程工作而从没有见过的同事了。
年度聚会也提醒着我们为什么要做 Stack Overflow,我们都做了什么以及我们怎么样才能做的更好。在过去 6 年里,我觉得我做的事情(注:指的就是 Stack Overflow )给予开发者们不曾有过的资源,而且每一天我都在努力去让它变得更好。但是我不是一个人在孤军奋战,我非常幸运地能够和一些最棒的开发者、系统管理员、设计师、经理、营销人员、销售一起工作。Stack Overflow 不是我一个人的成果,而是我们大家一起努力的结果。
我上周一直在和我的同事们讨论我们是怎么发展成一个公司的,这些人中有的从来没有说过话。更最要的是,当我们的工作逐渐变得可敬,我们已经知道如何去做。我对我们的同事的日常行为有很高的要求,因为在用户眼里,我们代表了 Stack Overflow。我对我们的用户信息讳莫如深,你可以问问任何在 Stack Overflow 工作的人是不是这样。我一直坚信我们正在和社区建立一种坚不可摧的信任。我希望能在看重这种信任的公司工作,而现在我就是。
尽管这是一个公开的理念,但是过去我们还是听到很多人对我们如何既能尊重用户同时又能赚钱表示担忧,因为我们毕竟要为我们的投资人挣钱同时还要保证公司运作下去。我们想纠正这种看法。诚然,钱对于公司持续发展是必须的,但是我们的存在的意义本来就是为了帮助我们的用户,我们存在是因为你们让我们存在。用户才是我们的初心。所以我们不断地把资金用在改进社区的工作上,而不是把我们的产品看成是一种从社区获利的工具。我们挣多少钱就表示我们对用户的帮助有多大。为了做成了不起的工作,我们专注在怎么样才能最大化地帮助用户。很少有公司能够成功做到这些,很荣幸也很骄傲,我们是少数中的一员。
我们怎么赚钱
招聘业务
我们通过商业产品「Display Ads and Talent」去帮助一些公司做品牌宣传和招聘。这种服务反过来帮助开发者找到更好的工作,同时以一种用户体验良好的方式(没有垃圾邮件和动画广告,等等 )宣传公司。我们做的每一件事都会考虑用户体验,这也使得我们的产品独一无二。
这很像问答产品。公司的问题是需要开发者,我们需要开发者去回答这些问题。为了让整个流程跑起来,我们需要两边的力量匹配。公司和开发者越多,我们就能为开发者提供更好和更快的理想工作匹配。对于公司,我们的目标是提供数量不多,但是精准匹配的开发者,而不是数量庞大但是匹配度很低的开发者。这就是我们体现价值的地方。我们一直在优化目前业界的招聘流程,我们不希望公司和开发者在招聘和求职上极大地浪费时间并且低效。
我们处在一个相对来说独特的位置,因为我们既可以帮助公司,又可以帮助开发者。这不是痴人妄语,我相信我们可以做到,并且比其他公司做的更好。我们已经为数以千计的开发者提供了工作,同时还有更多的职位虚位以待。改善这种状况的一种途径就是我们的「Developer Story」。我做这件事情的初衷是我们可以通过简历极大地改善我们的生活。这以一种可维持的方式帮助开发者展示他们是谁,他们做了什么。当然这也可以帮助你找到工作。如果你在找工作,或者只是好奇,不妨完善你的 Developer Story,越完善机会越好。
如果你对上面提到的都不感兴趣,当然也没关系。除了帮助你找到最匹配的公司,我们还有 「Jobs」和「Developer Story」这两个产品去支持我们的核心使命:帮助所有的开发者,包括那些暂时还不想找工作的。我们正努力地改变公司招聘开发者的方式,一是通过制定站内的招聘准则(比如,不容许垃圾邮件),二是通过我们的「Developer Hiring Blog」(目的是培训招聘者如何招聘)。通过 Developer Story,我们希望改变这种观念:开发者只能通过他们过去的工作和职称来衡量。开发者应该是有故事要讲的创造者,他们的故事可以是他们写过的代码或者博客,也可以是他们以前工作过的团队,甚至是他们现在在读什么。这些产品的目的不是为了敲击招聘工作的底线,而是为了打破常规。
广告业务
我们是一个大型的网站,广告业务目前还是我们赖以生存的主要手段。但是我们不希望你去点击你不关心的东西,我们只想给你想要的。
我们的目标是给你尽可能相关的东西。不管怎么样,我们会始终这么做。不管是为了生存而投放广告,还是广告要尽可能地和用户有着密切的相关性,都是我们的工作。实际上,我们有一些非常聪明的同事在做这方面的工作,同时这么做的终极目标都是:只有理解开发者,我们才能更好地服务他们。
我们怎么怎么看待广告屏蔽插件的呢?我们不在乎,原因在这儿:https://stackoverflow.blog/2016/02/why-stack-overflow-doesnt-care-about-ad-blockers/ 。
Stack Overflow 的广告现在是怎么样的呢?简而言之,我们不会增加广告的数量,而是去改善现有广告的质量。相比与其他网站,我们能够更容易地挖掘( https://kevinmontrose.com/2015/01/27/providence-machine-learning-at-stack-exchange/ )出来你作为一个开发者喜欢哪些技术。我们在研究利用什么才能让广告和用户相关性更高。当然这会耗时略长,但我们也希望广告加载也能够更快——那就是另一个大项目了。
我们一直没有做的是降低我们的广告质量。你们知道 Stack Overflow 每个月都有很多广告没有卖出去吗?只要我们展示一个「house ad」 (注:根据 webopedia 的 house ad 定义是:In Online Advertising, house ad refers to a self-promotional ad that a company runs on their own Web site or Network of Web sites to use space left from unsold inventory. 可以简单理解为自产自销)或者 「community ad」(注:Stack Overflow 的社区广告,具体形式可以参考 Open Source Advertising - 2H 2016),我们就可以展示一个付费广告。但是我们没有这样做,因为如果我们不能给你们提供更好的东西,那么我们就不提供。
同时我们也不想用一个自动化系统去为我们选择广告。我们考虑过,但是它不能保证我们期望的广告质量。我们因此损失了一大笔钱。牺牲质量从来都不是我们的作风,我们相信有更好的方式。
值得提的很重要的一点是,我们的销售团队拒绝了一些我们可以卖的广告。通过卖广告确实可以赚钱,但是他们却拒绝这么做,因为相比赚钱来说,他们更关心我们要做什么以及用户如何看待我们。你现在能想象出来这群人是多么的奇葩吗?不仅如此,面对老板的时候,销售团队也是这么做的。所有人都跟关心比我们自身利益更重要的事情,这也是我为什么要在这儿工作的原因。
我们有些广告加载的有点慢(多谢用户的反馈)。我们为广告主做了问题追踪,并在力所能及的范围能帮助他们。由于影响了不少人,这个问题是一个很复杂的问题,但是我们还是努力地去做了。Samo 和我会针对这些加载慢的广告做采样,并添加时间统计信息,这样以后后类似问题就可以进行自动报警了。我们认为广告加载慢或者价格不菲都是对用户体验的伤害。性能是一个特性,以及网页上的任何元素对我们都很重要。
我和我们的广告销售团队一起努力,保证在 2017 年 1 月,我们所有的广告都将支持 HTTPS。现在很多也都支持,但是并不全部保证,我们以后会加强这方面。我不希望这成为其他任何事情的阻碍。我们计划把我们的所有的 Imgur 图片地址迁移成 https://。同时我也打算把所有的网站 logo 和图标地址迁移到 https://。我们正努力地进行这项大工程,这里就不细说了。
企业版
我们将投入更多的精力去开发 Stack Overflow 企业版。这件事开始逐渐地需要更多精力,同时这也是帮助那些受困于公司防火墙的开发者和我们公司内部。我们现在有几个同事在全力做这件事儿。企业版的环境有一点特别,需要一些特别的热爱。
但是企业版也是基于 Stackoverflow.com 的代码,取自同一个代码分支。有时候企业版的特性正好也是大众版需要的特性。比如我们想针对 HTTPS 建一个图片代理服务器,这正好也是受防火墙保护的企业版所需要的。还有我之前提到的用户停留时间,正好可以帮助我们用来估算带宽。企业版也是我们正在进行的一个大的方向。
信任
对于我们这种规模的公司,要赚钱,市场部是非常重要的。
但是两年前,我并不信任我们的市场团队,因为他们没有名气,而且我没有听说过。我之前有过关于营销人员的糟糕经历,所以我潜意识里认为「所有的营销人员都是差劲的,他们只不过想利用用户的信任来赚钱罢了」。结果证明我错了。在我和团队共同做过几个项目之后,我逐渐改变了我的偏见,并且意识到:我们的市场营销人员都很厉害,并且我在意的东西,他们和我一样在意。特别是对 Kaitlin,感谢。我们的新团队已经对市场部做了很多妥协并且不会再因此而吵架。市场团队会用实践告诉我们为什么这些事情是一些非常棒的点子,他们在很多事情上说服了我们一些非常聪明的人。
我们团队的所有人都明白 Stack Overflow 社区以及他们的信任是我们最宝贵的资源。我们希望和用户交流,而不是疏远。我们认为我们可以帮助我们的用户。如果我们做的正确了,这反过来又能帮助我们成为一个更好的公司。我并不认为这是一件坏事,如果我们可以壮大我们的公司,那么我们就可以为这个世界做更多有意义的事。对于你们,我有太多太多想要去做的事情。
Adrianna(我们的新 CMO)的演讲给我留下非常深刻的印象。在这个聚会之前我并没有见过她,但是却给我留下了深刻的第一印象。关于我们的品牌宣传他们有一些非常棒的方案。当我听她演讲的时候,我的脑海中就一直在想「我们十年前为什么没有做这些?」。
市场营销,就像开发一样,更多地是将一个个孤立的点连接起来。我已经从最初的恐惧市场人员到渴望和他们一起工作。我们现在有很多聪明和用心的员工,他们让我们每个人都参与到公司的建设当中来。我现在真的很激动。
案例研究:我们如何建立信任——邮件
互相信任和共享信息直接关系到我们如何构建内部工具。下面是一个最近的例子,体现了信任在我们的产品中是一个多么必需的特性。
我管理的架构团队是怎样的呢?我们团队编写了一个套新的邮件系统,用来以一种固定的方式和我们的用户进行沟通。这个项目困难重重,我为什么这么说呢?因为我最初对这件事情 100% 地反对,后来亲手把它送上线。顺便说一下,所谓的架构团队只有我和 Samo Prelog。团队只是一个听起来的力量更强的词。或许我们应该叫做「伙伴」。或者说我们是一个由俩人组成的正义联盟。言归正传,我们继续说邮件。
关于邮件系统我设计的第一条准则是什么呢?可以选择退订。(注:原文是 opt out。维基百科的定义:The term opt-out refers to several methods by which individuals can avoid receiving unsolicited product or service information. )。这是我们做的第一件事情,并且我们觉得这是对我们最重要的特性。我们设计了一键取消订阅以及一个对应页面,通过页面你可以退出任何不想继续看到的话题。这个特性的优先级为 1。(注:应该是优先级最高,如果他们没有优先级 0 )。多年以前我把 LindedIn 发来的邮件都放到了垃圾箱里。如果你不想再收到我们的信息,当然也没问题。我对我们的打扰表示非常抱歉,同时对用户的理解表示真诚的感谢。我最担心的是让社区的用户感到烦恼,这经常让我晚上睡不着。
现在我们正通过邮件将我们的 Developer Story 计划发送给我们的用户,希望这可以帮助一部分的开发者。如果邮件被拒绝,我们将不再发送给你;如果邮件没有回复,我们将不再发送给你;如果邮件被标记为垃圾邮件,我们也不会再发送给你。这里我们想做一个好公民。每一封新邮件,除了需要处理的邮件比如「忘记密码?」,被发出的时候在底部都有三个链接:一键取消订阅、分类管理和反馈。
我们这么设计邮件系统(需要非常多的精力)的一个原因是如果我们的设定条件不满足的时候(我们现在使用的是 SendGrid,目前为止体验良好),我们非常肯定你对这类邮件不感兴趣,并且退订了。我们不想冒任何风险打扰对我们的产品明确表示不感兴趣的用户。
然而目前我们只有一个分类(「新特性」),我们计划增加更多的分类。但是我并不是说增加更多的邮件,而是把目前现存的邮件,比如 [社区简讯],归入我们的新系统,这样你就可以用一种非常方便的方式来管理了,比如一键取消订阅。坦率地说,我们的邮件偏好度页面简直就是灾难。
邮件系统是任何网站发展过程中都需要去慢慢精雕细琢的。我们现在有员工现在在做这方面工作。我们的一个设计师,Donna,正在非常努力地去尝试简化它。我们的后端也需要做非常多的改变来支持这些统一和简化。我们希望我们每个用户有一个邮件地址和一个你可以管理所有来自 Stack Overflow 的邮件的地方。如果你感觉不悦,那么你最多需要点击一下到两下来退订所有邮件。
所有的沟通和互动都应该反映了我们对你的尊重,如果没有做到,那么我们让你失望了,同时也让我们自己失望了。我们的使命是提高开发者的生活品质,当我失眠的时候,我经常在担心这个。我们一定要值得你们的信任,幸运的是,我们做到了。
当我们之后为邮件做新的归类的时候(不仅仅是把我们现在发送的做个简单的分类),现存的用户不会被选择加入,只有新的用户会。我们不想被称人称为「那种网站」。我是认真的。我们会针对这个重新设置我们的 DB 结构。
如果你读了我们的「Develop Story」邮件,而且不想收到,这是完全没问题的。我希望 Stack Overflow 能够用另外更好的方式来服务你,而且我们不会浪费你的时间。我希望其他项目,像 「Documentation」 和正在进行的「Q&A」,能够让你在 Stack Overflow 的生活更加地自在。这就是我们为什么存在的原因。也是我为什么在 Stack Overflow 的原因。
关于接下来的计划
关于未来我们有很多的事情可以做。我想在 SQL Server 中加入一个时间序列的数据库。我想验证我们在午夜想出的一个关于开发者新闻的消费的点子。我想做一些数据连接,这可以帮助团队之间工作节省很多时间。我还有很多事情想要去做。
对于未来我感到非常兴奋。我为 Documentatoin 感到兴奋,同时我也为 Developer Stories 感动兴奋。我已经等不及要出发了。我想从公司拿出一部分钱,那么我们就可以为社区做一些对社区有用的事情了。我知道我们能做到,并且能做的很好。我希望我的这些只言片语能够帮助你们了解 Stack Overflow 是什么样的,哪怕只是一点点了解。
谢谢聆听。
文中提及的一些 Stack Overflow 产品和服务:
How Stack Overflow does deployment:
https://nickcraver.com/blog/2016/05/03/stack-overflow-how-we-do-deployment-2016-edition/
How we do hardware:
https://nickcraver.com/blog/2016/03/29/stack-overflow-the-hardware-2016-edition/
How we built our architecture:
https://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/
Stack Overflow Salary Calculator:
https://stackoverflow.blog/2016/07/salary-transparency/
Display Ads and Talent:
http://business.stackoverflow.com/
Open Source Advertising - 2H 2016:
http://meta.stackoverflow.com/questions/327559/open-source-advertising-2h-2016
Developer Story:
Developer Hiring Blog:
https://business.stackoverflow.com/blog
广告业务:
https://business.stackoverflow.com/advertise
广告挖掘:
https://kevinmontrose.com/2015/01/27/providence-machine-learning-at-stack-exchange/
社区简讯:
http://stackexchange.com/newsletters
Stack Overflow 企业版:
https://business.stackoverflow.com/enterprise
Documentation: