获取 icanmakeitbetter
了解 icanmakeitbetter 如何采用 Elixir 以提升可扩展性。
关于 icanmakeitbetter
***icanmakeitbetter*** 是一个洞察社区与反馈平台,集成了问卷调查、实时聊天、焦点小组、讨论论坛、数字日记、创意激发以及面板管理等功能。

起源故事
故事始于一位企业家、几片披萨和一张沾满污渍的餐巾纸。事实上,icanmakeitbetter 最初是一家科技初创公司。
2011年,保罗·贾诺维茨是一位正在成长的市场研究公司创始人,同时怀有一个想法。他逐渐意识到,即使提出最优质的问题,并投入巨大努力与世界级分析,如果找错了目标人群,这一切都将毫无意义。他与布鲁斯·泰特在披萨桌上会面,探讨如何自动化构建研究社区的过程,以找到并吸引最佳客户。他们头脑风暴、草图构思,几天后,icanmakeitbetter正式成立。可惜的是,那张最初的餐巾纸因无法挽回的酱汁污渍最终被扔进了垃圾桶。
这家刚刚合并的公司仅有两名程序员,其中一人甚至在新西兰完成了他的第一个完整工作年。他们迅速搭建起产品,并成功吸引了几位大客户,为公司的成长提供了动力。他们深知商业模式将不断演变,因此选择了能最大化开发者快速原型开发体验的技术栈。可扩展性可以稍后再考虑。
业务发展
在接下来的几年里,这家年轻的初创公司不断优化其平台,聚焦于一种更具可扩展性的商业模式。在此过程中,他们遇到了多个技术挑战。最初的想法平台之所以易于扩展,是因为它主要由容易缓存的页面构成,且流量是自然增长的,全天分布均匀,负载稳定。

随着公司进入新领域(包括问卷调查),性能问题开始浮现。复杂的问卷平台难以通过缓存实现扩展,因为每一页的内容和结构都依赖于前一页的回答。
此外,问卷平台高度依赖电子邮件和推送通知。当研究人员通过自动化邀请向数万名用户发送邀请时,这些用户往往在同一时间涌入。由于难以预判哪些问卷会有高完成率,流量具有高度不确定性。平台开始显现出压力迹象,原有的缓存策略失效,布鲁斯开始寻找潜在的解决方案。
经过两年间参加数十场国际会议,icanmakeitbetter最终选定 Elixir 来解决这些可扩展性问题,并为用户提供更富互动性的体验。
注意: Elixir 是一种函数式语言,具备强大的并发处理能力和容错性,因此具有良好的扩展潜力。
这种新兴语言支持高级且易读的语法,拥有出色的元编程能力,能够支撑他们高效的研发环境。Elixir 底层基于 Erlang,使团队对系统的长期稳定性和可靠性充满信心。
布鲁斯开始与 Elixir 的创造者何塞(José)以及其他社区成员合作,推动 Elixir 相关库、会议和出版物的发展,助力该语言走向成熟。他们聘请了 Elixir 的第二位贡献者埃里克·梅多斯-约恩松(Eric Meadows-Jönsson),为语言注入稳定性。随后,icanmakeitbetter首次推出了融合定量与定性研究理念的 Elixir 聊天应用。该项目取得成功后,他们将核心问卷平台迁移至 Elixir,公司也开始逐步收获成果。

icanmakeitbetter 团队原本认为,与这项新技术的关联会使公司对潜在收购方更具吸引力。更先进的技术意味着更强的可扩展性和稳定性。然而,我们很快就会发现,这一假设并不一定成立。
收购过程
当技术团队致力于漫长的 Elixir 迁移工作时,公司的业务部门却迎来了新的成功。在传统调研机构普遍增长乏力的背景下,icanmakeitbetter 因为通过研究社区更好地连接客户,提升了参与度,从而实现了持续增长。
这一趋势也引起了其他公司的关注。#key# LRW:LRW 是一家全球市场研究咨询公司,凭借将深刻的人类洞察与复杂的数据分析转化为客户商业成功的独特能力而著称。#key# 是一家处于行业深刻变革中的市场研究企业集团。作为一项新的增长战略,他们希望收购 icanmakeitbetter,以抢占快速增长的“洞察社区”领域。他们的首席技术官肖恩·科莱特及其团队负责评估 icanmakeitbetter 的技术架构是否存在商业风险。
随后,一系列问题接踵而至。起初,肖恩对采用一门新技术语言感到担忧,主要源于难以招聘到相关开发人员以及缺乏配套工具。作为一名经验丰富且精明的商人和 CTO,他清楚地知道,当优秀开发者出于错误原因采纳前沿技术时,可能带来的后果。让我们直接聆听他本人的看法:
肖恩的发言表明,技术采纳远不止是一个技术问题。他对收购正处于转型期的公司存在合理的顾虑。
在接下来的一年里,进展变得缓慢。icanmakeitbetter 并未停止 Elixir 迁移工作,但团队精力被分散到多个必须开发的功能上,以保持竞争力并维持增长。随着平台趋于稳定并积累关键用户规模,他们开始以更快的速度推出新功能。
随着这一进程的推进,布鲁斯开始以其他早期采用者的视角重新审视 Elixir。他在两年间频繁发表关于技术采纳的演讲,帮助那些在旧技术中挣扎的开发者,基于自身业务需求,更有说服力地论证转向 Elixir 的合理性。简而言之,他正协助采纳者发现新的问题,并找到答案的路径。
早期采纳者面临的领导力问题
当初创公司融入收购方后,布鲁斯与肖恩的合作更加紧密。布鲁斯邀请肖恩参加 2016 年在奥兰多举办的 ElixirConf,两人还共同参与了其他活动。他们开始深入探讨技术采纳背后的“政治”层面,思考以下问题:
- 我们如何在决策过程的最早阶段就充分纳入高层管理利益相关者?
- 我们在哪里能找到愿意使用新技术的开发者?
- 程序员应前往何处学习如何编写函数式、并发代码?

随着课程的深入,我们将围绕这些问题形成更多新的思考。同时,我们也将回顾那些曾面对类似挑战并给出解答的先行者们的访谈。