Monday, May 18, 2009

Demo Oriented Programming (and Project Jigsaw)

So recently I've been amused watching the OpenJDK Jigsaw project mailing list. Basically there have been a few emails that look like the following:


  • I have this working in this way. It has these flaws. I'd like to ignore them so we can finish in time for JavaONE

  • Sounds good

  • I have an even bigger hack I'd like to introduct temporarily for JavaONE, it will make the demo run smoothly, just don't use Windows or Mac

  • Ok, but make sure you fix it after JavaONE



The fun part about "open" source is that this kind of back-and-forth is just that: open. Things that every company does for demos is now public domain and I can create a link showing one of the conversations.

We've all had times in development where you need to push some hacks through to get something done in time for a demo. The key is to cleanup your code afterwords and make sure that it's ready for production in time. This is where powerpoint can be your friend and your enemy. It is great to *show* people what you mean, but sometimes they need to get the feel of it to really see what it is you want to do. That's why I believe wholeheartily in Demo-Oriented programming. Get something out there that looks enough like the real thing so your users can complain about it. Until you hand them something that they can use, you won't get very articulate/useful feedback.

However, Demo-Oriented Programming relies heavily on the ability to refactor quickly and/or rewrite sections of code. You need a good management chain that will allow you to take the time and fix "demo-related" items in time for actual release. This means you can get good intiial feedback, and continuing good feedback from users. I definitely see Sun as being a great DOP shop.


On a slightly unrelated note, it looks like project-jigsaw is really coming along. I'm still very unsure if packaging modules "natively" (i.e. rpm, deb, etc) is the right approach, but at least some of the underlying "jvm bootstrap" issues appear to be getting some attention. I'm also *very* curious to see what happens with jigsaw + OSGi. I do not see a lot of mention of OSGi from the jigsaw-dev lists, but I see lots of investment in OSGi from other companies, and a lot of strength in the platform. I would not use EJB anymore (by choice) and I believe an OSGi runtime + carefully chosen libraries will be my new "enterprise application server stack". Hopefully jigsaw will not slow down the momentum of the OSGi community. I'm very much looking forward to being able to choose which orthogonal, cross-cutting "concerns" I want in my application. Perhaps just transactions and scalability? Maybe I like terracotta. Maybe I need something more custom?