Design Technology at the Intersection of Art and Science
A look at software architecture and engineering principles as applied to creative design, product development, and marketing perspectives

Playing off of the obvious (and sometimes absurd) stereotypes of business and technology leaders inside product and services organizations and where they often direct their focus and priorities, our CMO and CTO characters* walk into a bar and order the same cocktail. While the CTO might be taking account of the ingredient ratios, mixing sequence, and transfer method from shaker to glass as the bartender executes the order, the CMO likely awaits the final appeal of color, aroma, taste, and most importantly, effect after delivery (especially if there is resource negotiation to be done with said CTO!). Regardless, both appreciate having a quality result in hand and getting down to business.
Especially important in the practice of software innovation and realization, the effort to translate and align different language, concepts, and perspectives among architecture, engineering, product development, and marketing disciplines towards a common user experience goal requires a person or team with hybrid or blended skills across design and technology along with a framework on which both objective and subjective requirements can be generated, analyzed, executed on, and measured.
Quite a few years ago I ran across a catchy acronym-driven framework discussed in Microsoft technical literature describing a checklist of non-functional goals tied to operational requirements within a solution architecture. "PASSMADE" represented the more quantitative aspects of performance, availability, scalability, security, manageability, availability, deployability, and extensibility that were commonly addressed in the background through best practices and software design patterns but never elevated to first class citizen status alongside qualitative attributes of beauty, form, function, usability, emotional connection, and marketability. The original premise of this framework was that if a designed solution architecture successfully accounted for each of these areas then the resulting product or service would have a much lower overall risk of operational failure. That sounded sexy to me at the time.
After several years of immersion into frog and the multi-disciplinary design process (aka "creative chaos"), I began to adapt these software architecture principles for broader use in the context of using emerging technologies to drive opportunities for innovation at both the UI/presentation layer in software and the overall UX. For each item in the checklist, I developed a working set of definitions and patterns to help translate considerations back and forth across the boundary between visual and interaction design and software architecture and engineering. This cheat sheet became especially helpful when leading collaborative workshops between designers and technologists (whether frog experts or a client's engineering team) early in the creative process where the deconstruction and inventory of a proposed design solution needed parallel technical exploration and validation. The end result is a framework I often use to not only avoid architectural flaws and reduce operational risks, but to also generate higher potential for a quality user experience and success in the marketplace.
I'll be dedicating a series of future articles to each aspect of the framework in detail from a cross-discipline perspective, but the high-level summary is covered here.
Performance
Software architects and engineers usually think of performance in quantitative terms such as transactions per second (data services), page load times (web sites), frame rates (rich media), or number of triangles (3D graphics). They can instrument the software, measure the results, and retune the code. In contrast, visual and interaction designers typically look at performance through a more qualitative lens such as responsiveness to physical actions, smoothness of transitions, and crispness in rendering. They can see and interact with the software to instinctively know where it feels right or if something is off from what they had envisioned.
How the collaboration unfolds between these two disciplines is where either the process breaks down and a less than ideal user experience is delivered or the magic happens. In one abstract example, a designer may ask for something to "move faster" or "respond quicker" and a software engineer not well-versed in creative thinking may simply lower timing values in an attempt to literally speed things up. A performance threshold may be reached where the available hardware or software simply cannot "go any faster" to meet the design intent and frames get dropped or the UI freezes. A "creative technologist" that is able to see both sides would likely find and offer up a solution which exchanges raw speed in time for slightly lower resolution to achieve the desired effect while maintaining an acceptable level of fidelity. Most often the designer or the end user cannot detect the subtle change and both the experience and the underlying performance of the software is preserved.
Representing the business or marketing perspective in the example above, if not for a creative technology solution, an additional negative outcome might have been a call for more advanced and costly hardware in the product. The attempt to satisfy the performance needs of the design could result in greater cost to the business in the form of lower profit margins to maintain a desired price point in the market.
I'll go into greater detail in an upcoming article (first in a series) on the topic of Performance from a cross-discipline perspective, but some example topic areas on techniques and patterns where both perceived and actual performance can be maintained or increased in the face of constrained hardware, limited software platform capabilities, or variable network speed and stability include:




Availability
The standard definitions and metrics for availability involve the concepts of fault tolerance and functional uptime affectionately referred to as "five nines" (99.[99999]%). Software architects and engineers often utilize redundancy and clustering patterns in distributed architectures to help reduce or eliminate single points of failure to ensure greater availability. There are of course scenarios where downtime simply cannot be avoided, most often due to issues beyond the control of the software itself such as the network on which the software runs (online or web applications, for example). In many cases, there are creative techniques that can be applied which help negotiate either planned or unexpected downtime inside the user experience or offer alternate paths of functionality to temporarily steer around a functional dead end. In other situations, there are applications which can intentionally be used in offline mode and automatically perform data synchronization once they become reconnected to services. Actions performed by the user in offline mode can be accepted and queued up for processing by the software which offers up the perception of being online and available. Making disconnected or partially unavailable states feel connected results in a more rewarding user experience and functional workflow in the software.
Scalability
Classically defined as the ability to achieve increased system capacity (such as more simultaneous transactions or concurrent user sessions) by adding additional hardware and software resources, the concept of scalability can also be applied in a design-oriented way as the ability to deliver richer or larger sets of functionality within the user experience over time. Somewhat distinct from extensibility in this context, there are scenarios where a UI design and supporting infrastructure needs the affordance for working with larger and wider variations within its datasets as time goes along without necessarily changing the fundamental aspects of the interaction model. A creative technologist will help a design team understand the challenge and opportunities in building a UI framework that can scale for the future.
Security
Routinely prioritized in the background behind design concerns, security is actually a very important area of consideration in the overall user experience. From a cross-discipline perspective, security is as much about the ease of use and unobtrusiveness of necessary authentication and authorization measures as it is about maintaining strong data and identity integrity while limiting exposure of attack surfaces within the software. Striking the right balance between the two concerns is a critical step in the collaborative design process. Additionally, there are scenarios where the software should intentionally portray a strong sense of security as part of the experience or the brand, such as when dealing with sensitive financial or medical data. Users should feel safe but never burdened. Security isn't black or white, not whether you have it or you don't, but rather how it is creatively applied and sensitively inserted into the experience.
Manageability
Called maintainability in the original PASSMADE framework I found a while back, I updated it to Manageability to provide a more comprehensive view on the attributes of ease of operation, transparent monitoring, and optimized data provisioning, reporting, and troubleshooting workflows. It is one thing to maintain a system that has already achieved operational equilibrium (humming along), but is another to efficiently triage and resolve issues when its starts to show cracks. The user experience angle comes into play within the topic of manageability if the software has the perception of being a house of cards to either the user when dealing with settings or preferences or the support personnel dealing with administrative tasks. How the software is instrumented by the software architect or engineer and how that data is presented in the experience can make the difference in a result that feels solid and stable (or at least easy to fix!).
Accessibility
Often linked (and rightly so) to UI/presentation layer best practices or regulated standards (Section 508 in the U.S., for example) for direct and efficient access to the software by users with disabilities, the broader topic is about universal access for as many users as possible regardless of a particular constraint or obstacle. The form factor of the device being used in connection with the software or the language and cultural specifics of the user are equal in weight to physical limitations in determining the accessibility of the experience. It is a critical task in early design and technology requirements gathering to determine what the accessibility goals are of the experience to be delivered. For example, although an English-only Web 2.0-style e-commerce site optimized for desktop browsers may not be accessible to a Spanish-reading mobile device user, there may not be a defined business requirement to support that particular user profile in the first place. It is always good to get these questions of globalization, target devices, and standard accessibility compliance on the table as early as possible in the creative process.
Deployability
Usually addressed in software architecture as a background secondary concern related to provisioning or installation best practices, especially for IT staff working the front lines in managing hardware and software in the field, I have often expanded this topic to include user considerations such as the out-of-box experience, the update/upgrade process, and even the external distribution model of the software itself. For example, the quality, efficiency, and usability of a one-time-use install wizard as the first impression a user gets of the software is just as important as the hero screen or workflow in which the majority of time is spent.
Extensibility
Bring up this topic with a software architect or engineer and the conversation will likely lead into "gang of four" software design patterns and OOP (object-oriented programming) methodologies where the focus is on building software which is loosely coupled and flexible to handle changing requirements, new features, and unexpected usage models or extensions. Talk about it in the context of flexible and modular UI design systems with a visual or interaction designer and the discussion will center on framework aspects like component archetypes, reusable behaviors, and the overall design language of the software. Have a similar discussion with a product development manager or marketing professional and the focus will be on the ease and efficiency (minimal cost) at which additional perceived or real value can be bolted on to the experience through enhancements in future releases. In each case, the fundamental goal in delivering extensible software is to avoid delivering a black box or one-off with a limited shelf life. Emerging software platforms and UI/presentation layer frameworks are beginning to deliver on the promise of clean separation between application tiers and within the designer to developer workflow, making the investment in greater extensibility more affordable across the software design and development process. On the other hand, making it too easy to rework the UI in a reactionary way to perceived threats or changing business conditions to rapidly push out new releases can create the potential for a disruptive experience for the user in terms of lost productivity and retraining. Just because one CAN make the software fully malleable in anticipation of marketing or product development pressures doesn't mean one SHOULD in every case, especially from a development ROI perspective. For example, building in a completely extensible styling framework for the entire software UI/presentation layer in order to change out a logo and basic color scheme may not be the most wise allocation of resources. Over-architecting, over-engineering, or serially obsessive refactoring in the name of extensibility is common practice found in many software death marches. A creative technologist or software architect experienced in the rapid innovation and realization process (call it agile, extreme, iterative, whatever) will instinctively know where to draw the line.
----------
In summary, these classic software architecture and engineering principles and best practices represented by the PASSMADE framework have a natural translation path and corresponding place in the collaborative software design process. The key to using this framework is having someone or some group with both design sensibilities and technology fundamentals providing the bridge across disciplines and stakeholders while also championing the perspective that successful user experiences are delivered as much in the background systems and services as they are in the front-end UI/presentation layers of software architectures.
Next up in this series of articles will be a deeper dive into the wide-ranging topic of Performance in software experiences.
----------
* All C-level characters referred to in this post are fictitious. Any resemblance to real persons, known or unknown to frog design, its partners, or its clients, living or dead, is purely coincidental.