I know we call work “work” for a reason, but a lack of play in the design process can lead to less-than-stellar software.
Most large software companies follow a strict waterfall methodology:
Requirements > Design > Code > Test.
In my experience, designing and coding cannot not be totally separated.
The idea that designers can design something in wireframes or high-fidelity comps completely is just wrong.
The problem for designers is that at most enterprise software companies, the code is too complicated for them to “play” with. There are build scripts, large and complicated databases, xml configuration scripts , etc. Even if the designer is technical enough to grapple with all of it, most of their mental energy and time is devoted to the technology rather than design and creativity.
A solution that I have used is to create a “lite” version of the software that does away all of complex business logic, ant scripts, xml config files, etc. Just a simple database, php/rails/etc and the interface. This gives me a sandbox to play and experiment in, and always allow me to come up with a better design than I had come up with in wireframes. As a side benefit, the server side programmers can grab my html/css directly from my prototype.
As a matter of fact, thats why I think so many small web 2.0 companies come up with such amazing stuff. The designers can actaully get in and code and play. And I bet that what we end up seeing is pretty different from what they started in mind with.
Imagine giving a kid a set of legos and telling him he has to draw it out and then build exactly that. That would be boring for most kids. Kids will start with something in mind, but through imagination and play they come up with something much cooler.
Let the designers play I say.