It’s one thing to create software that works. It’s something else to make software that people love. This difference is where many software projects run into problems.
Coding a UI and designing a UI require different skills and a different mindset. UI design is hard for most developers, not some developers, just as writing code is hard for most designers, not some designers.
Coding is hard. The design is hard too. Few people do both well. Good UI designers rarely write code. They may not even know how, yet they are still good designers. So why do good developers feel responsible for UI design?
Knowing more about UI design will make you a better developer, but that doesn’t mean you should be responsible for UI design. The reverse is true for designers: knowing how to write code will make them better designers, but that doesn’t mean they should be responsible for coding the UI.
Today people speak of UX design more than UI design. This is because while users want usable interfaces, what they really want is great experiences. The phrase “UI design” is still relevant, but it’s part of the larger and more holistic concept of UX design.
Good UX is hard because it involves two vastly different skills:
Similarly, a developer must focus on understanding the machine first. Understanding people is important but secondary. What UX designers do is flip this around, people first, the machine second. Making great software involves both views, the associate skillsets, and great collaboration.
Another way to look at this is the value that these two groups—developers and designers—create as they go about making the digital future.
There are three pieces of advice for developers who want to get better at UX design:
1. Recognize design as a separate skill. Coding and design are separate but related. Interface design is not a subset of coding. It’s not a superset either. It requires a different mindset, knowledge base, and set of skills.
2. Learn about design. At least a little bit. Try to learn a few of the design concepts and techniques from the long list below. If you are more ambitious, read some books, attend a conference, take a class, or even get a degree. There are lots of ways to learn about design. Joel Spolky’s book on UI design is a good primer for developers. You can read it in a few hours and learn quite a bit. The book is an introduction to the topic, and somewhat dated, but still useful. It’s like reading a book about programming that explains variables and basic flow control but doesn’t talk about methods, exceptions, or database connections. There’s a lot more to UX than what Spolsky covers and that’s where designers come into the picture.
3. Work with designers. People who do this work go by various titles. Today, the most common title is User Experience Designer (UXD). This is an umbrella term that includes Information Architecture (IA), Interaction Design (IxD), and Usability Engineering, among others. Regardless of title, these people think about design as much as you think about code. You can learn a lot from them, and they from you. Work with them however you can. Find people with these skills in your company. Maybe you need to hire someone. Or go to some conferences, attend webinars, and spend time in the UX world.
There are many things to learn about UX. Don’t try to learn everything. If you knew everything below you could call yourself user experience designer. Then you would no longer be a developer.
Start with things near the top of the list. Focus on specific concepts and skills. Then move down and branch out. If you really like this stuff, consider it as a career path. While many developers eventually move into management, UX design is an increasingly viable option. Designers with a strong understanding of how the software works are valuable.
Learn fundamental design concepts. You should know about affordances, visibility, feedback, mappings, Fitt’s law, poka-yokes, and more. The two books to start with are The Design of Everyday Things (Donald Norman) and Universal Principles of Design (Lidwell, Holden, & Butler).
Learn about user experience. This is the umbrella term for many user-centred perspectives on designing software, systems, and experiences. The classic primer here is The Elements of User Experience (Jesse James Garrett, 2nd Edition) and A Project Guide to UX Design (Russ Unger & Carolyn Chandler, 2nd edition). The latter covers the full scope of UX design work in a way that helps you apply UX techniques to an entire project.
Learn to sketch designs. Sketching is about rapidly and cheaply exploring design options. It is about ideation, not art. It is also much faster than coding a digital prototype and fits well with any agile methodology. The key text here is Sketching User Experience: Getting the Design Right and the Right Design(Bill Buxton) and The companion workbook which has many practical methods and techniques for sketching interfaces and experiences. For a good primer on how and why designers sketch, watch the presentation How to be a UX team of One by Leah Buley.
Learn paper prototyping. This is that fastest and most agile way to iteratively develop and evaluate an interface before you write code. Different from sketching and usability testing, though closely related to both. The definitive book here is Paper Prototyping (Carolyn Snyder). You can also get a good DVD on this from the Nielsen Norman Group.
Learn usability testing. Discount testing is easy and effective. But for many UIs, usability is hard to do well. You can learn the basics quickly, but good usability people are invaluable. If you want a book, the classic is The Handbook of Usability Testing (Jeffrey Rubin & Dana Chisnell, 2nd edition). It’s thorough and practical. The most well-known starter book on this topic is Don’t Make Me Think: A Common Sense Approach to Web Usability (Steve Krug, 2nd edition). It is a good starting point.
Learn about interface design patterns. Yes, there are pattern libraries for interfaces and they’re damned useful. For websites, read The Design of Sites (Van Duyne, et al, 2nd Ed) although it’s from 2006 and a bit dated. For desktop applications, read Designing interfaces (Jennifer Tidwell, 2nd edition). For web applications, go with Designing Web Interfaces: Principles and Patterns for Rich Interactions (Bill Scott & Theresa Neil). Lastly, for mobile apps, try Mobile Design Pattern Gallery (Theresa Neil).
Learn about information architecture. The main book here is Information Architecture for the World Wide Web (Louis Rosenfeld & Peter Morville, 3rd edition). A good starter book is Information Architecture: Blueprints for the Web (Christina Wodtke & Austin Govella, 2nd edition).
Learn about interaction design. The main book here is About Face 3: The Essentials of Interaction Design (Alan Cooper, et al, 3rd Edition). A good starter book — thinner and less overwhelming — is Designing for interaction(Dan Saffer, 2nd Edition).
Learn fundamentals of graphic design. Graphic design is not UX design or UI design, but concepts from graphic design can improve an interface. Graphic design introduces design principles for the visual presentation of information, such as proximity, alignment, and small multiples. I recommend reading The non-designer’s design book (Robin Williams, 3rd edition) and then, if you want to go further, the classic book Envisioning Information (Edward Tufte)
Learn to do user research. Where usability tests an interface, user research tries to model users and their tasks through personas, scenarios, user journeys, and other documents. It’s about understanding users and what they do, then using that to inform the design instead of guessing. Some techniques are interviews, surveys, diary studies, and cart sorting. Good books on this are Observing the User Experience (Elizabeth Goodman, Mike Kuniavsky, & Andrew Moed, 2nd Edition) and Understanding Your Users (Courage & Baxter).
Learn to do field research. Watching people in the lab under artificial conditions helps (i.e., usability), but there is nothing like watching people use your code in context: their home, their office, or wherever they use it. Goes by various names, including ethnography, field studies, and contextual inquiry. Here is a good primer on field research. Two of the better-known books here are Rapid Contextual Design (Karen Holtzblatt et al) and User and task analysis for interface design (Hackos & Redish).
Attend workshops and webinars. You can take workshops, webinars, and online courses. This is far from a comprehensive list, but you might try the UIE virtual seminars, the virtual seminar series from Rosenfeld Media, and the workshop training from Cooper. Conferences are also a great place to find workshops.
Neil ran his first SAP transformation programme in his early twenties. He spent the next 16 years working both client side and for various consultancies running numerous SAP programmes. After successfully completing over 15 full lifecycles he took a senior leadership/board position and his work moved onto creating the same success for others.