标签归档:技术管理

《微信背后的产品观》中张小龙给了研发同学 3 点建议

一直说要把《微信背后的产品观》这本书看完,一直没顾得上,这次临时出差到厦门的路上带上了,动车上的时间把书看完了,去的时候看了一遍,回的时候看了一遍,看完,写下这篇文章。

这本与其说是书,不如说是演讲实录。书的内容来源自张小龙在 2012 年的那次著名的 8 小时演讲,2016 年被整理成书稿,在 2021 年决定出版。好的内容是经得起时间考验的,在 9 年之后出版,在 12 年后的今天来看也不过时,甚至部分观点会刷新我们的一些认知。

以下是我在读这本书的过程感受比较强烈的三个观点或建议。

1 如果解决方案非常复杂,一定是问题错了。

这是从一个开发能力很强很全面的在朋友圈抱怨:「觉得微信的代码越来越复杂了,开始搞不定了」,张小龙在下面评论说:「如果一个问题的解决方案太复杂,一定是问题本身错了。事实上就是这样子的。

一个好的问题不应该导致解决方案太复杂。

从研发的角度来看,引申出来有 3 点:

1. 如果解决方案非常复杂,一定是问题错了或者是需求有问题

很多时候,我们在面对一个问题时,容易陷入复杂的解决方案中或者限入为了解决问题而解决问题。但其实当一个解决方案变得非常复杂时,我们应该反思问题的提法是否正确,需求是否是真正的需求。一个好的问题应该能够用一个相对简洁优雅的方案去解决。

陷入困境时我们要学会换个角度或者跳出问题来思考问题。当感到解决方案过于复杂时,不妨退一步问问自己,是不是对需求或问题有误解,有没有更本质更简单的诉求。化繁为简,用简单的方法解决问题,是一种智慧。

2. 优秀的工程师其实可以帮助产品经理矫正需求

产品经理提出的需求,研发同学往往会无条件去满足。但优秀的工程师,应该具备产品思维,有能力去审视和质疑需求背后的逻辑,去引导产品经理矫正需求。

一味地满足需求,只会让产品变得复杂和庞大。优秀的工程师应该成为产品经理的思想伙伴,而不仅仅是执行者。在开发过程中提出合理化建议,做有价值的事,把控产品的定位和走向,这是更高境界的工程师素养。

3. 写代码只是其次,思考和讨论产品也是重要的工作

作为研发同学,不能把自己局限在写代码上。思考产品,了解用户,参与需求讨论,才能真正驱动产品的进步。

代码只是工具,而洞察需求,理解人性,思考产品形态,决定产品体验,这些应该是每一个研发同学的内功。要把自己的视野拓展到产品层面,主动去思考为什么做这个功能、用户会喜欢吗、还能怎么改进体验。唯有这样,才能成为真正优秀的工程师。

2 抽象方能化繁为简

这个观点应该是大部分场景下面,研发同学都认同的。

当面对大量繁杂的需求时,与其逐一满足,不如试图提炼出其中的共性和本质,将之抽象为更少量、更高层次的需求。这个过程就是「抽象」。

以订阅内容为例,如果把各类内容提供方(如企业、个人、媒体等)的形形色色的诉求都一一满足,系统必然会变得非常复杂。但若能抽象出一个统一的账号体系和内容载体,就能用一套接口来服务各方,大大简化了系统。

抽象的层次越高,派生出的子需求就越多。比如将 100 个需求抽象、归纳为 10 个,甚至 1 个,则原本的 100 个需求都可以被这 10 个或 1 个「母需求」所覆盖。

要做好抽象,关键是要找准需求的共性、本质之处,即所谓的不变量,而非沉陷于各自差异化的细枝末节。唯有升维思考,才能在更高层次上对繁复的事物进行归纳和简化。

通过「以简御繁」「归一化」的抽象思路,可以大大降低系统复杂度,提升开发和管理效率。同时让产品对用户更加友好,使用更加简单统一。

这种化繁为简的抽象思维,是一种非常重要的思考方式和设计原则,对于管理大型复杂系统、满足多元需求有重要指导意义。不仅开发人员要掌握,其他非技术人员也很有必要学习这种思维方式。

3 改变旧世界的意愿

在书中,改变旧世界的意愿是在气质篇的第一篇,从其定义上更多的是一些日常记录的点。

在「改变旧世界的意愿」这一点上,张小龙提到了自己:「对于对iPhone5的唯一期待是,像iPad(3G)一样,不支持电话功能。这样,我少了电话费,但你可以用kik跟我短信,用 googlevoice跟我通话,用 facetime 跟我视频。」

做一个产品,意愿是很重要的。我们有没有去一个改变旧世界的意愿

作为一个研发团队的管理者,改变旧世界的意愿是一个团队管理中的核心逻辑。上次和小帅聊天,也有聊到我们在团队管理岗上,我们始终应该改变点什么

「改变旧世界」的意愿,本质上是一种创新驱动和价值追求。它意味着不满足于现状,主动去探索和尝试新的可能性,并以之来重塑既有的产品形态、技术架构乃至商业模式。这种意愿需要从管理者开始,成为团队的共识和愿景,并指引技术决策和项目实践的方向。

技术管理者需要与团队一起,去思考如何用技术的力量去创造更多的附加价值,解决用户和业务的痛点。要审视自己的产品定位和技术路线,看是否还有优化和颠覆的空间。同时要放眼行业前沿和未来趋势,去探索下一个风口和变革点。唯有确立了明确的变革方向和价值诉求,才能凝聚共识,激发动力。

事实上,很多时候阻碍我们「改变旧世界」的,恰恰是技术和架构层面的「旧世界」。长期累积下来的历史债务,割裂的系统,低效的架构,过时的技术栈,都成为了创新的桎梏。团队往往需要耗费大量时间和精力在修修补补和「打补丁」上,而无暇去思考和实现变革。

这就需要技术管理者下定决心,带领团队去正视和解决技术债务。要客观评估既有系统的健康度,识别出最急需重构和升级的部分。同时要重新思考整个技术架构,看如何通过解耦、重构、引入新技术等手段,来提升系统的灵活性、可扩展性和创新友好度。只有在架构层面打好基础,才能为变革扫清障碍。

除了对技术、架构、债务的改变,「改变旧世界」的意愿,还需要适配研发团队的现状和组织形态。如果团队长期处于产品需求的压力之下,缺乏思考和探索的时间;如果组织过于层级化和官僚化,创新的想法很难被听到和采纳;如果绩效考核过于短视和功利,大家不愿承担变革的风险,那么这种意愿就很难真正落地。

技术管理者需要为团队争取一定的自主权和探索空间。在项目排期和任务分配上,要预留出一定比例的「创新时间」或者技术时间,鼓励大家尝试新的 idea。同时要优化组织架构和流程,让信息和想法能够更顺畅地在团队中流动,减少决策链路,提升反应速度。绩效评估也要将创新和长期价值纳入考量,为「改变」提供合理的回报。

从技术管理者自身来说,站在产品和技术实现交汇的点上,对产品的认知和对实现细节的认知让研发管理可以更高效,更合理的决策技术方案和产品规划,从而更好地引领技术团队实现产品价值和商业目标。

作为管理者,要具备产品视角和技术视角的双重思维,一方面深入了解业务需求和用户痛点,另一方面洞悉技术方案的可行性和优劣。要善于在两个视角之间切换和权衡,找到既能满足需求,又能控制成本和风险的平衡点。也要能跳出具体实现,从更宏观的层面去思考技术战略和产品演进路径,看清下一步的发力点和布局方向。

在具体的实践过程中,技术管理者需要深入了解产品需求的来龙去脉。不能仅停留在需求文档上,而要主动与产品经理甚至客户沟通,理解需求背后的业务逻辑、用户痛点和产品价值。唯有对需求有了全面的认知,才能在技术选型、架构设计、任务拆分等环节做出正确的决策。

同时,技术管理者要对技术实现有足够的了解。这并不意味着要事无巨细地参与到每一行代码中,而是要对关键技术难点、潜在风险、优化方向等有把握。要与技术骨干保持频繁的讨论,时刻掌握开发进度和问题。只有将宏观的需求理解和微观的实现细节结合起来,才能站在全局的高度去调配资源、优化流程、控制质量。

管理者要营造产品和研发的良性互动。鼓励研发团队主动了解业务,引导产品经理关注技术价值,提倡双方同理共情、互相成就。打造一种「产品驱动研发,研发反哺产品」的良性循环,激发团队斗志,凝聚团队向心力。

小结

以书中提到的微信 4.0.1 和 4.2 发布时的文案作为本篇文章的结尾:

很喜欢这句话:如你所知,微信不只是一个聊天工具;如你所见,微信,是一个生活方式。

你曾经在微博上虚掷光阴
如今又在微信里蹉跎岁月
你以为通过手机就连接了世界,
其实只是躲在屏幕后面获取了安全感。
是时候放下手机,和朋友面对面了!
如若不能,试试微信视频通话
少发微信,多和朋友见见面!

跨越鸿沟看 SaaS 产品的产研逻辑

《跨越鸿沟》是由杰弗里·摩尔(Geoffrey A. Moore)所著的一本关于市场营销的经典书籍。它详细描述了高科技产品在市场上从早期采纳者到主流市场的过渡过程,以及伴随这一过程的各种挑战和策略。

书中所说的「鸿沟」指的是产品从「早期采纳者」阶段过渡到「早期大众」阶段时面临的市场接受度的断层。在 SaaS 领域,这个概念尤其重要,因为产品往往需要迅速获得大规模用户基础以实现规模经济。

在《跨越鸿沟》中有一个非常重要的技术采用生命周期(Technology Adoption LifeCycle),技术采用生命周期为一钟形曲线(Bell Curve),该曲线将消费者采用新技术的过程分成五个阶段,分别包括创新者、早期采用者、早期大众、晚期大众与落后者。

每个阶段都代表了产品在市场上获得不同群体用户接受的过程,并且对于 SaaS 企业来说,用户行为也略有不同:

  1. 创新者 - 冒险家,这些是最早采纳新技术的人。他们愿意承担较高的风险,对新技术充满热情,并且通常拥有技术背景。在这个阶段的 SaaS 企业提供的通常是最新的、创新的服务或功能。这些服务吸引了那些对新技术充满热情的早期用户,他们愿意尝试共建并提供反馈。这些用户通常对新技术的接受度高,愿意承担一定的风险。
  2. 早期采纳者 - 意见领袖,他们也对新技术抱有热情,但他们更关注技术能为他们带来的实际价值和优势。对于 SaaS 企业的这个阶段来说,用户开始认识到 SaaS 产品的价值,并开始在他们的业务中实施。他们可能是行业内的意见领袖或早期采纳者,愿意分享他们的成功案例,从而吸引更多的用户。
  3. 早期大众 - 深思熟虑者,这个群体更加实用,他们愿意采纳新技术,但需要看到明确的证据表明该技术已经被其他人成功采用。这个阶段的用户需要产品更稳定、支持更好,且集成到现有系统中的风险更低。随着 SaaS 产品的成熟和市场教育的深入,更多的企业开始认识到 SaaS 的优势,如成本效益、灵活性和可扩展性。这些用户开始采用 SaaS 解决方案,但仍然需要看到明确的证据,证明这些服务能够满足他们的需求。
  4. 晚期大众 - 传统群众,他们通常在市场上采纳新技术的时间比早期多数要晚。这个群体通常更保守、更价格敏感,并需要大量的用户证明和支持服务。在这个阶段,SaaS 企业的方案已经成为行业内的主流选择。它们已经成为行业标准,并且用户对这些服务的信任度很高。在这个阶段,SaaS 企业需要关注服务质量、客户支持和持续创新,以保持竞争力。
  5. 落后者 - 落伍者,这个群体最后采纳新技术,通常是出于必要而非选择。他们对新技术不感兴趣,可能是因为对新技术不信任或是对变化有抵触感。但当他们的客户和合作伙伴已经转向了 SaaS 解决方案时,他们也会使用 SaaS 产品。

从技术采用生命周期的角度来看,SaaS 产品在不同阶段的产品研发、资源配置、商业逻辑等都有所不同。

创新者阶段

在创新者阶段,SaaS 企业提供的通常是最新的、创新的服务或功能。这些服务吸引了那些对新技术充满热情的早期用户,他们愿意尝试共建并提供反馈。这些用户通常对新技术的接受度高,愿意承担一定的风险和成本。

在创新者阶段,SaaS 业务的用户群体相对较小但高度专注,可能包括以下三种:

  • 早期采纳者:愿意尝试新技术并提供反馈的个人或组织。
  • 细分市场:特定的行业或市场细分,对于定制化的或高度专业化的解决方案有明确需求。
  • 技术热心者:对最新技术充满热情,对产品未完全成熟有一定的容忍度。

特别是「早期采纳者」,会是整个业务的起点,从服务好一个客户开始,这个客户可能是刚好遇到的,也可能是刻意寻找的共创者。

在这个阶段,SaaS产品通常是原型或者最初版本,强调创新和独特的功能。可能这个时候还称不上一个 SaaS,甚至只是一个私有化的定制方案。

此时的产品不完善,但提供了新的解决方案或业务模式,解决了现有市场上尚未被满足的需求。主要解决的问题包括探索新的市场机会、验证产品概念和提早获得用户反馈。

从产品层面,大概具备以下的特征:

  • 创新性强,可能是市场上首个提供某种服务的产品。
  • 用户界面和客户体验可能未完全弄好。
  • 功能集中在核心创新点,可能缺乏辅助功能。

从研发的角度,我们需要重点关注

  1. 快速迭代和验证:我们要快速开发出 MVP,并与早期用户密切合作,收集他们的反馈,不断迭代和改进产品。这个阶段的重点是验证我们的产品理念,确保我们的解决方案能够满足用户的实际需求。
  2. 灵活性和定制化:由于早期用户可能来自不同的细分市场,他们的需求可能各不相同。我们需要保持产品的灵活性,能够根据不同用户的反馈进行定制化开发,满足他们的特定需求,同时积累案例。
  3. 技术创新和领先:作为创新者,我们必须在技术上保持领先。我们要敢于尝试新的技术和架构,为用户提供独特的价值。同时,我们也要确保产品的稳定性和可扩展性,为后续的发展打下坚实的基础。
  4. 与早期用户建立紧密关系:早期用户是我们最宝贵的资源。我们要与他们建立紧密的合作关系,倾听他们的反馈,了解他们的痛点。我们要让他们感受到自己是产品的一部分,共同塑造产品的未来。

在创新者阶段,SaaS 产品面临的最大问题是市场验证和产品市场契合度(Product-Market Fit)。虽然我们的创新理念可能源于对市场和用户需求的洞察,但在实际推出产品之前,这些假设都没有得到真正的检验。我们可能会犯两种错误:一是对用户需求的判断失误,二是高估了市场对创新产品的接受程度。这就像是在黑暗中航行,我们看到了目标,却不确定航向是否正确。如果产品定位偏离了用户的真实需求,再好的创意也难以吸引和留住早期用户。因此,我们必须通过频繁的用户互动和数据分析,不断校准我们的方向,确保产品的每一次迭代都朝着正确的方向前进。

创新往往意味着探索未知的领域,采用新的技术和架构。这对研发团队提出了更高的要求,既需要快速学习和掌握新技术,又要在有限的时间和资源内交付高质量的产品。同时,由于我们的重点是尽快推出 MVP,产品在功能的完整性、性能的稳定性、用户体验的友好性等方面可能还存在不足。这就像是一个幼儿,虽然充满了潜力和想象力,但在很多方面还不够成熟和完善。我们必须在快速迭代的过程中,时刻关注产品质量和用户反馈,不断打磨和优化我们的产品,让它尽快成长为一个稳定、可靠、易用的 SaaS 服务。

创新者阶段的 SaaS 企业还面临着资源限制和竞争压力的双重挑战。作为一家初创公司,我们在资金、人才、时间等方面的资源都非常有限。我们必须做出艰难的取舍,将有限的资源集中在最关键的创新点和最紧迫的问题上。同时,我们也必须时刻关注市场动态,警惕来自其他初创企业或成熟企业的竞争威胁。这就像是一场赛跑,我们需要在有限的资源下跑得更快、更稳、更远。这需要我们在产品开发、市场营销、客户支持等方面做到协调高效,需要我们的团队具备极强的学习能力、应变能力和执行力。只有这样,我们才能在激烈的竞争中脱颖而出,赢得用户的认可和市场的青睐。

面对这些问题,我们需要有一些做事的原则,在繁杂的问题中不至于走偏:

  1. 用户至上:一切以用户的需求为中心。我们要深入了解用户,与他们建立信任和共鸣,让他们成为我们的坚实后盾。
  2. 快速行动:创新者阶段的窗口期可能很短,我们必须抓住每一个机会。我们要快速做出决策,快速开发和迭代,不断推进产品的发展。
  3. 拥抱变化:在这个阶段,变化是常态。我们要有灵活的思维,随时准备调整方向。我们要勇于接受用户的反馈,即使这意味着要推倒重来。
  4. 追求卓越:即使是 MVP,我们也要力求做到最好。我们要在创新的同时,保证产品的质量和可用性。我们要为早期用户提供优秀的体验,赢得他们的信任和支持。

上面这些表述原则的词语看着挺虚的,但是却是我们在这个阶段做事过程中要秉承的原则。

当然,这些原则也不是仅适用于这个阶段,一些原则在其它阶段也会适用。

只有与早期用户建立起牢固的合作关系,我们才能真正实现产品的突破,为后续的发展奠定基础。

早期采纳者阶段

在早期采纳者阶段,创业者已经开始积累了一些客户,产品基本已经 SaaS 化,用户开始认识到 SaaS 产品的价值,并开始在他们的业务中实施。他们可能是行业内的意见领袖或早期采纳者,愿意分享他们的成功案例,从而吸引更多的用户。

这些用户大多数具有以下的特征:

  • 更愿意尝试新技术的个人或企业。
  • 在他们的社群或行业中具有影响力,可能是意见领袖。
  • 寻找创新解决方案以获得竞争优势。
  • 对产品尚不完善的部分有一定的容忍度,并愿意提供反馈。

SaaS 产品在这个阶段开始形成更加稳定的 SaaS 版本,同时保持创新性。产品开始解决用户更实际的业务问题,通过提供更好的用户体验、更多的功能和改进的性能。主要解决的问题是如何提供足够的价值驱动用户付费,并且建立品牌的信任度。

从产品层面,此时大概具备以下的特征:

  • 更加用户友好,有明确的价值主张。
  • 开始关注市场反馈,进行功能优化和迭代。
  • 旨在解决特定行业或市场细分的问题。

从产研的角度,我们需要重点关注以下事项:

  1. 提升产品价值:我们要深入了解早期采纳者的业务需求,不断优化和完善产品功能,提供更多的价值。我们要让用户真正感受到我们的产品能够帮助他们提高效率、降低成本、获得竞争优势。只有不断提升产品价值,我们才能驱动用户付费,实现商业上的成功。
  2. 优化用户体验:早期采纳者虽然对产品的容忍度较高,但我们仍然要重视用户体验的优化。我们要简化产品的使用流程,提供直观的界面设计,完善产品的帮助文档和用户指南。我们要通过良好的用户体验,减少用户的学习成本,提高他们的满意度和粘性。
  3. 重视客户反馈:早期采纳者是我们最宝贵的资源。我们要建立完善的客户反馈机制,通过多种渠道收集他们的意见和建议。我们要认真分析每一条反馈,深入了解用户的痛点和需求。我们要让用户感受到他们的声音被重视,他们的反馈被采纳,从而增强他们的认同感和归属感。

在这个阶段可能会面临比较多的问题,因为会服务于更多的客户,需求也会越来越多……

从技术架构的角度,随着用户数量的增长,我们的产品开始面临扩展性的挑战。我们需要确保我们的技术架构和基础设施能够支撑更大规模的用户访问和数据处理。 如果我们的产品无法平稳地扩展,就可能面临性能下降、服务中断等问题,影响用户体验和满意度。

从服务的角度,进入早期采纳者阶段后,SaaS 产品开始面临巨大的客户支持压力。这些压力主要来自三个方面:首先,随着客户数量的增加,支持工作的量级也成倍增长。其次,早期采纳者对产品和服务的期望值很高,他们希望能够得到最及时、最专业的支持。最后,随着产品功能的不断丰富,客户问题的类型也变得越来越多样化,对支持人员的技能要求越来越高。这就像是一个快速膨胀的气球,我们需要源源不断地输入新鲜空气,才能维持它的形状和张力。

但有一点我们经常会缺失,就是安全与合规性要求。早期采纳者中可能包括一些大型企业客户,他们对数据安全和隐私合规有着更高的要求。我们需要确保我们的产品符合行业标准和法规要求,并具备完善的安全防护机制。如果我们在这方面处理不当,可能面临法律风险和损失。

在做事的原则上,除了创新者阶段的原则以外,我们还可以增加以下的一些原则:

  1. 持续创新:虽然我们的产品已经初具规模,但我们仍然要保持创新的精神。我们要紧跟技术发展的步伐,不断尝试新的解决方案。我们要在稳定的基础上,持续优化和创新,为用户提供更多的价值。
  2. 数据驱动:我们要建立完善的数据分析体系,通过数据了解用户的行为,洞察用户的需求。我们要用数据说话,用数据做决策。我们要通过数据监控产品的健康状况,及时发现和解决问题。
  3. 协作共赢:我们要与早期采纳者建立紧密的合作关系。我们要与他们共同成长,与他们共享成功。我们要通过与早期采纳者的合作,完善我们的产品,扩大我们的影响力。

从早期采纳者阶段到早期大众有着深深的鸿沟,他们在采用新产品时表现出截然不同的心理特征和行为模式。

早期采纳者以变革为驱动力,他们视创新产品为颠覆现状、获取竞争优势的利器,为此甘愿承担风险,并积极参与产品的优化迭代。

相比之下,早期大众追求的是在现有基础上的渐进式进步,他们期望新产品能与已有的技术体系无缝衔接,并稳定高效地运行,从而提升生产力和效率。他们希望在尽可能小的阻力下实现技术变革,不愿意承担过多的不确定性和潜在风险。

这种心理预期和行为特征的差异,反映了创新产品在不同市场渗透阶段所面临的采纳门槛和挑战。

企业要想成功跨越鸿沟,PMF 扮演着关键角色。它象征着产品与市场需求之间的完美契合,是产品成功实现商业化的基石。

PMF 的关键标志包括:

  • 用户增长率:自发的口碑传播引发用户数量稳定增长。
  • 高用户保留率:用户不仅试用产品还持续使用。
  • 有能力为产品支付:用户认为产品提供的价值足以支付其费用。
  • 市场反馈:用户反馈积极,有明显的需求和用户满意度。

找到 PMF 意味着企业已经发现了其产品在市场上的位置,并且可以开始专注于增长和扩张战略。这通常是在产品经过初步开发和迭代之后,企业开始理解哪些功能是用户真正需要的,哪些方面的产品体验能够带来用户的满意和付费。

在技术采用生命周期中,PMF 通常出现在创新者早期采纳者之间,是过渡到早期大众之前的关键一步。一旦企业实现了产品市场契合度,它就处于较好的位置上,可以开始向早期大众晚期大众推广其产品。

未来的研发、销售、定价、服务、培训等业务流程都应当围绕这些关键的契合点进行设计和调整。产品所满足的关键需求应该是清晰明确的,避免模糊不清的情况发生。这种方法隐含着一个策略选择,即可能需要临时搁置某些客户群体和需求的满足。

此外,确保已经建立了最小可行性闭环是至关重要的。对于面向企业的产品(toB),这意味着整个业务运作流程需要能够顺畅无阻碍地进行。

一个有效的策略是首先构建最小可行性闭环,随后将产品推向市场。产品应在与用户的互动过程中不断进步,与用户共同成长。用户能够在使用过程中目睹产品的持续改善,这不仅是一种高质量的体验,同时也是建立信任的重要途径。人们天生倾向于欣赏成长,有时甚至比个人成长更加欣赏见证他人或事物的成长历程。

早期大众阶段

早期大众阶段的用户需要产品更稳定、支持更好,且集成到现有系统中的风险更低。

随着 SaaS 产品的成熟和市场教育的深入,更多的企业开始认识到 SaaS 的优势,如成本效益、灵活性和可扩展性。这些用户开始采用 SaaS 解决方案,但仍然需要看到明确的证据,证明这些服务能够满足他们的需求。

这些用户大多数具有以下的特征:

  • 他们通常比早期采纳者更为审慎,并且在采用新技术之前需要看到清晰的证据和效益。
  • 这类用户可能不是技术先驱,但他们愿意采用经验证的新技术以提高效率或获得其他好处。
  • 他们更加关注产品的稳定性、用户支持和性价比。
  • 早期大众用户需要看到其他公司或行业同行已经成功采用该技术。

在这个阶段,SaaS 产品需要更加稳定和成熟,因为其现在面向的主流市场的需求,用户体量已经很大了。

此时的产品通常具有更完善的功能、更高的可靠性和更佳的用户支持。主要解决的问题是如何扩大市场份额,满足更广泛用户的需求,同时保持产品的易用性和高性价比。

从产品层面,此时大概具备以下的特征:

  • 功能更全面,更好地集成到用户的现有工作流程中。
  • 稳定性和可靠性提高,减少错误和宕机时间。
  • 提供更多的客户支持和培训资源。

在早期大众阶段,产品的用户规模将大幅增长,系统面临更大的压力和挑战。如果产品的稳定性和可靠性无法满足用户需求,频繁出现故障或宕机,将直接影响用户体验和满意度,导致用户流失和负面口碑。这是我们在这个阶段面临的最大问题,需要我们在产品架构、性能优化、容错设计等方面投入大量精力,以确保产品能够稳定、可靠地运行。

同时,早期大众用户来自不同的行业和领域,他们对产品的需求和期望也各不相同。如何在有限的资源内,平衡和满足不同用户群体的需求,是我们面临的又一个重大挑战。我们需要深入了解不同用户群体的痛点和需求,并在产品规划和设计中做出权衡和取舍。同时,我们还需要应对不断变化的市场需求和技术趋势,及时调整产品策略和功能规划,以保持产品的竞争力和吸引力。

前面的产品稳定性和可靠性问题和用户需求多样化问题都会带来一些衍生的问题,如不够稳定或可靠,以及随着用户的大幅增长,我们将面临更大的客户支持和服务压力早期大众用户对产品的熟悉程度和技术能力参差不齐,他们在使用产品时遇到问题时,往往需要更多的指导和帮助。如果我们的客户支持和服务体系无法及时、有效地响应用户需求,将直接影响用户体验和满意度,甚至导致用户流失。我们需要在客户支持和服务方面投入更多的人力和资源,建立完善的知识库和自助服务体系,并通过多种渠道和方式,为用户提供及时、专业的帮助和支持。

在早期大众阶段,SaaS 企业的成功依赖于能够有效地向更广泛的市场证明其产品的价值,并确保产品稳定、支持到位并能够满足不断增长的客户基础的需求。同时,这一阶段提供了通过增加市场占有率和建立品牌声誉来巩固市场地位的机会。

晚期大众阶段

在晚期大众阶段,SaaS 企业的方案已经成为行业内的主流选择。

它们已经成为行业标准,并且用户对这些服务的信任度很高。在这个阶段,SaaS 企业需要关注服务质量、客户支持和持续创新,以保持竞争力。

这些用户大多数具有以下的特征:

  • 对新技术持保守态度,更倾向于在大多数人都接受后才采用。
  • 他们可能更关注价格,寻求成本效益高的解决方案。
  • 对技术变革的适应速度慢,需要更多地引导和支持。
  • 这一阶段的用户往往更注重产品的实用性而非创新性。

在这个阶段,SaaS 产品已经非常成熟,并且通常是市场上的主流选择。产品需要解决的问题是如何维持市场地位,提供更高性价比的服务,并不断改进以对抗竞争对手。

从产品层面,此时大概具备以下的特征:

  • 高度标准化,功能丰富,用户体验优化。
  • 强调易用性和可访问性,以吸引不太技术熟练的用户。
  • 价格可能更有竞争力,以吸引价格敏感的用户。

在晚期大众阶段,市场竞争日趋激烈,各种同类产品和服务不断涌现。如何保持产品的创新性和差异化优势,是我们面临的最大挑战之一。我们需要深入分析市场趋势和用户需求,不断推出新功能和服务,以满足不同用户群体的需求。同时,我们还需要在产品设计和用户体验方面进行创新,提供更加智能、个性化的服务,以区别于竞争对手。如果我们无法保持产品的创新性和差异化,将面临用户流失和市场份额下降的风险。

在这个阶段,我们的用户群体更加多样化,既有技术熟练的专业用户,也有技术能力较弱的普通用户。如何兼顾不同用户群体的需求,提供一致、优质的用户体验,是我们面临的另一个重大挑战。我们需要在产品设计中综合考虑不同用户群体的特点和需求,提供灵活、可配置的功能和界面,以及清晰、直观的操作流程和帮助文档。同时,我们还需要通过用户研究和数据分析,不断优化产品的易用性和可访问性,以提高用户满意度和留存率。

在晚期大众阶段,我们的客户群体更加庞大和多元化,对客户支持和服务的要求也更高。如何提供高质量、高效率的客户支持和服务,是我们面临的又一个重大挑战。我们需要建立完善的客户成功管理体系,为不同层次的客户提供差异化的支持和服务。同时,我们还需要建立多渠道、全天候的客户支持体系,提供及时、专业的技术支持和问题解决服务。如果我们的客户支持和服务质量无法满足用户需求,将直接影响用户体验和满意度,甚至导致用户流失和负面口碑。

从技术的角度,我们需要进一步提高产品的稳定性、可靠性和安全性。在这个阶段,产品已经成为行业标准,用户对产品的依赖程度很高,任何服务中断或数据安全问题都可能导致严重的后果。因此,我们要继续优化产品架构,加强容错设计和故障恢复能力,确保产品能够持续、稳定地运行。同时,我们要建立完善的数据安全和隐私保护机制,严格遵守相关法律法规和行业标准,保护用户数据的机密性和完整性。

在晚期大众阶段,SaaS 企业需要聚焦于巩固现有市场地位,提高运营效率,增强客户忠诚度,并在可能的情况下寻找市场细分领域以实现增长。此时,企业通常需要在保持竞争力的同时优化成本结构,确保长期的盈利能力。

落后者阶段

在落后者阶段,面对的用户通常是出于必要而非选择。他们对新技术不感兴趣,可能是因为对新技术不信任或是对变化有抵触感。但当他们的客户和合作伙伴已经转向了 SaaS 解决方案时,他们也会使用 SaaS 产品。

这些用户大多数具有以下的特征:

  • 极为保守,可能由于成本、技术恐惧或是对变化的抗拒而迟迟不愿采用新技术。
  • 他们通常在等待产品成为市场标准或者完全无法避免采用时才会改变。
  • 这类用户可能对技术不太熟悉,需要额外的教育和支持才能使用新系统。
  • 他们可能更信任长期存在的解决方案和传统的做事方式,而不是新兴的技术。

这个阶段的 SaaS 产品通常是行业标准,具有很高的稳定性和可靠性。产品需要解决的问题是如何持续吸引那些对新技术抗拒感强的用户,通常需要通过更好的客户服务、产品的简化和成本优化来实现。

从产品层面,此时大概具备以下的特征:

  • 极致地简化和优化,以降低使用复杂性。
  • 提供额外的个性化服务,以满足特定客户群体的需求。
  • 可能需要提供更多的本地化服务和支持。

在落后者阶段,我们面对的用户大多对新技术不感兴趣,甚至存在排斥和抗拒心理。他们可能由于成本考虑、技术恐惧或是对变化的抗拒而迟迟不愿采用新技术。如何提高这部分用户对 SaaS 产品的接受度和认知,是我们面临的最大挑战之一。我们需要通过各种渠道和方式,向用户普及 SaaS 的优势和价值,消除他们对新技术的疑虑和抗拒感,同时提供简单易用、稳定可靠的产品,降低用户的使用门槛和学习成本。

在这个阶段,我们面对的用户群体可能非常多样化,他们来自不同的行业、地区,有着不同的业务场景和使用习惯。如何为这些用户提供个性化的服务和支持,满足他们的特定需求,是我们面临的另一个重大挑战。我们需要深入了解不同客户群体的特点和需求,提供差异化的服务和支持,例如为重要客户或特殊行业提供专属的客户成功经理和技术支持团队,为不同地区的用户提供本地化的服务和支持等。这需要我们在客户服务和支持方面投入更多的资源和精力。

在落后者阶段,我们面对的用户对成本非常敏感,他们可能更信任长期存在的解决方案和传统的做事方式。如何在保证产品质量和服务水平的同时,不断优化成本,提供有竞争力的价格,是我们面临的又一个重要挑战。我们需要从产品架构、运营模式等方面入手,通过技术创新和流程优化,提高资源利用率和自动化水平,降低运营成本。同时,我们还需要提供灵活、多样的定价模式和服务方案,让用户能够根据自己的需求和预算选择合适的服务。

在落后者阶段,SaaS 企业需要特别关注市场教育、客户支持和产品的易用性。尽管这一阶段的增长空间有限,通过精细化管理和优化产品,企业仍然可以在市场中找到利润和维持稳定的客户基础。此时,关注客户的长期价值和满意度可能比追求快速增长更为重要。

小结

SaaS 产品的生命周期与技术生命周期密切相关,不同阶段的用户需求和产品特点都有所不同。在早期市场阶段,SaaS 产品需要专注于创新和差异化,吸引技术爱好者和早期采用者。随着产品进入主流市场,重点应转向提高产品的易用性、可靠性和性价比,以吸引务实主义者。在晚期大众阶段,SaaS 产品已成为行业标准,需要持续创新和优化用户体验,维持竞争优势。而面对落后者时,产品需要极致简化,并提供个性化服务和支持,以降低使用门槛。

SaaS 业务的核心在于长期积累复利效应,这是其区别于其他追求指数级增长模型的关键特征。随着时间推移,续费收入将成为 SaaS 企业收益的重要组成部分,而成长性收入(即客户业务增长带来的收入)也将贡献更高的毛利率。这种模式意味着 SaaS 企业需要在产品研发和客户服务上持续投入,深入了解并满足客户需求,不断优化产品和服务,以实现长期价值的积累和复利效应。

因此,SaaS 产品的产研逻辑需要兼顾技术生命周期的特点和长期积累复利效应的本质。在产品研发过程中,要根据不同阶段用户的需求和期望,制定相应的产品策略和优先级,同时要建立完善的客户反馈机制和数据分析体系,持续跟踪和优化产品性能。在客户服务方面,要提供全生命周期的支持和服务,帮助客户充分实现产品价值,提高续费率和满意度。只有在产品研发和客户服务两个维度上持续发力,SaaS 企业才能真正实现长期可持续的增长和盈利。

关于复杂系统的思考:从语雀服务中断想到的

在 10 月 23 日,语雀服务出现了一次重大故障,中断时间超过 7 小时。具体来说,这次故障的起因是在执行系统升级操作期间,新的运维升级工具出现了 bug,导致华东地区生产环境的存储服务器被误下线。由于存储系统使用的机器类别过于陈旧,无法直接将其上线,这导致了恢复过程时间延长。尽管语雀的工程师们立刻进行了恢复工作,但由于数据量大,恢复方案有限,恢复过程耗时 4 小时,数据检验耗时耗时 2 小时。这次故障给用户带来了严重的影响,也让我们重新审视关于本次故障带来的思考。

我将整个复盘报告输入给到 chatGPT,其给我的回复如下:

从语雀的这次事故中,我们可以学到以下几个关键的教训:

  1. 重视运维工具的测试和质量保证:在这次事故中,新的运维升级工具的 bug 是导致故障的主要原因。这说明,即使是运维工具,也需要进行足够的测试和质量保证。在实际使用之前,应该在相似的环境中进行充分的测试,确保其稳定性和安全性。
  2. 灾备和恢复系统的重要性:即使有了数据备份,恢复仍然可能需要花费大量时间,这会导致服务中断时间过长。因此,除了定期备份数据外,还需要建立有效的灾备和恢复系统,以便在灾难发生时,能够快速恢复服务。
  3. 灾难恢复演练的必要性:定期的灾难恢复演练可以帮助我们在真实的灾难发生时,更快地恢复服务。通过演练,我们可以发现并解决恢复过程中可能存在的问题,提高恢复的效率。
  4. 高可用架构的重要性:高可用架构可以保证在部分系统组件发生故障时,整个系统仍能继续运行。在这次事故中,由于存储系统的故障,导致了整个服务的中断。如果有高可用架构,即使某个组件发生故障,也可以通过其他的组件提供服务,从而减少服务中断的可能性。
  5. 灾难通信的重要性:在灾难发生后,应该及时向用户通报情况,说明故障的原因,修复的进度,以及预计的恢复时间。这样可以增加用户的信任度,减少用户的不安。在这次事故中,语雀做了很好的灾难通信,及时向用户报告了故障的详情,以及修复的进度。
  6. 持续改进和学习的重要性:每次故障都是一次学习的机会。通过分析故障的原因,我们可以找出问题,改进系统,避免类似的故障再次发生。在这次事故中,语雀提出了一系列的改进措施,这表明他们有持续改进和学习的意识。

但是从复杂系统的角度来看这个事件:复杂系统的性质使得它们在面临故障时,能够以我们意料之外的方式表现出来。尽管我们可能已经在设计和实施阶段做了很多工作来确保系统的稳定性,但是在实际运行中,仍然会出现我们没有预见到的问题。

高尔在讨论复杂系统时提到:「具备故障防备能力的系统出故障的原因恰恰就是故障防备能力的失灵」。这是因为在设计防备系统时,我们往往会基于我们对系统的理解来设计,但是实际上,系统的行为可能会超出我们的理解范围。当系统的行为超出我们的预期时,我们的防备措施就可能会失效。

这与这次语雀服务故障的情况非常相似。尽管语雀设计了一套备份恢复机制,但是在实际的故障中,由于对系统的理解不足,这套机制并没有发挥出应有的效果,反而延长了恢复时间。

在许多情况下,一些复杂系统的故障并不是单一的、孤立的事件,而是由一系列的因素相互作用、相互影响的结果。这通常包括了系统设计、运维策略、人为错误等多个方面。

具备故障防备能力的系统,其设计和运营目标是提供连续、稳定的服务,即使在面临内部错误或外部攻击等影响时也能持续运行。这种系统通常包含冗余的组件、自动故障切换机制、灾难恢复策略等措施,以保证系统的正常运行。

然而,这些故障防备能力本身可能成为系统故障的源头,原因可能有以下几点:

  1. 复杂性故障防备能力会增加系统的复杂性,复杂性本身就可能带来故障。例如,冗余的组件需要保持同步,如果同步机制出现问题,可能导致数据不一致,进而产生故障。

  2. 人为错误故障防备能力的维护和操作需要人工参与,人为操作错误可能导致防备能力失灵。如语雀故障案例中,运维工具的 bug 就是人为因素导致的。

  3. 预期和实际的差距:故障防备能力的设计和实施都是基于对可能故障的预期,但实际发生的故障可能超出了预期,导致防备能力无法应对。

面对一个每天都在演化的复杂系统,我们应该做些什么呢?

面对复杂,我们第一个能想到的原则应该就是 KISS 原则了。

「KISS」 原则是 「Keep It Simple, Stupid」 的缩写,这是一种广泛应用于工程、设计和决策过程中的设计原则。其最主要的理念就是保持事物的简单性。

KISS 原则主张:

  • 避免不必要的复杂性
  • 优先选择简单、清晰和直观的解决方案
  • 不要添加不必要的特性或功能
  • 简单的设计更易于维护、理解和修改

这个原则并不是说所有的事物都必须以最简单的方式来完成,而是鼓励我们在设计和决策过程中,优先考虑最简单和最直接的方法,除非有充分的理由去选择更复杂的方案。

简单性是一个非常重要的设计目标,因为它可以降低错误的可能性,提高系统的可靠性,减少维护的难度,提高效率,以及其他许多好处。

我们如果应用了以下的一些建议,应该可以往 KISS 原则靠近一些:

  1. 明确需求:首先明确我们试图解决的问题是什么。这有助于避免在设计和实现过程中添加不必要的功能或复杂性。

  2. 简化设计:在设计过程中,始终问自己是否可以把事情做得更简单。避免过度设计,只实现真正需要的功能。

  3. 模块化:把大问题分解成小问题,每个小问题都可以用简单的方式解决。这样,每个模块都保持简单,而整个系统则由这些简单模块组成。

  4. 避免不必要的优化:过早的优化可能会增加复杂性。除非确定优化会带来显著的好处,否则最好先实现功能,然后再考虑优化。

  5. 使用已有的解决方案:如果有已经存在的工具或库可以满足我们的需求,那就使用它,而不是从头开始创建。这样可以降低复杂性,同时节省时间。

  6. 代码和设计的清晰性:代码应该易于理解,设计应该直观。这不仅提高了可维护性,也让其他团队成员更容易理解你的工作。

  7. 定期回顾和重构:随着时间的推移和需求的变化,我们可能需要调整或简化现有的设计。定期回顾我们的代码和设计可以帮助我们找出可以简化的地方。

作为一个技术管理者应该作些什么呢?我认为最应该做的是拒绝那些让系统变得复杂的不合理需求,守好技术实现的大门。

面对复杂系统,我们需要对系统有深入的理解,尽可能地简化系统,避免不必要的复杂性。通过模块化设计,将复杂系统分解为相对独立的部分,每个部分都可以单独理解和测试。并且设计出健壮的错误处理和恢复机制,同时也需要进行持续的监控和回顾。只有这样,才能提升系统的稳定性,减少服务中断的可能性。