第一 用户通过网络获得信息。
在刚开始,网络上面的信息比较少,那么用户只需要记住几个站点就可以了。而随着网络内容的增加,信息量越来越大,用户获得所需要的信息,成本越来越高。这时,技术的变革,搜索引擎的出现,提高了用户获得信息的效率,这算的上是,使用更好的算法,来提高执行效率。而当面临搜索更多个人信息时,需求产生了变化,这时传统的搜索引擎就不行了。一种新的技术随之出现,人肉搜索。
第二 在系统部署方面。
在信息化时代刚开始时,企业所用的软件还较小,起始的费用比较低,维护成本也很低,因此一般都是把软件买回来,自己安装和维护。但当用户使用的软件系统越来越大时,初期成本和维护成本越来越高,企业负荷越来越大,这时需要优化。云计算适时而出,其将用户所使用的软件集中起来,放在中心维护,而用户则根据软件使用付费。这个模式和Linux下进程非常相像,在Linux中进程的代码段内存是共享的,数据段等则每个进程一个。我们可以把企业类比成一个个进程,云计算类比成将各个进程公用的代码段,以此来提高效率。
第三 为什么软件性能会越来越低。
在刚开始设计完成,程序的性能也许是好的,但当需求的不断增加,代码的改动,程序的性能却越来越慢。这里面有几个原因,需求变化时,我们不是去考虑软件在逻辑上怎么更加合理,而是怎么在现有代码上改动更加方便,这就导致代码随着需求变化,程序的逻辑越来越不合理,产生了偏移。
另外,当需求变化时,有些case已经不再会运行到了,这时我们往往不会去删除相应的逻辑,因为其有可能导致错误。对于需求变化,我们更愿意往上面加东西,而不是减东西。这就导致了代码越来越庞大,而且很多都是无用的代码。软件如此,我们日常中的流程同样如此。比如说bug管理系统,有一天某个领导要求统计一下数据,这时他要求程序在录入bug时加上一个字段。可过了一段时间,领导不在要这个数据了,往往程序员还在继续多输入这么一个字段。
第四, 效率的提高,也许并不需要很大的工作量。
还是以bug管理来讲,一般我们都是通过网站的方式来管理bug的,每个程序员都需要不断的去网站上刷新,来看是否有新的bug。这样一个程序员对于bug的快速响应,就要看其刷新bug系统页面的频率了。如果其半天查询一次,那么其有可能浪费半天的时间。可是如果我们让bug网站该程序员一有bug,就给该程序员发送一封邮件的话,假设用户的邮件是实时开着的,并且每个5分钟查询一下邮箱,那么我们就可以确保程序员对于bug的响应时间缩短到5分钟。网站上加个邮件功能很容易,但其却很有可能会大规模的提高效率。效率的提高与优化所花费的effor并不一定成正比,关键是你找对地方。