writing by steve smith

Designing in the Build

I don't know how to design software without building it. I said it. Maybe that means my design skills need to be better. Sure, I'll start with sketches or mockups. But very quickly, I'll move into the build.

Sometimes that might be a quick prototype in HTML/CSS. Maybe it's a prototype in JavaScript and Electron. Maybe it's a new Rails app just to try out an idea. Maybe it's building the full feature into the production code. But whatever it is, I've got to get it off pixels and into code. No amount of designing an interface can replace interfacing with your design.

Best intentions

No amount of designing an interface can replace interfacing with your design.

It's obvious why I'd want to do this. As previously stated, my design skills could be better. As it turns out, many of my initial ideas are inadequate. Things I think will work just don't feel right. What I thought would make sense is actually confusing. But I'd never know that by staring at my Sketch file.

Having that instant feedback cycle of that didn't work. What about this? Nope, This? Almost. This? Yes, that's it! is so valuable to the design process. So you could sit and wait for somebody else to build it for you. You can tell them to redo it a few times until you get it just right. Or (while you're waiting) you could just learn to do it yourself.

But (insert skill here) is hard

Bullshit. People do it every day. Designing software requires a knowledge of workflows, a systematic approach to simplifying the complex, and a deep understanding of the interface paradigms that software provides us. Coding is the same thing. You may never reach the skill level of that engineer or designer you have on a pedestal, but that's not the point. The point is making great software, and knowing how to design and code will help you do that better. It just will.

In the interest of full disclosure, I should admit that I started my career as a developer. I knew coding long before I knew design. I think the world of software would be made infinitely better if developers learned product design than the reverse. But until that day, we all could get a little better at something.

Don't let your ego get in the way of your own progress.

I learned visual design over years. I'm still learning it. I'm no artist. But trial and error goes a long way, and eventually got the hang of it. It's not impossible. Learning Ruby for a designer can be just as uncomfortable as learning how to balance typography for a developer. Get uncomfortable. Get better.

The struggle is real

Believe me, when you start learning a new thing (be that CoffeeScript or visual design) you're going to be terrible at it. And you will be for a while. You're going to make mistakes. You're going to build things that you'll be ashamed of later. And that's perfect. Don't let your ego get in the way of your own progress. Start learning something new now, stick with it, and you'll be pretty good at it in a year. Maybe not great. Probably not hirable for that particular skill alone.

But you'll be better at building software.

May 22, 2015