Introduction
SINCE I CAN remember, I’ve always had a special love for technology and design. In fact, my earliest childhood drawings weren’t made with crayon and paper but with my Grandmother’s Apple II. Throughout my career I’ve struggled with a bit of an identity crisis—Am I a designer? Am I a developer? Could I be both? In college I had a hell of a time trying to sign up for courses that allowed me to get a dual degree in Computer Science and Fine Arts. For the next four years people would ask, “Why are you wasting your time getting a Fine Arts degree? Physics is a much better compliment to computer science.” Or “Computer Science? What are you going to do with that? You should be thinking about getting experience at a design studio.”
Out of college I was hired into a long-established software development company. In many ways, I was responsible for defining my own role within the company, educating people about design and how it fit into to their projects. Initially, there was some hesitancy and even animosity towards the presence of design in a well-oiled development process. But over time it became clear that having a design competency in the tech field gave us a unique advantage.
And here I am, writing a book about the intersection of design and software. I would have never guessed…Reminiscing about my story always a reminds me how just a few short years ago the coexistence of design and technology was a relatively foreign concept. And now we’ve come full circle, UI and UX design are first class citizens in the software world.
For over a decade I’ve been helping engineers design and produce software in a variety of industries—healthcare, auto, finance, retail, law, entertainment, insurance, marketing, education, consumer products, gaming, sports, food and beverage, communications, media, security and more. Working closely with developers for so long I’ve gleaned some unique insights on how to approach design in a software setting. Over time I’ve compiled a collection of design frameworks, tactics, and heuristics that have ultimately become my design process for creating software. This process is the premise for the book.
The best desktop, mobile, or web apps all share one thing in common— they have stellar user experiences. In other words, they look and function beautifully. Yet, it’s not always clear how to go from those napkin sketches to a fully polished app.
If you didn’t go to design school, or even if you did, designing software can be intimidating. I’ve worked with many developers and designers that had great ideas for applications but weren’t sure where to start. Within the last few years, software and interface design has emerged as a unique discipline comprised of a variety of fields and professions. This interdisciplinary nature warrants its own design process; one different from those found in traditional design and computer science.
That’s why I wrote this book.
I think great software consists of three key ingredients:
• Cognitive Psychology—Anticipating what your users need and empowering them where they are weak.
• Visual Aesthetics—People want to be engaged by their apps. Great looking software lends itself to great working software.
• Engineering Excellence—Committing to building software that is intuitive. Even if that means going beyond what comes “out of the box”.
Design for Software connects the dots between these elements with a process that approaches the mechanics of design with real world techniques.
Interface design is often equated to knowing design tools like Photoshop and Illustrator—creating gradients, drop shadows, and the quintessential glass themed buttons. That is one type of design. Design for Software is something else, a method for producing applications that look great and people want to use.
I like to think of the design in this book as a “developer’s kind of design”— practical, efficient and high in utility. Best of all, this book shows you how to overcome the “hard parts” of software design with no formal design training. Once learned, you’ll have acquired design knowledge that transcends the screen and can be used in any job—designer, developer, product manager, and even CEO.
I believe that anyone can learn to design great software. But the learning requires some guidance, and that guidance is provided throughout this book. It won’t make you a rock star designer overnight, but with the tools in this text you’ll be well on your way.
Who Should Read this Book?
In short, this book is for anyone who has an appetite for creating digital products that help make people’s lives easier. More specifically, the content in this book best serves the creative-minded technologist and the tech-savvy designer.
The bar for great applications and well-designed software is getting higher every day. And many folks with a background in software development are looking to enhance their skillset with design competency. However, most developers I know recoil at the concept of “learning design” mostly because it tends to be abstract and unnecessarily theoretical. Design for Software attempts to parse the “theory” of design into practical, consumable techniques that can be applied directly to application development.
Similarly, if you have a background in design, chances are school didn’t teach you how to design user interfaces. And while you might have a leg-up on your developer counterparts, designing for digital applications is its own beast. This book goes well beyond core principles of visual design and explores design thinking and interaction techniques. Organizing application flows, creating wireframes, and building prototypes are just some of the ways you’ll learn to quickly express your ideas and turn them into great apps.
Finally, many of you are completely new to the field, while some of you are seasoned practitioners. I’ve tried to meet the needs of both groups. While I believe this book serves as a helpful introduction, I hope that those of you with some experience under your belts take away some fresh perspectives and techniques.
How This Book Is Structured
This book is divided into four parts and 12 chapters. The breakdown of each section is shown in Figure 1. I’ve organized the book this way because it loosely maps to the design process I used for projects.
Figure 1: I organized the book this way because it loosely maps to the design process I use for approaching projects.
We typically start every project with user research, finding inspiration and competitive analysis (Chapter 1, 2). Once we’ve gained some key insights and established our target audience we move on to “design thinking.” This is where the brunt of the application gets created. We start by sketching out ideas (Chapter 3) and organizing content into something that start to resemble an app (Chapter 4). Once we have a good handle on all of the moving parts we create wireframes that describe the app’s overall flow and interaction (Chapter 5). At this point we also build prototypes to demonstrate interactivity and uncover any obvious ergonomic flaws (Chapter 6). With the foundation of the app established we move into the visual design portion of the process. We explore different layouts, color palettes and typography treatments to create a look and feel that is appropriate for the app (Chapter 7, 8, 9). Then we add some personality and character with motion. This creates the “glue” between screens and adds an element of delight (Chapter 10). Once we’ve arrived at a well-manicured design we put together another prototype, which allows us to envision the product’s look and feel before we’ve written much code.
The last section of the book is focused on interaction design. In practice, the concepts in this section should be peppered throughout the entire design process. However, I’ve intentionally placed this section at the end because it contains advanced topics best learned once you’ve nailed down the basics. We explore how context and environment can influence and application’s design (Chapter 11). And finally, the last chapter is a collection of my favorite design patterns that you can leverage and extend for your own projects (Chapter 12).
The Companion Web Site
I’ve created a companion site for the book that features code samples, design templates, and a handful of useful resources that coincide with various chapters and themes within the text. Get the goods at http://designforsoftware.com
, or from the book's companion website at www.wiley.com/go/designforsoftware
.