I never recognized this as a problem until I got to management. You get a set of requirements, you write the code, you release it. One of my first tasks as a manager was to replace a solid UI developer. Since we had a fair amount of graphic design work and no graphic designers on staff I thought I could kill 2 birds with one stone and find someone with a solid javascript/jQuery/CSS background as well as some HCI and Photoshop skills. After 40 or so resumes I realized that this person does not exist. There’s a good reason for this – graphic designers should not have to worry about implementation. The best way to get an innovative UI is to work with a graphic designer andtake a ‘top-down’ approach to building your application, then hand it off to developers to code.
I learned this lesson the hard way when Apple announced the iPad. It was decided by our COO that we would push to get an app out on the iPad at launch, which gave us 60 days from the announcement. It was to be a revised version of our current iPhone applications with some added functionality. Because of the tight timeline, I hired a graphic design contractor and sat locked in a room with him for several days banging out a design. I was constantly tying his hands due to the tight development timeline and we eventually designed something that was slightly more styled than our current app, styled for the larger screen and used lots of new functionality provided by the iPad SDK. With two weeks to go I really felt like we could get this thing banged out for the iPad launch and as a semi-new manager, I felt that I could assert myself as someone who gets things done on a tight timeline.
My excitement however was dampened after we shared our mockups with upper management. It was deemed “Slightly more than a straight port of our current iPhone app that could be misconstrued as our best effort on an innovative iPad experience.” The decision was made to take a step back and do more graphic design work up front, sliding the schedule out by a month. This was hugely disappointing as I went from a guy who “gets things done” to a guy who creates bad UIs.
Here’s what I missed:
Share the designs early and often – I truly believe in the top-down approach, but missed this key factor. You need to get feedback quickly before you go off implementing something that everyone hates. In this case, I was so focused on what we *could* do with the tight timeline, I missed what we wanted to do. UI design is one of those things everyone has an opinion about and most of these opinions are terrible. I’ve found some ways to share design and get feedback that are more effective than others, but I’ll save that for another post.
Every project needs an owner – This owner should (most of the time) not be somebody in technology. Developers are constrained by what is possible and most elegant. I’m still constantly thinking about how a particular screen would be developed instead of the product vision. What I’ve learned to do is sit down with the project owner and UI designer during the creative process and keep my mouth shut about length of development and technical challenges unless it’s absolutely necessary. If you’re interested in being creative and innovative, you need someone who is unrestrained by the technical challenges. My part is to keep them within a reasonable bound.
We follow the Agile (SCRUM) process and I’ve found that writing our user stories gets you the best blend of innovative UIs and fast development. There may be a few EPIC stories that can cause missed deadlines due to the less restricted creative process and it’s up to the product owner to decide whether to revisit those designs or push the schedule right.