1. “人不再出生,而是被培养”
既然你还在这里,那我们就继续吧。“我会向你展示兔子洞有多深” © 🐇
让我告诉你产品开发的全过程——我们会从最高的全局层面一直到最底层的代码编写。相信你会有一些有趣的发现…
现代的IT产品不再是自己写出来的,而是被“组装”出来的。它们由库、框架、第三方程序和产品拼凑而成,或者直接使用远程的付费或免费互联网服务 🧩。
现代产品是一个由技术、服务、解决方案和流程组成的动物园。有些工作由人完成,有些自动化,剩下的90%则完全由云端服务在数据中心 ☁️ 里执行。世界已经不一样了。
但你首先会注意到的,是不断的变化。你不再是写程序,而是在它们中做出改变。
2. 不断的变化
你会来到工作岗位,加入一个由20人组成的团队,这个团队已经在这个产品上工作了5年。现在,用户可以使用它的第7个版本。你的任务是对这个产品进行改动。要小一些,以免吓跑现有的活跃用户。
而且这并不容易,因为产品已经在运行。它有客户,他们还在付钱 💰。所以,不能搞砸任何东西。对已在运行的产品进行改动,比新产品要难好几倍。为此,有专门的标准、迁移协议和工具。这里想起一个笑话:
两个老朋友相遇: 一个成了机械师,另一个成了外科医生……他们各自有自己的生活、烦恼和快乐……彼此讲述一切,然后谈到工资。机械师说:“我每月拿30块,非常满意,你呢?”外科医生说:“我大概每台手术赚100K……”。机械师感兴趣了:“奇怪,为什么差这么多?我们不是做一样的事——换零件吗?”外科医生说:“走吧,去车里,启动一下……”。机械师启动汽车,外科医生打开引擎盖对机械师说:“你看到了吗,发动机在工作?换一下!” 😂
即使发生奇迹,你的团队整整一年从零开始写产品,然后才发布,你知道接下来会发生什么吗?如果你的产品成功了,产品所有者会想要继续发展它。发布新版本,添加一些功能。或者至少做几个实验。你知道接下来会发生什么吗?变化 🙈
3. 产品的价值
从现代开发的角度来看,只有已经上线、用户在用的代码才有价值。如果你写的代码存着、运行着,但没人用,那它的价值几乎为零。因此,所有的代码都应该尽早进入production 🚀
你的代码需要经过以下几个阶段:
- ✔️ 你写完了,并确认它能正常工作。
- 🔍 你的TeamLead审查过,并合入Git的主分支。
- 🧪 构建过程中测试显示你没有破坏重要功能。
- 🧩 集成测试显示产品按预期工作。
- 🛡️ 测试人员检查过这段代码,并批准发布。
- 📦 接下来需要打包新版本,并在服务器上发布。
- 🐳 新版本需要打包成Docker Images并发布。
- 🗄️ 可能还需要运行迁移脚本,修改数据库或其他第三方系统。
- 📊 然后在服务器上收集日志,确保一切正常。
- ⏪ 如果出现紧急情况,发现问题,要回滚到之前的版本,恢复数据库的状态,并保证用户在此期间的操作不丢失。
大部分公司都已经解决了这些问题:建立了新流程,招聘了专门人员,制定了安全协议和质量控制标准。公司越大,从写完代码到它变成有价值、能帮助人的时间就越短。
大多数公司,这个过程在两周内完成。但也有一些公司,每周甚至每天都在发布新版本。极少数的,甚至每天多次发布。
写出来的代码一文不值。只有在production上运行的代码才有价值。
GO TO FULL VERSION