Design for Developers: Part 1 - Introduction

I help product teams build quality software and lead engineering efforts. Currently working at OpenSpace as a Senior Software Engineer.
Search for a command to run...

I help product teams build quality software and lead engineering efforts. Currently working at OpenSpace as a Senior Software Engineer.
No comments yet. Be the first to comment.
Why having a basic understanding of design is important and how we, developers, can leverage design skills.
As with every topic, to truly understand it, the best way is to start with the basics. There's no single, unified list of designed principles, although the lists that do exist have at least some elements in common. This is the second article out of 4...
Last month I built a regression-testing harness for a single library upgrade — React Query v4 → v5 in one of the front-end apps I'm working on. It's about 800 lines of code across four packages. It ru

Images are heavy. When you're building offline support, storing them alongside your application data is tempting — and eventually painful. I hit this wall building support for image attachments. The n

Deciding how to approach offline support can be challenging, especially once you move beyond the basics. So far, I focused on persisting data that was already fetched as a result of user actions. This

Software engineering is changing faster than most of us can comfortably adapt to. The capabilities of LLM models change almost monthly. New tools appear every week. Advice that felt solid three months

This is the eighth post in my series about offline support in web applications and the fifth focused on the foreground queue. In the previous article, we covered error handling and retry strategies. A

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!
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!