In this article, I’d like to show you that by learning about technical limitations & development aspects, you’ll be able to include a valuable additional layer to your design work & to collaborate with developers more effectively.
Why learning development fundamentals is important?
If you are a UX designer (interaction designer, product designer, service designer, UI designer — your label doesn’t really matter), most probably you are working on digital products or services. In other words, you are creating software products.
According to my experience, this is an often overlooked fact: you, as a designer, contribute to a software development process. And without knowing what’s under the hood, you won’t be able to make informed design decisions.
Historically the design work was done by the developers of a software product. Involving designers effectively has been a great challenge. On the one hand, it’s hard to fully integrate design activities, and keep design and development in sync. On the other hand, next to the product development process aspect, you can think about this integration on a lower level: each participant of a software development process should understand what they are building. And this is one of the reasons why the infamous “Should designers learn to code?” question has been asked so many times recently.
I believe that this is not a good question. Here are some better ones:
- Should designers understand the costs, risks, trade-offs of a design decision?
- Should designers know how developers work, what challenges they face, what their main tasks are?
Both designers and developers have their core competencies and responsibilities. You work together, you have the same goals, you’re dedicated to the same project, you collaborate as much as possible. However, you need to respect each others knowledge and expertise.
Design should not be turned into design by committee, and designers should not give instructions to developers on how to write their code.
I believe that the most important thing is establishing a mutual trust: developers should know that you understand the risks, costs, trade-offs of a design decision, so that you won’t ask unreasonable things, and you should feel that they won’t try to avoid solving more complex problems.
So instead of learning how to code, you should
- understand development fundamentals and
- be in close collaboration with developers.
Understanding the main technical constraints, limitations and the most important development aspects is beneficial for any designers, whether you are a freelancer or an employee working at a small startup, at an agency or at a large organization.
Learning how to collaborate effectively is beneficial for designers who work in a team or with other professionals regularly. And this is how these two goals are closely related: understanding technical constraints and development aspects will help you improve the way you work together with developers.
So let’s take a closer look at these 2 areas!
As a result of understanding technical constraints and development aspects, you’ll
- be able to produce design work that can be implemented effectively,
- generate less waste in the process (or no waste at all),
- know how user needs and business goals can be translated in a way that it is technically feasible.
Here are some examples of design decisions you can’t make without knowing about development aspects:
- How to choose an appropriate third party / existing solution, reusable component (e.g. a map component or a payment solution)
- How to define logical relationships inside an app, e.g. “a user can have maximum 1 profile picture” is a rule you should define
- How to represent real world objects & concepts inside a digital app (e.g. how to define data types, what data modeling is)
- How to store data, e.g. you should tell what groups of data will be read or modified together and how often
- How to create a web application in a way that it provides good user experience even in case of a slower network connection (performance aspects)
This UX Knowledge Base Sketch lists out some more development aspects you should know about, use it as a starting point: