You can’t have a great user experience without clean code.
…so says Andrew Mager, web ninja at Ning and all-around awesome guy.
At approximately 160 people, Ning is larger than most start-ups, but it still isn’t a Big Company. It’s never felt that way to me, even though I am embarrassingly bad at remembering names (but not as bad as one engineer who turned to me in the elevator on a random afternoon and said, “Who ARE you?”). I digress—the point, though, is that as with most start-ups, everyone wears a multitude of hats.
Design, when properly broken down, encompasses an extraordinary number of skills and roles: interaction design, user experience design, information architecture, user interface design, visual design, graphic design, illustration, and even more if you consider that many of these aforementioned areas can be further broken down.
The small but mighty Ning design team not only fills almost all of the “proper” design roles, but we also do front-end coding (HTML, CSS, JS, PHP). The design team doesn’t hire anyone who cannot code, and our interview process always contains relevant coding exercises and problems. This is not to say that we expect a visual designer to find a loop in a linked list, but we want them to be well-versed in the medium that they are working in.
There’s always the idea that a designer who is unfamiliar with web development will create fanciful and impossible designs. Less commonly, there’s also the suspicion that a designer who is familiar with web development will create something boring because they “obey wrongly perceived constraints” (Mathis).
To the first idea, I can confidently say that with 99% of the designs I’ve encountered, there’s some way to implement it for the web. Drop shadows and rounded corners are child’s play; animation and sound is trickier but doable. The exception to this, of course, are those delightful, viral Flash movies about lions and tigers, but perhaps HTML5 will rectify that. For that 1%, then, I would ask why the designer is creating something so unique and complex: Would the casual web user actually understand what’s going on? It seems like the 1% is in a sea of confusing or bad user experiences.
Then the real question, really, is not if it’s possible, but rather, if we should do it. Typekit is all the rage lately, but one of the reasons it’s not on Ning is due to performance. Steve Souders has a highly informative post (as are all his posts) about @font-face; the obvious conclusion for a platform that has over 40 million users is a big, resounding no.
There’s no chance of iteration here, either. What is the designer planning to propose? That we figure out some other way to have awesome typography? So, we’d have to go work for Microsoft, Mozilla, and Apple to change their browsers to handle typography another way, and then bug the W3C about “fixing” @font-face. Yeah…I’ll get right on that.
We need our designers to understand these issues, and I would actually argue that most (visual) designers do, given that they are web users like you or me. Find me a seasoned visual designer who hasn’t been told “no” by an engineer, and I’ll give you a cookie.
So now let’s tackle the second point—the super creative designer who is now constrained by the “HTML box” (Mathis). Again, I can speak confidently when I say that I have never felt unduly constrained by the limitations of front-end coding.
If anything, it allows me to be more creative—like MacGyver, but on the web (I have a 5″ string, an empty matchbox, and a parakeet…how do I escape this one?). One of my greatest joys, actually, is implementing something with HTML/CSS/JS that is typically only done in Flash.
There is no designer in the world who works without any constraints (and makes a living). Yes, I have to keep the code in mind. But there are also legal and business constraints. Sure, I’d love to not have to ask for birthdays from a user experience perspective, but we’re required by law.
I actually would argue that if a designer doesn’t code at all, they’re more likely to be constrained. If a previous unscrupulous engineer tells them no for something quite simple, doesn’t that discourage them from suggesting it again? And if said designer only has a little experience with code, the code they produce isn’t going to be up to production standards. Frank Lloyd Wright’s buildings are notoriously leaky, and he was an architect, not an engineer.
So we need designers who can code and code well. Yes, it’s harder to find candidates this way, but I think by being vertically integrated, it’s much more efficient the end. I only have myself to struggle with when it comes to implementation; I know when 5px is not enough padding, and I fix it myself.
In the end, it makes for a more rewarding result. It’s like baking a cake AND eating it!