Decoupling Design From Engineering
Often when you work as an engineer on a small team, you don't have dedicated designers on staff. How can you deliver beautiful, intuitive software, without designers? Here's a trick that helps me: decoupling my design work from my engineering work.
But first: I love designers! An expert designer is one of the most vital people in an engineering organization. I'm not a designer. Great designers are rare, which is why, for much of my career, I haven't had one.
Decoupling design from engineering means turning off your engineering brain and turning on your designing brain, directing all your power there during an isolated phase of work.
A popular model for brain activity is "left brain" vs. "right brain". The left side of your brain handles the analytical and logical, and the right side handles the creative and emotional. It points to a truth: you can't lay bricks and paint a fresco simultaneously.
But we as engineers try to do both. We're already in the code, we have the CSS and components, so we start designing and engineering at the same time. When I hear about a feature request, my brain starts churning: can I build this? How does it align with the code I already have? I start estimating the work, and like any engineer, I begin to think about how I can do the work faster by cutting scope.
This isn't how designers work. Designers care about velocity, but it's not where they're starting from. When you try to design and build at the same time, you're coupling how something looks to how it works. You're forcing yourself into a box where the sides are your engineering ability and the codebase you have.
But what if you didn't? What if you decoupled the work?
First, you're going to produce better designs. Letting yourself be creative means you're starting outside that box. Maybe you don't keep everything you imagined, but it's still valuable.
Second, it will make you better as an engineer because you're reaching beyond your grasp. You aren't designing just things you know you can build. You're designing the right thing for the task at hand.
So, how do we practice this approach? Here's how I do it.
When I've been tasked to design and build something, I stop coding and walk away from my workstation.
Next, I try to turn on that "right brain" by putting on some music and going somewhere new, like a coffee shop or a desk by a window.
Then, I start designing! With a large notebook, pencil, and eraser, I set a timer and keep drawing until the timer is up. Hand drawing is ideal because everyone can do it, it's fun, it encourages simplicity, and it's easy to start over. When the timer ends, I show the work to someone or wait a while and review it with fresh eyes. The result is consistently better than something I would have built while staring at the code.
Finally, I build my design. No cheating! Resist talking yourself out of a detail you drew because it's hard to build. Honor the design just like a designer would expect.