夜雨聆风学习资料网

ARTICLE · 1094585

软件是人类少数永远可以不完成的产品

软件是人类少数永远可以不完成的产品

发现一个有趣的问题。

这两周我几乎倾尽全部的业余时间,尝试开发软件。

从最开始的每天迭代10版到现在争取每天迭代1版,目前已经迭代到了59版。

我发现,软件是人类少数永远可以不完成的产品。

举个例子,比如一本书出版了,基本就定型了。一栋楼盖完了,也不会每周更新一次。

一把椅子、一台冰箱、一辆汽车,交付的那一刻,通常意味着它已经完成。

但是,软件不是这样。

它可以永远停留在路上,永远在迭代。

今天修一个 Bug,明天增加一个功能,下个月重构一次底层架构,几年之后,它甚至可能已经完全变成另一种东西。

所以软件才需要版本号。其实我一直对软件的版本号也心存疑惑,只是没有追问。

为什么有的版本号里有“beta”,而有的没有?

再比如,1.4.2 这种看起来普通的数字,到底意味什么呢?有时候会按顺序,有时候又不按顺序。

以及为什么 2.0 不一定比 1.9 更强,等等问题。

其实,版本号不是分数。它记录的是变化。

软件开发里,最常见、最规范的一套版本命名方式,就是 Semantic Versioning,语义化版本,简称 SemVer。

标准格式:MAJOR.MINOR.PATCH

例如:1.4.2

MAJOR:是主版本号,发生不兼容的大改动时升级

MINOR:次版本号,新增功能但保持兼容时升级

PATCH:修订号,修 Bug、小优化、不新增重大能力时升级

Beta 一般表示:核心功能基本成立,可以给真实用户使用,但仍然可能有明显 Bug 或调整。

其实更有意思的是 1.0。

很多人会觉得,1.0 意味着终于做完了。

恰恰相反。对软件来说,1.0 通常只是第一次正式宣告。

这个东西已经完整到,可以让别人开始依赖它了。

所以 0.9 和 1.0 之间,并不是只差 0.1。

中间隔着的是一条承诺线。从这一刻开始,你不再只是做一个实验。

你开始维护兼容性,修复问题,照顾旧用户,为过去做出的设计负责。

软件最特别的地方就在这里。

它几乎没有真正意义上的完成。只有一次又一次发布。

版本号不仅仅在记录软件。

它记录的是一个产品如何一边被使用,一边继续长大,想一个不断生长的生命体。

也同样记录着开发者的每一个灵感、脑洞、彷徨、质疑以及莫名其妙的信念。

上一次我觉得自己真正活着的刹那是在今年元旦,我立志要卡半夜0点前发稿,无论写不写的出来,一定要发。

而最近这段时间,我每天都在职场人、开发者的角色里无缝切换,每天都有无数新的问题。但我活的很开心。

相关学习资料