《独立开发者的商业指南·资本与退出》13.3 全书评审与后续路径

全书收口把三卷 135 篇收敛成两个分数:健康度 72/58/48 与交易准备度 76/60/54。两个分数拼成一张二维图,三个案例分别落在「可以进入市场」「按资产出售」「先修复再谈」三个位置。本节给出每个位置的下一步动作、五条全书结论,以及读者把方法用在自己生意上的顺序。

以下情境为教学假设,人物与数字不代表经核实的真实案例。

三卷 135 篇,写到这里要收口了。前面 38 节分别回答了收入怎么算、合同怎么看、估值怎么定、交易怎么做;这一节只做三件事:把全书的分数放在一起,把三个案例放进同一张图,把每个案例的下一步写成可执行的动作。

三卷各自回答了什么

卷一《收入与财务工程》回答「这门生意赚多少」。收入结构、单位经济、三张表、收入确认、预算、定价、集中度、现金流、税务、仪表盘、估值与尽调准备,45 篇最后收敛到一组可以复算的账。

卷二《合同、应收与风险》回答「这些钱有多确定」。合同结构、关键条款、账期与应收、坏账与催收、争议、保险、知识产权、授权交易、渠道、供应商依赖、数据责任、风险登记与连续性,45 篇最后收敛到一张风险登记册。

卷三《资本与退出》回答「整门生意能换多少钱」。融资与稀释、股权与期权、投资人关系、买方与流程、估值、尽调、交易结构、交割与迁移、合同与人员承继、税后与再投资、关停、持有与传承,45 篇最后收敛到两个分数。

三卷不是三个独立的部分,而是一条链:卷一的账是卷二判断的基础,卷二的风险是卷三定价的折扣项,卷三的价格又反过来要求卷一和卷二把数字做扎实。任何一环松动,最后的分数都会失真。

两个尺子,两个分数

第 13.2 节的健康度评分,回答「生意本身怎么样」,三个案例分别是 72、58、48。

附录 C 的交易准备度评分,回答「交易准备得怎么样」,三个案例分别是 76、60、54。

两个分数放在一起,得到六个数字:

案例健康度交易准备度差值位置
LedgerLite7276+4可以进入市场
Tidecast5860+2按资产出售
Nord Studio4854+6先修复再谈

差值都在 10 分以内,说明三个案例的「身体」与「准备」大致匹配:没有出现「身体很好但完全没准备」或「准备很充分但生意很差」的极端。这是本书刻意设计的——三个案例都处在一个真实独立开发者可能处在的阶段,而不是三个极端样本。

真正有信息量的是绝对值与最弱项。

LedgerLite 两个分数都在 70 以上,是三者中唯一「可以进入市场」的。它的最弱项是交易结构与税后安排(附录 C 第 4、5 组并列 71.4%),以及可转移性(健康度 55)。这两项恰好是「已经决定要卖」之后才会暴露的问题。

Tidecast 健康度 58、准备度 60,卡在 60 这条线上。它的最弱项是融资结构(40.0%)与治理(35),说明它没有可融资的股权故事;但它的可转移性 80 分是三者中最高的,资产收购的结构最清晰。结论不是「去融资」,而是「按资产出售」。

Nord 健康度 48、准备度 54,两项都低于 60。它的最弱项是融资结构与交易准备(都是 50.0%),根子在可转移性 30 分:客户关系在两位合伙人手里,合同需要重签,关键人依赖没有替代安排。在这些问题解决之前,谈价格没有意义。

二维图:健康度 × 准备度

把两个分数画成一张二维图,以 60 分为界,得到四个象限。

右上(健康 ≥ 60,准备 ≥ 60):可以进入市场。 LedgerLite 在这里。下一步不是「继续准备」,而是「开始接触」:把材料发给有限数量的买方,设定报价区间与排他期上限,同时继续经营,不把公司变成「待售状态」。

左上(健康 < 60,准备 ≥ 60):按资产出售。 Tidecast 在这里。生意本身的增长与结构不够强,但资产清晰、可转移性高。下一步是把代码、美术、音乐授权、平台账号列成清单,按资产收购谈,不做股权融资。

右下(健康 ≥ 60,准备 < 60):先补材料。 本书三个案例没有落在这个象限,但这是最常见的状态:生意不错,材料没准备。下一步是补数据表、估值桥、尽调自查与交割清单,通常需要三到六个月。

左下(健康 < 60,准备 < 60):先修复再谈。 Nord 在这里。下一步不是交易,而是把可转移性从 30 分往上拉:签合伙人买断协议、把客户关系从个人转成公司、把关键人依赖写成书面替代安排。这些动作本身也会让生意更健康。

象限不是终身标签。生意会变,分数会变,位置也会变;每季度重算一次,比记住一个结论更有用。

三个案例的下一步

LedgerLite:把「可以卖」变成「卖得掉」。 它的两个分数都够,缺的是交易执行细节:把第 4 组的对价结构、第 5 组的税后安排补到 80% 以上;把可转移性从 55 提到 70,具体动作是客户关系书面化、运维文档化、创始人从日常支持里退出。时间预算是 6 到 9 个月。

Tidecast:放弃融资,按资产卖。 它的 40.0% 融资结构分数不是「补一补就能融资」,而是「这条路径不适合」。把资产清单做细:代码仓库、美术源文件、音乐授权期限、平台账号转让条件、玩家数据迁移方案。按资产收购谈,对价里接受一部分 earn-out,用它换取更高的总价。时间预算是 3 到 6 个月。

Nord:先修可转移性,18 个月内不谈交易。 它的 30 分可转移性不是靠一份文件能解决的:两位合伙人要先把买断协议签了,把客户关系从「认识某个人」转成「认识这家公司」,把咨询合同的标准条款固化。这些做完,健康度与准备度才可能同时过 60。时间预算是 12 到 18 个月。

三个案例的动作不同,但方法相同:先看两个分数落在哪个象限,再看最弱项,最后把最弱项拆成可以在一个季度内完成的具体动作。

代码:把定位写成函数

下面的 book-review.ts 把两个分数、阈值与四个象限写成函数。positionOf 返回位置,priorityOf 返回该先补健康度还是准备度,nextActions 返回对应动作。

// file: src/capital/book-review.ts
// tier: L1
// verify: node --test test/capital/book-review.test.ts

export interface ReviewPoint {
  name: string;
  health: number;
  readiness: number;
}

export type Position = "market" | "asset-sale" | "prepare" | "repair";
export type Priority = "none" | "health" | "readiness" | "both";

export interface ReviewResult {
  name: string;
  position: Position;
  priority: Priority;
  healthGap: number;
  readinessGap: number;
  actions: string[];
}

export const THRESHOLD = 60;

export const REVIEWS: ReviewPoint[] = [
  { name: "LedgerLite", health: 72, readiness: 76 },
  { name: "Tidecast", health: 58, readiness: 60 },
  { name: "Nord Studio", health: 48, readiness: 54 },
];

function assertPoint(point: ReviewPoint): void {
  for (const value of [point.health, point.readiness]) {
    if (!Number.isFinite(value) || value < 0 || value > 100) {
      throw new Error(`score out of range: ${value}`);
    }
  }
}

export function positionOf(point: ReviewPoint): Position {
  assertPoint(point);
  const healthy = point.health >= THRESHOLD;
  const ready = point.readiness >= THRESHOLD;
  if (healthy && ready) return "market";
  if (!healthy && ready) return "asset-sale";
  if (healthy && !ready) return "prepare";
  return "repair";
}

export function priorityOf(point: ReviewPoint): Priority {
  const healthGap = Math.max(0, THRESHOLD - point.health);
  const readinessGap = Math.max(0, THRESHOLD - point.readiness);
  if (healthGap === 0 && readinessGap === 0) return "none";
  if (healthGap > 0 && readinessGap > 0) return "both";
  return healthGap > 0 ? "health" : "readiness";
}

const ACTIONS: Record<Position, string[]> = {
  market: [
    "补齐交易结构与税后安排,把最弱组从 71.4% 拉到 80% 以上",
    "准备 12 个月内的可选交易,不承诺时间表",
    "保持指标口径稳定,任何口径变化都要能回溯",
  ],
  "asset-sale": [
    "按资产收购整理代码、美术、音乐授权与账号清单",
    "确认平台账号可转让性,无法转让的部分单独定价",
    "放弃融资路径,聚焦资产出售与 earn-out 结构",
  ],
  prepare: [
    "先把最弱维度补到 60 分,再补交易准备材料",
    "把可转移性写成文件:客户关系、文档、合同转让",
    "用附录 C 自评一次,确认最弱组",
  ],
  repair: [
    "先做合伙人买断协议与客户关系转移",
    "18 个月内不进入市场,先把可转移性补到 60",
    "把关键人依赖写成书面替代安排",
  ],
};

export function nextActions(point: ReviewPoint): string[] {
  return ACTIONS[positionOf(point)];
}

export function review(point: ReviewPoint): ReviewResult {
  return {
    name: point.name,
    position: positionOf(point),
    priority: priorityOf(point),
    healthGap: Math.max(0, THRESHOLD - point.health),
    readinessGap: Math.max(0, THRESHOLD - point.readiness),
    actions: nextActions(point),
  };
}

export function reviewAll(points: ReviewPoint[] = REVIEWS): ReviewResult[] {
  return points.map((point) => review(point));
}

export function marketReady(points: ReviewPoint[] = REVIEWS): string[] {
  return points.filter((point) => positionOf(point) === "market").map((point) => point.name);
}

代码里有三个刻意的选择。

第一,阈值 60 写成常量 THRESHOLD,而不是散落在条件里。改阈值时只改一处,四个象限的判定自动跟着变;阈值是教学设定,不是行业标准。

第二,positionOf 先校验分数范围,再做判断。分数越界(负数或大于 100)直接抛错,避免把一个录入错误悄悄归到某个象限。

第三,priorityOf 返回的是「该先补哪一边」,而不是「差多少分」。健康度差 12 分、准备度差 6 分时,优先补健康度;这个判断比两个差值本身更有用。

测试覆盖三个案例的位置、缺口、动作,以及阈值边界(60 算通过,59 不通过)和越界输入。

五条全书结论

第一,收入不等于现金,现金不等于价值,价值不等于到手。 四层之间每一步都有损耗:账期占款、风险折价、税费与托管。算清每一层,才知道自己真正拿到了什么。

第二,估值先选基数,再给区间,最后交叉验证。 基数错了,倍数再准也没用;区间比单点诚实;DCF 与倍数法差得太多时,先查假设,不要取平均。

第三,交易价格 = 基准价 ± 交割调整 − 费用 − 税 − 托管占用。 报价和到手是两件事,中间隔着一整张清单。

第四,买方买的不是你的努力,是「他接手后还能不能赚到钱」。 所以可转移性不是交易阶段才考虑的事,它在第一份客户合同、第一行代码、第一次分工时就决定了。

第五,最弱的那一项,就是你下一次谈判里最可能被问住的地方。 健康度与准备度都指向同一件事:把短板补到及格线,比把长板拉得更高更有用。

读者怎么用这本书

如果你只有一小时:读第 13.1 节的矩阵与本节的两个分数表,先给自己的生意估一个位置。

如果你有一周:按所在象限读对应章节。右上读第 7、8 章;左上读第 7、8、9 章;右下读第 3、5、6 章;左下读第 2、9、12 章。读完用附录 C 自评一次。

如果你有一季度:把 13.1 的 16 项指标全部补齐,跑一次健康度评分,再按最弱维度制定一个季度的动作清单;季度末重算,看分数有没有动。

如果你正在交易中:直接跳到第 7、8、9 章与附录 C,把交割清单、托管、赔偿上限、客户迁移、代码交割逐项对照;交易结束后再回头补第 10、11、12 章。

如果还没有生意、准备开始:先读第 1 章与第 2 章,在注册主体和分配股权之前,把稀释、期权池与合伙人退出机制想清楚;这两件事在第一天做对,比在退出时补救便宜得多。

小结

全书 135 篇,最后落到两个分数与一张二维图。

健康度回答「这副身体怎么样」,交易准备度回答「能不能上手术台」。两个分数都在 60 以上,才可以进入市场;只有一个过线,就先补另一边;两个都不过线,就先治病。

LedgerLite 72 / 76,可以进入市场;Tidecast 58 / 60,按资产出售;Nord 48 / 54,先修复再谈。三个案例不是三个答案,而是三种位置;读者要做的是找到自己的位置,然后执行对应的动作。

交易的终点不是「卖掉」,而是「换到一笔与生意价值匹配的钱,并且知道这笔钱接下来怎么用」。

如果读者最后决定继续持有,本书同样适用:健康度评分、估值区间、税后现金流与治理安排,都是持有型生意的日常工具。卖掉是一种选择,持有是另一种选择;两种选择都需要同一套数字。

这本书能做的,是把这条路上的每一步都算清楚;剩下的路,要读者自己走。

阅读导航:上一节:13.2 商业健康度评分 · 下一节:目录与学习路径 。

常见错误与边界

  1. 把象限当终点。 象限是当下的位置,不是终身标签;生意变了,位置要重算。
  2. 两个分数相加。 健康度与准备度量的是不同的东西,不能合成一个总分。
  3. 只补准备度,不补健康度。 准备得再充分,生意本身不行也卖不出好价。
  4. 等要卖的时候才补可转移性。 可转移性在第一天就决定了,越晚补成本越高。
  5. 把「有人感兴趣」当成「可以进入市场」。 进入市场的标准是两个分数过线,不是收到几封邮件。
  6. 照抄三个案例的结论。 案例是教学设定,读者要替换数字、重跑评分,而不是套用 72/58/48。

本节的边界是「全书收口」:它不引入新的估值方法,也不预测任何真实交易的结果;两个分数、四个象限、五条结论都是本书 135 篇的归纳,用于帮助读者定位与排序。真实决策仍需结合自身数据、市场环境与专业意见。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「books」更多文章

  1. 《移动游戏产品的架构·商业化与发行工程》附录 C 商业化与发行评审清单
  2. 《移动游戏产品的架构·商业化与发行工程》附录 B 双案例商业化事实表
  3. 《移动游戏产品的架构·商业化与发行工程》附录 A 商业化与发行术语速查