I am a designer. You can see some of my designs on Dribble. But I started out as a developer; you can see my work on Github. Back then I was lucky enough to work with some great designers. Their designs looked nice and always met our users’ needs.
But these designs were always really hard to implement. I didn’t have the experience then to understand the real problem, so instead I told myself: “if I was a designer I could always make easily realized designs, because I know programming”.
When I got my opportunity to prove it, I was determined to always keep implementation in mind. My designs would be easy to build, dammit.
Instead, I learned that my time as a developer would come in handy in a much different way.
My first project as a designer was a website redesign for a rather large client. I started with a wireframe for their page of industry award winners (it was a big site). When I sat back and looked at my design I thought “well, isn’t this plain”? Seriously, it was boring, difficult to navigate, not at all what a good design should be.
What the hell do I do now? Maybe if I let go of the implementation just a little bit I could come up with something better. Besides, I thought, I can always think through how to build it out after I mock it up.
That's when the past came back and smacked me in the face: the real problem of my experience with those designers. We couldn’t question constraints because we didn’t identify the risks until it was too late. With enough planning, couldn’t we push back a deadline or change some technical architecture to make a feature reality? But the designers couldn’t spend all of their time designing within development constraints. If they did that, we’d never know what is possible.
From then on I naturally found myself going through phases of sketching and gut-checking against constraints, followed by more sketching then more gut-checking. And when I’m out of my programming element I take my sketches to a real developer to help me confirm what I’m thinking. At no time do I wear both designer and developer hats at once.
So, next time you’re designing think about when it might be a good time to show it to a developer. The sooner you can identify the risks of breaking set-in-stone constraints the sooner you can take a step back and rethink your designs if necessary. If you wait until you’re done with Photoshop then it’s already too late.