Complete Developer Podcast

Complete Developer Podcast


Design Basics

July 16, 2020

Design tends to be kind of difficult for software developers. Like marketing, writing, public speaking, music, or art in general, design seems to be an area that a lot of developers find intimidating. There is a general perception that design people are naturally artistic, better at reading the somewhat ambiguous rules of design, or have their finger on the pulse of industry best practices in a way that other people can’t grasp. While these things can be at least partially true, there are a lot of things that even a non-artistic developer can do that will result in better designs.
If you are a developer who is somewhat intimidated by design, that is no reason to despair. While an increasing number of companies are hiring designers and using design systems to build up their user interfaces, in many companies developers still have to design things. If nothing else, using good rules of design can allow your system to grow for long enough that a “real designer” can show up and fix any deficiencies. Best of all, if you follow these design considerations, you’ll often find that rather than immediately hating your work, that users will actually give you good feedback that makes you better at designing.
While you may not ever become a truly excellent designer, there is a lot to be said for a developer that can use basic design principles to produce a decent UI. Following the considerations outlined in this episode will make your user interfaces much better, while not requiring an undue amount of work on your part. Essentially this is the 20% of the work that will get you 80% of the results. These simple principles will make you a far better designer than many of the developers with whom you interact. And who knows? Once you get some basic principles down, you may find that you enjoy it.

Episode Breakdown

Why is this important?
There is not always a designer, and there is not always a good designer. Your team may not communicate very well with design, and doing decent work will help facilitate that. The design mindset is more user-oriented, rather than code oriented, but it will improve the quality of the code powering the design.

Why devs find design tough.
We tend to focus on WHAT, rather than WHY or HOW someone uses our software. We tend to be perfectionists, which inhibits our ability to make “good enough” designs to let us get moving. When we try to learn design, we tend to focus too much on design theory, rather than on the creation of useful feedback loops.

Basic Principles
UX elements in your system should be predictable and consistent. Your design should try to drive users to the pit of success and help them avoid errors. The language on screens should be sufficient, short and descriptive. Your screens should have a logical flow that matches the way the user thinks about the problem. You should use appropriate and consistent user interface elements based on the data that you hope to collect and how the user will interact with the system.

Color considerations
Picking appropriate colors is hard for many developers, especially because of the way we think about colors. Use HSL instead of RGB when picking colors. It makes it easier to find similar colors than the other schemes do. Consider color blindness and use software to test what your application looks like to people with this issue. Consider adding multiple color schemes or customization if your target market might demand it (like developers do with dark mode.)

Typography considerations
Your design should include a visual hierarchy, with the relative importance of elements denoted by their prominence on the screen. Font size, color, italics, etc. will help here a lot, as will the placement of the items on the screen. Things front and center are usually considered more imp...