Joel Spolksy argues that the Iceberg secret is not that 80% of a project is core, difficult code, and 20% is lipstick, but that it is the fact that end users don't know this. Corolary 2 to this principle is that if you show someone a user interface that is 90% done, they will think the project is 90% done.
People who aren't programmers are just looking at the screen and seeing some pixels. And if the pixels look like they make up a program which does something, they think "oh, gosh, how much harder could it be to make it actually work?"
The big risk here is that if you mock up the UI first, presumably so you can get some conversations going with the customer, then everybody's going to think you're almost done. And then when you spend the next year working "under the covers," so to speak, nobody will really see what you're doing and they'll think it's nothing.
I've worked on prototypes of software for various projects, one was even demo-ed in front of some folks at the white house. I've always striven to make the interface look like what it might look like in the finished software. The problem is, the Iceberg Rule kicks in and your audience starts to assume that you don't have that much farther to go in terms of creating a finished product.
You could create a beautiful, ajax interface to a database of turnip varieties. Client assumes you're basically done, right? But what happens when it turns out there are thousands of turnip varieties (I'm making this up, I don't actually know) and that the research to create the aforementioned database would cost millions of dollars?
There is a dissonance between what the prototype promises, and what you actually might be able to deliver on.
So I guess, in some respects, this argues for crappy looking prototypes. I accept that there is a value to building prototypes and working through user interface issues with clients. I accept that a clickable prototype represents a better artifact to build from than a 400 page specification. (You probably want both though.)
If you think about it, you can make an argument that, while it only takes a day to come up with some snazzy css for your prototype to make it look all that much better, it is not worth the dissonance between where you actually are in development and where the client (or your boss) thinks you are. ** With the caveat that sometimes if your boss wants you to just fake it, you might want to find a better job.
One tool that I really like for working in this vein is Balsamiq. This tool creates wireframe style mockups, using terrible comic sans style fonts and sketchy lines. There is no danger that it is going to be misinterpreted for a finished product.
Todd Zaki Warfel wrote a really good book on prototyping,
but he kind of danced around this issue. He argues that you might be able to take resources from a prototype and use them in a production product (and you might not.) To do this though, it implies that you are creating something that is useable in a product, both from the core, quality, integrity standpoint, and from the look and feel standpoint.
Maybe a productive way to think about this is too recursively apply the Iceberg Principle to the mock up. Spend your time building the 80% back end to the interface, the jQuery, the MVC, the interactions and handlers and code. However, consciously avoid taking it the extra 20% and making it look slick. This is sort of counter intuitive, but what you end up if you do that is real UI work that you can poke and prod as part of the development process, but your boss won't confuse with a finished product.
Build the mockup with an eye towards style-ability, IE coherent css classes and design, but just sort of go through and dog it up a little bit when it comes time to present it to the client.
Of course the catch-22 is that your client may not ever accept your prototypes if they don't look finished. So you are basically screwed either way... A potential approach to this problem is to create the prototypes and put them in front of users (IE through a service like usertesting.com) and produce some research from that testing. It's a good process in and of itself, and it is also ammo you can bring to a client meeting to help move them and the project in the right direction.
I think prototyping is a valuable tool, but I've been burned one too many times by the Iceberg Principle. Clients just think the end product is done when they see a coherent user interface. Maybe we can apply a little bit of strategy and get a lot of the benefit from the prototyping process without the dissonance between expectations and appearance.