设计和编码的价值根源并不需要详细描述,因为它们是软件构建的根本。在软件开发中,可以没有管理、流程、估算、需求开发,但绝对不能没有设计和编码,否则就不会有软件的存在,一切都将无从谈起。需要补充说明的是好的设计编码和坏的设计编码之间的价值差异。
在软件开发中一个非常有意思的现象是一群人对着一堆有一定历史的代码,畏首畏尾,束手无策。这就是垃圾代码的威力,牵涉到商业利益的垃圾代码就更有威力。就像城墙如果足够坚固,古代时攻城只能用人海战术一样。搞定牵涉商业利益的垃圾代码也只能用大量的人月去解决。而事实上,这种惨烈的结局在同等投入下是可以避免的。
与生命不同,软件的生命周期同时取决于两个维度上的力量:一是其商业价值;二是其内部衰败的程度。
在时间轴上,自然规律之下,动物身体的衰败无可避免;但软件内部的衰败却是人祸。持续的、良好的设计和编码,完全可以让软件内部的衰败得以避免。
如前文所提到的,软件是固化的思维这一特质,使思维的特质完全传导到软件之中。而一旦思维自身的规模膨胀,清理凌乱思维的代价甚至会比从头创建还大。
一种表现形式则是,正常情形下10个人月可以完成的项目,只准备了5个人月,结果由于赶工等因素,导致最终花了15个人月。
如果把视角扩宽一点,这种损失的表现形式就更加丰富,比如,新产品时为了压低成本,牺牲了可维护性,但软件自身的生命周期却长达10年,这样开发新产品时的欠账,将在今后的10年里,数以倍计的返还。
减少这类成本,防止代码僵化并逐渐死去,是好的设计和编码的存在价值。这一点往往由于其不与短期商业利益直接发生关联而被忽略。
软件中的各种影响因素的权重
在现实中软件是商业的延续,因此大多时候在软件开发中商业因素比技术因素重要。
而商业也是人的商业,因此大多时候政治因素比商业因素重要。所以最终现实是:政治因素>商业因素>技术因素。通俗一点讲是:强权人物(表现为CEO或其他)的偏好可以压倒市场需要,市场需要可以压倒技术选择。
这很难看,所以很少有人这么说,但这更接近事实真相。
而报复次序则正好反过来。
强人作出的决定如果顺应了商业规律,那么企业会顺风顺水。一旦强人的意志违背了商业规律,那么企业会倒闭。
商业考量自身如果顺应了技术发展趋势,那么会出商业神话。一旦商业考量背离了技术趋势,商业模式就会崩塌(生产力决定生产关系)。
技术因素就像一根不可能折断的弹性棒子,你可以弯曲它获得你想要的形状,但一旦超过一定限度,它就反弹回来,把一切都砸得稀烂。(www.xing528.com)
李开复先生在《世界因你而不同》里面为此提供了一个经典的例子:
Vista项目的开发历史让我们可以清楚的看到“政治”因素是如何对一个项目产生影响。我们来看一下李开复先生讲述的这段历史的概要。
Bill Gates对Vista项目设定目标:
支持新语言C#,所有操作系统软件都改用C#来写。因为C#语言的运行较慢,但是开发速度很快,这样微软不会落后于多人参与的开源Linux操作系统的发展。
开发WinFS(Windows File System),它是新一代档案系统,可以将每一个文件存成数据库。如果WinFS能够成功,慢慢的,全世界的数据就都存到微软的数据库,不但可以击败Oracle、IBM的数据库,也可以防止别的网络公司掌控这些数据。
开发Avalon——新一代显示系统,让用户在浏览器里看到的网站或服务和传统的应用软件感觉一样。如果某网站的服务和用户端软件看起来一样,用户也更难理解网站服务的优点在什么地方。
了解到目标之后,很多总监对目标的难度心存疑虑。事实上这表征着,既定目标和项目自身所蕴含的合理性产生冲突。对这种疑虑,李开复先生的描述如下:
很多总监看到这个设想就倒吸了几口凉气:“技术难度太高了!C#这么慢,怎么能做操作系统啊?数据库不够快啊?怎么可能当做档案系统?”还有些研究芯片的专家常常看着Intel的芯片计划就开始担忧:“一定是微软习惯Intel芯片加速的速度,才这么乐观。但是每18个月芯片速度就快上一倍的日子已经过去了,别说2004年推出了的这些芯片,照这样,2007年Intel的芯片都不够快啊。”
作为影响了一个时代的人,Bill Gates具有无与伦比的影响力,对此李开复先生说:
大部分的团队,就像我的团队一样,说服自己做了Leap of Faith(信仰的飞跃),相信在Gates的督促之下,这3大目标都可以完成。
最终项目陷入困境。对此,李开复先生说:
经过了3年的奋力拼搏,微软视窗团队的工程师们都已经疲惫不堪。但是,Windows Vista的成功却似乎遥遥无期。其实灾难早就在酝酿,因为大家在一开始就知道,这个伟大的计划实现起来,其执行难度实在是太大了。
WinFS团队虽然承诺了Gates提出的3大目标,但是在实际的工作中感到了迷茫。WinFS团队认为他们的任务是“不可能的任务”,但是也不敢告诉Gates。任何一个接触过Vista团队的人都知道,每次把测试版的Vista搭建出来以后,都发现庞大的系统根本无法运行。
这段历史之所以可以被看做是一个政治因素影响项目的例子,其根本原因不在于最初设定的项目目标过高,而在于认识到最初的目标不切实际竟然花了3年时间。
在这个例子中Gates先生的影响力以及对商业因素的考量压倒了一切(技术因素),但最终技术因素报复了一切。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。