1. “人不再是出生的,而是被培育出来的”
好吧,既然你还在,那我们就继续。“而且我要让你看看这只兔子洞有多深” © 🐇
接下来我来讲讲产品开发是如何进行的——我们会从最高的宏观层面一路走到最底层——写代码。我想你会有不少有趣的发现…
现代的 IT 产品已经不是“从零写出来”的,而是被创造/拼装出来的。它们由各类库、框架、第三方程序与产品拼装而成,甚至直接使用远程的付费或免费的互联网服务 🧩。
现代产品就是一个由技术、服务、方案和流程构成的“动物园”。一部分工作由人完成,一部分已自动化,而其余的90%干脆由数据中心里的云服务完成 ☁️。世界早已不同以往。
但你首先会注意到的是——持续的变化。你不再是写程序,你在不断对它们做改动。
2. 持续的变化
你入职后会加入一个有20人的团队,这个团队已经在该产品上做了5年。目前用户能用到的是第7版。而你的任务就是在这个产品上做改动。改动要小,免得吓跑现有的活跃用户。
这并不容易,因为产品已经在运行了。它有客户,而且他们在付费 💰。所以绝不能把东西搞崩。向一个已在运行的产品引入改动,要比在全新产品上改动难上好几倍。为此我们有专门的标准、迁移协议和工具。让我想起了一个笑话:
两个老朋友见面:一个成了修车工,另一个成了外科医生……各自有各自的生活、烦恼和快乐……聊着聊着就谈到工资。修车工说:“我一个月拿3万,挺满意的,你呢?” 心脏外科医生说:“我一台手术大概10万……” 修车工来了兴趣:“奇怪,为什么差这么多?看起来我们干的不是一回事吗——都是换零件。” 医生说:“走,去车边,发动一下。” 修车工发动了车,医生掀开引擎盖,对修车工说:“看见没,发动机在转?换一个!” 😂
即便奇迹发生,你们的团队从零写了一整年,直到发布之后才让用户用上。你知道接下来会怎样吗?如果产品成功了,产品负责人就会想继续发展它:发布新版本、加点功能,或者至少做几个实验。你知道随之而来的是什么吗?变化 🙈
3. 产品的价值
从现代开发的视角看,只有已经发布、且被用户实际使用的功能和代码才有价值。如果你写了代码,它被存放在某处、甚至运行着,但没有人用,那它的价值接近于零。因此,所有代码都应尽早进入生产环境 🚀
你的代码需要经历如下阶段:
- ✔️ 你写完并确认它能正常工作。
- 🔍 你的 Team Lead 进行代码评审并将其合并到 Git 的主分支。
- 🧪 构建时的测试表明你没有破坏任何关键功能。
- 🧩 集成测试显示产品按预期工作。
- 🛡️ 测试人员验证了这段代码并给出发布通过。
- 📦 然后需要打包产品的新版本并在服务器上发布。
- 🐳 需要将新版本打成 Docker 镜像并发布.
- 🗄️ 可能还要运行迁移脚本,对数据库和/或其他外部系统做变更。
- 📊 随后需要收集服务器上的日志,以确认一切按预期运行。
- ⏪ 如果发生异常、你把什么地方搞破了,就需要回滚构建,恢复数据库到先前状态,同时还不能丢失用户在不稳定版本期间所做的操作。
在多数公司,这些环节如今都有完善的解决方案:流程搭建起来了,有专门的人负责,并引入了安全协议和质量控制标准。公司越大,从写出代码到它进入生产并转化为价值——开始为用户带来收益——所需的时间就越短。
在大多数公司,代码走完这条路径大约需要两周。不过也有公司每周发布,甚至每天发布。还有少数“奇才”——一天发布好几次。
写出来的代码并不值钱。只有在生产环境中运行的代码才创造价值。
GO TO FULL VERSION