第一部分 产品 2
第1章 为何创业 2
1.1 科技创业的时代 2
1.2 什么是科技创业公司 2
1.3 为什么应该在创业公司中工作 4
1.3.1 更多的机会 4
1.3.2 更多的所有权 8
1.3.3 更多的乐趣 10
1.4 为什么不应该在创业公司工作 12
1.4.1 创业并不是那么光鲜亮丽 12
1.4.2 创业就是牺牲 14
1.4.3 你可能不会变得富有 15
1.4.4 加入创业公司和自己创业的比较 16
1.5 小结 18
第2章 创业点子 20
2.1 点子从何而来 20
2.1.1 知识 22
2.1.2 点子的产生 24
2.1.3 培养创造力的环境 25
2.1.4 秘密模式 31
2.1.5 点子和执行力 32
2.2 验证 33
2.2.1 速度制胜 34
2.2.2 客户开发 38
2.2.3 验证问题 39
2.3 小结 44
第3章 产品设计 47
3.1 设计 47
3.1.1 设计是迭代的 48
3.1.2 以用户为中心的设计 50
3.1.3 视觉设计 64
3.1.4 视觉设计快速回顾 80
3.2 MVP 82
3.2.1 MVP的类型 83
3.2.2 关注差异性 87
3.2.3 购买MVP 89
3.2.4 创业须从无法规模化的事情做起 91
3.3 小结 92
第4章 数据与营销 94
4.1 数据 94
4.1.1 需要跟踪的指标 96
4.1.2 数据驱动开发 99
4.2 营销 103
4.2.1 口口相传 104
4.2.2 市场推广 109
4.2.3 销售 112
4.2.4 品牌化 114
4.3 小结 116
第二部分 技术 120
第5章 技术栈的选择 120
5.1 关于技术栈的考虑 120
5.2 技术栈的进化 121
5.3 内部实现、购买商业产品,还是使用开源产品 125
5.3.1 内部实现 125
5.3.2 购买商业产品 125
5.3.3 使用开源产品 126
5.3.4 永远不要自己实现的技术 126
5.3.5 结语 127
5.4 选择编程语言 128
5.4.1 编程范式 129
5.4.2 适用问题 131
5.4.3 性能 131
5.4.4 生产效率 131
5.4.5 结语 132
5.5 选择服务器端框架 133
5.5.1 适用问题 134
5.5.2 数据层 134
5.5.3 视图层 135
5.5.4 测试 138
5.5.5 可扩展性 138
5.5.6 部署 139
5.5.7 安全 139
5.5.8 结语 141
5.6 选择数据库 142
5.6.1 关系型数据库 142
5.6.2 NoSQL数据库 144
5.6.3 读取数据 148
5.6.4 写入数据 150
5.6.5 模式 151
5.6.6 可扩展性 153
5.6.7 故障模式 157
5.6.8 成熟度 157
5.6.9 结语 158
5.7 小结 159
第6章 整洁的代码 162
6.1 代码是给人阅读的 162
6.2 代码布局 164
6.3 命名 166
6.3.1 回答所有重要的问题 166
6.3.2 要精确 167
6.3.3 要全面 168
6.3.4 揭示意图 169
6.3.5 遵循约定 170
6.3.6 命名真难 171
6.4 错误处理 171
6.5 不要重复自己 172
6.6 单一职责原则 175
6.7 函数式编程 176
6.7.1 不可变数据 176
6.7.2 高阶函数 179
6.7.3 纯函数 181
6.8 松耦合 184
6.8.1 内部实现依赖性 186
6.8.2 系统依赖性 186
6.8.3 库依赖性 187
6.8.4 全局变量 188
6.9 高内聚 190
6.10 注释 192
6.11 重构 193
6.12 小结 194
第7章 可扩展性 196
7.1 创业的扩展 196
7.2 编码实践的扩展 196
7.2.1 自动化测试 197
7.2.2 代码分离 216
7.2.3 代码评审 220
7.2.4 文档 223
7.3 性能的扩展 227
7.3.1 测量 228
7.3.2 优化 229
7.4 小结 231
第8章 软件交付 234
8.1 完成意味着交付 234
8.2 手工交付:一个恐怖的故事 234
8.3 构建 235
8.3.1 版本控制 236
8.3.2 构建工具 239
8.3.3 持续集成 239
8.4 部署 244
8.4.1 托管 244
8.4.2 配置管理 245
8.4.3 持续交付 248
8.5 监控 250
8.5.1 日志记录 250
8.5.2 指标 253
8.5.3 报警 254
8.6 小结 254
第三部分 团队 258
第9章 创业文化 258
9.1 要行动,不要口号 258
9.2 核心理念 258
9.2.1 使命 259
9.2.2 核心价值 262
9.3 组织设计 263
9.3.1 经理驱动等级结构 263
9.3.2 分布式组织 264
9.4 招聘与晋升 267
9.4.1 彼得原理 267
9.4.2 以管理作为晋升 267
9.5 激励 269
9.5.1 自主权 271
9.5.2 专业能力 272
9.5.3 目标 273
9.6 办公室 274
9.6.1 一个可以和他人一起工作的地方 276
9.6.2 一个可以独处专注工作的地方 276
9.6.3 一个可以放下工作的地方 279
9.6.4 一种可以根据个人需要布置办公室的方法 280
9.7 远程办公 282
9.7.1 优点 282
9.7.2 缺点 283
9.7.3 最佳实践 284
9.8 沟通 285
9.8.1 内部沟通 285
9.8.2 外部沟通 287
9.9 过程 287
9.9.1 采用出色的判断 288
9.9.2 软件方法论 289
9.10 小结 290
第10章 求职之路 292
10.1 寻找创业公司的工作 292
10.1.1 利用人脉 293
10.1.2 发展人脉 294
10.1.3 创建网络身份 295
10.1.4 在线职位搜索 298
10.2 通过面试 298
10.2.1 在白板上编程 298
10.2.2 把思考的过程说出来 298
10.2.3 了解自己 299
10.2.4 了解公司 299
10.2.5 简短的、重复的计算机基础问题 299
10.3 如何对工作机会进行评估和谈判 300
10.3.1 薪水 300
10.3.2 股权 301
10.3.3 福利 307
10.3.4 谈判 307
10.4 小结 309
第11章 招兵买马 311
11.1 创业与人密不可分 311
11.2 招聘什么人 311
11.2.1 合伙人 312
11.2.2 早期员工 313
11.2.3 后期员工 314
11.2.4 10倍能力的开发人员 314
11.2.5 寻找什么 316
11.3 寻找出色的人选 319
11.3.1 推荐 319
11.3.2 雇主品牌化 320
11.3.3 在线搜索 321
11.3.4 专职招聘人员 322
11.3.5 过早优化 322
11.4 面试 324
11.4.1面试过程 325
11.4.2面试问题 325
11.5 录用 330
11.5.1应该提供什么 331
11.5.2跟进和谈判 334
11.6 小结 334
第12章 学习 336
12.1 学习的原理 336
12.1.1 明智地选择技能 337
12.1.2 投入时间去学习 338
12.1.3 让学习成为工作的一部分 339
12.2 学习的技巧 339
12.2.1 研究 339
12.2.2 实现 341
12.2.3 分享 342
12.3 经验教训 344
12.4 小结 348
关于作者 350