How often as a developer, when you ask about a design for new functionality, you hear, “Just make it look good”. Perhaps you were working directly with a client saying, “We don't need a design, we know what we want, we can jump straight to implementation - that'd be faster”. It's not always the case that you will have a designer to help you or a solid design system to refer to. In these situations, every developer that works directly on any user interface would benefit from having some design skills.
This is the first article out of 4-part series called Design for Developers. We will cover why having a basic understanding of design is important and how we, developers, can leverage such skills. I used to work as a designer and developer, directly with individual clients and brands, and the experience that I've gained helps me to this day write better software. I hope it will be useful for you as well!
Points of contact
Let's start with why this skill set might be valuable. While writing code is probably the main activity of any developer, it's not something that can be isolated. Having solid coding skills is essential, but you need more to create quality software. You might need writing skills to properly document your feature. Communication skills will come in handy when you need to explain part of the codebase to a coworker or deeply understand business context presented by your manager. It's good to be able to jump into a testing mindset to check if the code works as expected.
You don't have to be a writer to write documentation or product owner to understand the business need but you need these skills to effectively incorporate other people's expertise into your work. That said, if you're working with user interfaces, understanding design is something that will inevitably contribute to the overall quality of the feature you produce.
To communicate effectively, we have to use a common language. That's why having a good understanding of design might help you ask better questions, explain your reasoning to the clients or collaborate with designers more effectively. On top of that, it's often impossible or simply a huge waste of time to create visual design for all states of your application, so understanding design principles will help you make your own decisions and better approach things such as dynamic content.
Last but not least, we're responsible for the software we create. Working code is one area, but test coverage, maintainability, scalability, performance or user experience are also things that contribute to the overall picture. We're often the ones who know the product best. In that vein, talking about the design, making suggestions or pointing our inconsistencies should be something we're not afraid to do. Knowing design will help us to do it well.
You get that it's important to understand design. Awesome, so what's next then? Where do I start? The next article will tackle design principles such as contract, balance or emphasis. Then we will cover tools and resources that might be useful along the way and finally talk about how you can use all of what you've learned even if you're not creating visual design yourself.
Thanks for reading and stay tuned!