Archive for March, 2010

Using Excellence by Design to manage Complexity

Nature does it Better.  Something to really consider is how immature we are compared to nature.  Nature supports infinite complexity, yet does so by design.  Biology and Chemistry form the design basis for  nature to support broad complexity.  Every leaf, tree, and flower is different, yet they are all formed based on the same design principles.  Man has a long ways to go to form design principles as robust as nature has, but what the heck, we have only been at this for a blink of the eye compared to the age of the earth.

Business in general, and IT in particular, that has become much more complex.  There are several ways to think about this subject.  One is simply how business (and life in general!) has become more complex.  This is due to wider variety of options (in products and services), greater breadth of customer base and relationships in general, and more rules/regulations/considerations in these, due to government, social, economic, environmental, and legal aspects.  Yes the world in general is getting more complex.

Another way to look at complexity is from an IT perspective.  Certainly technology has gotten more complex for the same reasons noted above, plus the advancements in technology itself, which provides an ever increasing set of alternatives in hardware/software/networking technology and perhaps the most influential, the rise of independent offerings that must be ‘integrated’ into a solution.  It is not unusual today to find an IT solution that mixes cell phones, web servers, third party hosted applications, remote storage, and enterprise databases.

In fact, the combination of these two trends is growing, and influencing each other.  McKinsey recently issued a report on Tackling IT Complexity in Product Design. Should we be concerned and if so, what can be done about it?

Actually this is a subject I have spent some great amount of effort on over my career.  Since college, where I studied systems science (BS, MSU, ’80), I have been involved in understanding complex systems and forming models and solutions to explain and address this complexity in ways that are sustainable (i.e. not by spaghetti code that implements every complex feature!).

Some great examples of solutions that support complex behavior, but do so in simple, consistent, excellent designs are operating systems (who are able to run an infinite variety of applications), networking (able to transport infinite data payloads over an incredible variety of communication types including data, voice, video), and perhaps most understandable to many, the spreadsheet (which after all is probably the most widely used IT tool in business and is able to manage an infinite variety of calculations and structures for reporting).

So complexity of need is inevitable (people want to run all kids of applications, send all kinds or data, execute all kinds of calculations), but designing solutions to address this complexity in simple, well structured, sustainable ways is still possible. It is another example of Excellence by Design.

Not too surprisingly, there are more example of solutions to complex challenges via poor, complex designs, then there are examples of elegant, excellent design.  And the problem is growing.  Creating a great design for a minimally complex world is not too hard, creating one for a highly complex world is much tougher.

McKinsey provides a nice summary of some of considerations that can tend to result in poor design, and overly complex products.  While not complete (call me if you want a full discussion 😉 ), it hits some good highlights including: Growth in technology inside the product itself, poor architecture for the product, weak or myopic understanding of the business needs (creating a product for a fixed set of requirements is inflexible and shows not only poor architecture but a poor understanding of the long term business needs) , poor collaboration/teaming among the parties who influence product design (mktg, engineering, manufacturing, etc.), and weak competency in the overall product design and development process.

In the Excellence by Design framework I use as the basis for this blog, I hit these points and a few others.  Here are some highlight how they help address complexity and help guide an organization to Excellence by Design:

Chaos vs Control: The world is complex and not all requirements are the same.  Deeply understanding and in fact embracing what aspects of a product must thrive in a chaotic environment, vs what aspects must ensure very disciplined control, is a key part of designing for complexity.  The internet protocols are very controlled and precise in order to ensure interoperability, yet they are designed to enable a wildly chaotic set of data to be transported.  Very few companies or teams i have worked with really try and differentiate requirements in this way.

Systems as Strategy: Creating ‘systems of execution’ that reliably operate, yet support broad usage types is very useful.  As a simple example, it is surprising how many companies have financial processes that are still not systemized in any robust way, and still rely on a (often constantly changing) variety of custom spreadsheets, personnel, and submission timing, for budgeting, forecasting, and final reporting of costs.  Same is true for HR in most companies.  I could go on but the point is you can address complexity in part by excellent design of the operational aspects of the organization.

Craftsmanship to Community: Enabling and organization to leverage both wise/competent experts, and the broad community of participants inside and outside the organization, can help address complexity by making the subject more of a priority, and seeking best ideas for how to design more holistically, yet few organizations utilize this potential.

Architecture Advantage, Design for Change, Product as Platform: These three Excellence by Design principles are core to addressing complexity in product design.  Combined together, they can make a huge difference in how products are designed and result in better products (higher quality, greater customer satisfaction), that are more resilient to change (lowering costs and improving competitive advantage), and have a higher value proposition (a product that is able to be easily extended and/or combined with other capabilities generally has a much greater value in the marketplace).

Service Excellence: Not an obvious principle to help reduce complexity, but an increasingly important one.  As the world becomes more dynamic and changing and complex, the ability of a product to promise ‘service excellence’ over time becomes more important AND a key differentiator to competitors.  Again though this is a subject for which few organizations have developed a core strategy and strength in.

Yes, in a world that is inevitably and increasingly complex, developing enhanced organizational capabilities that help manage complexity is a key success factor for business and IT organizations.  Using the Excellence by Design principles is a start.