Prototyping and Rails
I've been a believer in the power of prototyping to deliver software that clients actually want for almost as long as I've been programming. I learned the hard way that any other technique I (or others I observed) tried just didn't work. Despite the best of intentions and tremendous dedication to the project.
I've tried many different prototyping tools, including Justinmind Prototyper, Balsamiq, Azure, Protoshare, Pidoco--well the list could go on and on. It's not that these aren't all good products; they are. Some of them are very good. But somehow, they didn't quite deliver what I wanted in the way I wanted. My latest attempts are proving more successful.
First, the designer I've been working has fallen in love with InVision. InVision allows designers to upload their work in a variety of formats (Photoshop, Fireworks, and a bunch of thers) and then assign "hot spots" that link one image to another. It creates a very credible simulation. It also allows comments about a particular element on the screen. And because it's on the web (http://www.invisionapp.com), everybody can use it: the client, the designer, moiself. If you haven't tried it yet, you should. InVision is the brainchild of Clark Valberg and Ben Nadel.
There are, undoubtedly, many ways to use InVision. We used it to work through the functionality of the project (a big one) and the flow. But when my client wanted to have something to show to investors, he felt he needed the kind of interactivity that you can only get with real code. Prior to InVision, I started with an HTML prototype. It was slow, yes -- but very effective at letting me deliver software with no surprises. (You know the kind of surprise I mean? Where the client says, "Gee, you know what would be nice is ...")
I've been working extensively with Ruby on Rails for a while now. I try not to turn into a giddy school girl when talking about Rails, but it really has to be experienced for the increase in productivity to be believed. To Rails, I added HAML.
HAML is a mockup language for HTML (and Rails) that cuts the amount of finger-typing code drastically. How drastically? At least in half -- probably more like two-thirds. The combination of Rails, HAML, SASS (for CSS) and CoffeeScript (for JavaScript) allows me to write prototypes with real code with databases hooked up. Because there are so many excellent "gems" (plugin-like thingies) in Rails, a great deal of functionality is just a matter of adding a gem declaration and a couple of lines of code. That's no exaggeration. And, jQuery, of course completes the picture.
The upshot is that I can really quickly create rich, powerful prototypes that remove the major risk from project development. For me, that's been the Holy Grail of web development pretty much since I began.
If you want to supercharge your learning of Rails, I'm giving a class in Rails Jan 26-30. You can find out the details at http://www.halhelms.com/blog/index.cfm/2011/11/15/Ruby-on-Rails-an-Immersive-Introduction. It's expensive but worth it, I think.


I haven't quite gotten the hang of CoffeeScript, but I imagine that's in my future.