When we talk about developers contributing to UX design, many people are quick to point out that developers have a different mindset. Developers are often reduced to stereotypes of an overweight maths nerd who is busy hacking behind a computer screen with no social skills. While this may be true for some developers, there are many developers who also have an understanding of good design principles.
Code Has “Design”
Many people believe designers are people born with some special genes and only they can design and come up with design ideas. Contrary to that, design is actually a skill that anybody can learn. According to Cambridge Dictionary of American English “Design” is defined as the creation of a plan or convention for the construction of an object or a system (as in architectural blueprints, engineering drawings, business processes, circuit diagrams and sewing patterns).
If we look at this definition we can see that design is more about problem-solving rather than producing art. Whenever a developer is writing code they are actually planning/designing the system in which different elements of code (i.e objects in OOP programming) will be interacting with each other. They have to plan and imagine all possible problems and create solutions that are easily understood by machines. This means they already are designing, but they are expressing it in code. Hence, it would be safe to say the developers are designers of code. If they are given a chance they can easily learn to express their ideas visually, just like they learned to express them in code.
Good Code Needs Aesthetic Sense
In order to write good code, developers have to adopt aesthetics.A good developer doesn’t write code just for the sake of making something work. Their code also has to be to be easily understood by other developers. Just like when evaluating the quality of any other product, code which is aesthetically pleasing ( along with other attributes) is deemed better by other developers. Developers are also judged by how “beautiful” their code is. As Ruben Verborgh puts it “Programmers are functional artists.However, we’re not the kind of artists that create purely for beauty. We are functional artists. We have a functional task as well as the duty to write beautiful code because it is effective and thus lasts.”
Code Design Principles and UX Design Principles
Writing beautiful code like UX design requires simultaneously satisfying goals that often conflict e.g:
We need to have an understanding of a problem well enough and design a solution which is as simple as possible to explain to a machine and to other developers who are like users of our code. As Allen Kent &James G. William puts it “ beautiful program is like a beautiful theorem: it does the job elegantly and has a simple and perspicuous structure”
Code readability is one of the first things we learn as developers. It is also referred by some as the – The first law of programming: code is read more than written. Developers spend the majority of their time editing other people’s code. By making our code readable, other developers can find their way to places they need to improve just like good UX design helps users navigate through the system. Code readability also requires the code to be structured well and has many similarities to Information Architecture in UX Design.
Code readability principles
- Locality: Keeping related stuff together
- Consistency: Using familiar patterns
- Verbosity: When in doubt, explain. Be as obvious as possible
Code design principles encourage developers to write readable code; written for humans and not just for machines. In other words, we are improving the user experience of our code (i.e. other developers) by following good design principles. This means good developers should easily be able to transfer this understanding to apply to UX design.
Python’s Design Philosophy
Python is a programming language which was designed to be a highly readable language. Guido van Rossum, the creator of Python, created it aiming towards simplicity and generality in the design of its syntax. Tim Peters adapted the guiding principles for Python’s design philosophy in what he calls the “Zen of Python.”
One can easily adapt these aphorisms and apply it to UX design.
Zen of UX Design Adapted from Zen of Python
- Creating a beautiful product is better than an ugly one.
- Every component of our product should be visible explicitly and separately
Design should be simple rather than complex
Choose flat over deep website hierarchies. Content is more discoverable when it’s not buried under multiple intervening layers.
- Sparse is better than dense. White space is design’s best friend! Not every single space needs to be filled with color, shapes or words.
- Design for readability. Content is king and your users should have a good reading experience
- As much as possible don’t break usability principles
- Only break usability principles in extreme case, one in which it is causing problems for the user
- Write good error messages
- Unless not required by design
- Everything should be easily understood by the user. The user should not need to guess.
- There should be one and preferably only one obvious way do something. Limit the number of choices given to a user
- If the design is hard to explain it’s a bad idea and vice versa
- Now is better than never although never is often better than right now!
This is not an exhaustive list, but it still covers the some essential concepts of UX Design. As evident from above developers are making design decisions on code level already and have the creativity and ability required to solve UX design problems.
Creating a digital product can be compared to a building a house where UI is like the outward appearance of a house. A user can recognize beauty in a UI, just like they can appreciate a beautiful house. But perhaps even more importantly, the real beauty in the design in both houses and programs are the things that are invisible to the uninitiated, but important nonetheless.Moreover, good user experience needs good performance which ultimately needs good code design. Also, there are many similarities between code designing and UX design and developer can easily transfer their understanding to UX design. Admittedly, a trained designer will probably be more effective at finding design solutions especially when it comes to problems related to visual design but UX is more than UI and good design is more about problem-solving than creating art – everyone including developers can contribute to it.