【原文地址】 Podcasts and Prototyping
【原文发表日期】 Sunday, November 19, 2006 11:37 PM
Ron Jacobs 最近发布了他的 ARCast.net 节目里采访我的播客(podcast),该节目是个面向架构师的免费podcast系列。在这一期的podcast里,我们讨论了几个大家也许会发现比较有趣的主题:
- .NET,特别是ASP.NET后面的一些历史
- 原型开发(prototyping)的重要性以及如何不把它搞砸了
- 培养成功的架构师所需的“软技能(soft skills)”的重要性
原型开发的讨论,我想,对外面的许多项目都有很多的相关性。这是个我真的建议所有的开发人员都应该花更多的时间去做的最佳实践。因为做得好的话,确实允许你实验和很快地尝试很多主意和概念性的东西,可以帮助你在你的项目里在创新方面有显著的提高。
原型开发关键的东西在于,保证你绝对不把原型代码变形转化成生产代码(production code)。别试着对原型代码整理(clean up)或提炼(refine)使之成为生产级别的代码。这类“整理(clean up)”往往走得不够远,其结果是,使得项目的起始基础很差。把“快捷而质量不高(quick and dirty)”的代码导入到代码库里就象是把一个坏苹果扔进一筐好苹果里一样,你很容易会以code rot(代码腐烂)在代码库里蔓延而告终。
从空白的新项目开始总归是最好的,然后把原型的概念,而不是原型的代码引入到项目里来。在前面花额外的时间确保新的生产代码是从100%的生产质量起步的,别试着通过重用原型里的代码来节省几天的时间。你会发现,在一个原型开发练习之后,从头开始编写“真正的”生产代码会比你预期的要快很多,因为那些关键想法在你的脑子里已经是有形有肉了(fleshed out),因此你对实现( implementation)应该如何组织会有一个极其深刻的理解。代码质量的标准也显著地提高了。
我最近在实现一个想法时就遇上了这样的事情,这个想法是在过去几个周末的业余时间里,我一直在用原型开发来实验的很多想法中的一个。我有些非常复杂的调度逻辑我一直在编写,并且随着我试验各种功能和方法时,这个逻辑也一直在变。我知道,一旦对其中一些编程模型方面的想法试验完毕之后,我应该能够将它整理得很干净的,但它一直不干净,直到昨晚,我腾出了几个小时来从头编写新的实现时,我才看到我能在那个迭代开发出来的原型之上得到多么显著的改进。我猜想,大多数人,如果训练有素,并且确定在使用原型方法完成迭代开发/从中学到东西之后有意识地扔掉原型代码的话,都是能看到类似的编码改进或质量的结果的。
想完整收听这个podcast的话 ,请访问Ron的这个podcast连接。
希望本文对你有所帮助,
Scott
附注:我刚看到Paul Glavich 在这里贴出了另一个采访我的podcast 。这第二个podcast 节目的内容包括,ASP.NET AJAX (即 Atlas), WPF/e,Windows Workflow/Cardspace,BLINQ 和Script#,以及 Visual Studio 2005 SP1。也一定要去看一下!