是什么让开发Version1.0如此困难?

本文原作者miguelcarrasco,来源于
http://www.realsoftwaredevelopment.com/what-makes-version-10-software-hard/。

  我经常为开发软件的1.0版有多困难感到困扰。开发软件本身就是一件困难的事情,其原因不是在一篇博客里所能详尽的,但是为什么写V1.0如此之困难呢?我可以为你提供一个线索:这和开发商无关,而在于这是一个创新的过程。
  事实上很多时候已经推出的V1.0都会有问题,这时你会觉得非常痛苦。相似的例子是新型号汽车推出后,经常会有大量召回的现象。有创新的地方,就有bug。你和你优秀的团队会花几个月、几年甚至更长的时间来测试软件包,但还是不能代替实际应用中对软件的测试。
  有些时候,你也可以推出非常好的V1.0,但这是准时推出的吗?

   V1.0意味着创新

  开发V1.0是在创造从未有过的东西,是创新!这也是我认为软件行业是最好的行业的原因。如果它是已经被推出过的软件,别再读本文了,快去买它,使用它,定制它,你应该为其他人已经历过编写V1.0的痛苦而感到欣慰。如果你认为还有些东西没有包含在那软件里面,那么你仍处于创新的阶段,你仍然在攀登珠穆朗玛峰,因为你想到了别人没有想到应该编入软件的东西,这是很了不起的。你将一直创新!

   V1.0意味着反复尝试

  不管是什么软件开发商或公司到你的办公室说,“如果我们用AGILE/CMMI,我们就可以准时推出你需要的软件”,不要相信他们!虽然这些话在某种意义上是有道理的,但这与你在签那些从来没有人从头读到尾的琐碎文件前同意以某一价格买车是类似的。

  问题是虽然所有的理论是伟大的,但无法确定软件准备完毕的日期。爱迪生能确定发明灯泡的日期吗?怀特兄弟能确定制造第一架飞机的日期吗?我可能有一点夸张,但我希望你能理解我的要点。我的要点是什么?

   不可能确定V1.0的推出日期。

  我不在乎你做了多少前期分析,如特征驱动开发等,你就是无法确定V1.0的推出日期。为什么?因为在最后一天,谁也不知道V1.0是什么,应该是什么。

   V1.0是能如用户的期望那样运行的软件。

  以你遵循AGILE为例,你每周都向用户推出新版本,没有出什么差错,少有反复,并且一直在构建最后的版本。你已经找到了每个特征,每个使用案例,每个参与者等等。你是正确的吗?错了。为什么?想想你的信息是从哪来的。是从用户那收集到的。你的用户界面团队和商业分析员通过用户的反馈总结信息,并决定如何把这些信息提供给软件编写者和开发商。

  当软件开始开发以及新版本推出时,用户开始意识到其存在的问题。项目的股东会觉得,“这很可怕,并不是我们想要的”,于是开始去做一些改变,给你制定了项目的时间表。你肯定可以告诉用户,你会把他们需要的特征放在V1.1或V1.5或其他版本里,但事实是,如果用户所需的特征被遗漏,如果软件并不如你想的那样运行,你真的推出了能如用户所期望的那样运行的V1吗?用户会感到激动吗?应该不会。

  总之,编写V1就像是在做梦,是创造前所未有的东西,是乐趣、创新与过程,是为自我设定目标,然后努力超越目标。不幸的是,在现实生活中,有时你可以在预定日期达到目标,有时却晚了,有时你也可以提前。即使你制定了最好的规划,你也不能控制那些独立变量,这是为什么生活如此令人激动的原因,也是为什么编写软件令人兴奋的原因。

----------以下是译者的话-----------
英文不行,译得不太好,只有大概的意思。

除了原作者所说了,还有一个重要的影响V1.0发布的原因就是软件的周边工作,一个团队为第一次为一个软件产品准备各种文字说明、各种用户手册、印刷品、在线演示、制作安装包等周边工作时会因为没有经验和样本而花费很长的时间。

我们的产品ZCMS在2007年的时候就已经具备了大部分功能了,界面也和现在没有太大的差别,但反反复复地修改,易用性、稳定性、性能上不段地改进,但直到09年才提供网上下载,建立演示站,过程坎坷远超出我们的预计。欢迎大家访问http://demo.zving.com。

你可能感兴趣的:(工作,生活,制造,软件测试)