System engineering should be integral to the design of your applications

28.Dec.09
by Dirk Knemeyer

Not much surprises me anymore. After more than a decade spent providing boutique services, followed by the last 6 or so years strictly in software, I’ve really earned the increase in grey hairs on my face and head. However, one thing I continue to find absolutely baffling is the way companies and designers often attempt to design their software from the bottom-up, screen-by-agonizing-screen. That approach is categorically wrong. Any design or redesign must start from the systemic level, from the top-down.

What does that mean? Consider an application that most of us are familiar with, iTunes. If Apple came to me and asked me to simply redesign the home page for Videos inside of iTunes, without regard for the rest of the product, they would be setting up me—and the redesign effort itself—for failure. The Videos home page is one screen amidst a veritable tsunami of information. Anything we do to that page will impact the user experience of the entire product. To redesign that screen, large and important as it may be, in isolation is an inherent fail. By changing it without changing the many pages around and relying on it, we would simply be buggering up the overall user interface, no matter how much better that spot redesign might be.

Looking at that same design challenge from a different perspective, allowing only the single page to be redesigned greatly constrains our capacity to make more meaningful change. As a responsible designer, I am going to be focused on not making the page too different from the other pages around it, in an attempt not to break the overall experience. In the process I will be passing over or intentionally ignoring the best and most meaningful opportunities to redesign and improve the product. Rather than being a “redesign,” such a focused task simply becomes an exercise in putting lipstick on the proverbial pig.

A successful design or redesign effort requires a system engineering approach. It is imperative that the people designing and building your application be given the necessary time and space to look at it in totality, create a thoughtful and vetted architecture, then use that architecture to craft your application as a well-engineered system. Assuming competent designers and engineers, this will significantly upgrade the user experience in general and usability in particular. When people use software they quickly adapt to it’s structure and process, and then begin anticipating what they can do from one screen to another. Inconsistency or incompleteness shatters their confidence in and mental model around the product, dramatically increasing user anxiety while dragging down usability and user satisfaction.

System engineering makes sure all of the various bits of content, features and functionality are identified, considered, and organized before the design begins. It makes sure that a coherent organization scheme and design pattern is implemented that supports real-world contexts for use. It carefully balances the myriad considerations necessary to get the most out of the application that you need.

Yes, it may seem to take longer up front with this approach, as planning and blueprinting precede shiny looking screens. But the benefits are resonant, culminating in an application that works better, looks better, and will not need extra rework or special casing unless or until you expand the product further. Over the lifecycle of that application you will not just save time and money, but you will get it right the first time and provide users with a tool that they enjoy and appreciate, not curse at and wrestle with. It just makes sense, and it applies for software of all sizes and dimensions. If you don’t care enough about your application to take this approach in the first place, why bother creating or redesigning your application at all?

Topics: Design, Blog, system+design