This afternoon I was contemplating the idea of “throw away” applications and whether that was a Good Thing. One of my clients is just training new developers who are more versed in desktop computing applications (like VB, Delphi, etc.) to migrate them to Java/J2EE. My suggestion to them was to plan to throw away their first project because even if the requirements were well known, even the smartest developers will get the Java/J2EE design and development wrong. After thinking more about it, I think we will probably regularly throw things away during the first few iterations (instead of throwing away the first production version). Although the idea of the first version of an app being throw-away is quite old (comes from Brooks’ essay from a while back) I think that with proper Agile programming techniques we can throw away iterations of a spiral development effort instead of throwing away an entire effort. Given the availability of so many options and choices in the J2EE community it seems there’s no right or wrong to do almost anything. So, if the first version of the app is successfully installed and the user experience is good, there’s no need to throw anything away.