今天上完了这学期最后一节课,在 Big Data 的课上,老师提到了一个挺有意思的话题:在大数据处理的虚拟机设计方面,系统/软件频繁更新是否有必要?
他说,我们现在授课使用的虚拟机 BigVM 是 Ubuntu 16.xx 版本(具体记不清了),前段时间 Ubuntu 发布了新版本,有一些新的功能(然而对于我们用户操作的核心功能并没有什么改变),如果升级了新的系统,反而会影响之前一些代码的运行,而且很难去找到所有的问题,一个个去做相应的修改。
他的观点是:解决方案的设计者应该考虑稳定期(比如 5 年,10 年),不必要的更新尽量避免,否则会造成很大的人力资源浪费(因为要去解决新系统带来的一系列问题)。
顺着这个话题,我也对于“软件更新的必要性“进行了一些思考。
我在做软件开发的时候,脑海中时不时会冒出以下想法:
这个软件还能改的更好;
我还要再加一些新功能;
现在这个版本有些 bug 要改……
总之,改到最后提交作业的那天,也不会觉得自己的作业达到了“改无可改,绝对完美”的境地。
对于个人的小作业尚且如此,如果是一个逻辑比较复杂的商业软件,那么势必要随着时间的推移不断的去做更新,打补丁,开发新功能……
于是开发者要不停的学习新知识,充电,把知识应用到实际开发的产品中;市场部要不断的去宣传这个软件的新功能,保留用户;用户要频繁的去更新软件,适应相关的修改……
有错吗?
当然没错。
这就是世界发展的必然,因为我们总能找到现状的问题,并且不断去追求更好的未来。
作为开发者,我们很难说服自己,现在的软件已经完美了,不需要再改了(如果真的这样,一大批人要集体失业了)。
可是作为用户来说,一个软件的核心功能才是最重要的,很多时候,更新与否,我们真的感觉不到太大的变化,有些时候,反而会造成不必要的麻烦。
比如:有些 SQL 的用户,习惯使用 terminal 直接去做处理,就完全不用理会 SQL developer 等软件的更新带来的影响。
而对于企业级的用户来说,很多时候,也都是选择相对稳定的系统版本,能不升级尽量不升,一方面是出于版本稳定性的考虑(新版刚发布的时候往往会有一些问题),另一方面也是节约成本(可能涉及到:IT 部门的人力资源,软件升级的相关费用)。
总体来说,我认为人们精益求精的做法促进了科技的进步和世界的发展。
开发者应该努力用技术满足用户的需求;
用户应该更理性的去选择是否要立刻更新软件;
最重要的是,利用现有资源来提供解决方案的设计者,需要考虑到资源更新带来的风险,尽可能保证解决方法有一个较长的稳定期。
PS: 这个话题比较大,也没有所谓的正确答案,在此抛砖引玉,欢迎大家谈谈自己的看法。