Sunday, February 7, 2010

Dealing with Complexity in Design

My initial blog entry is my interpretation and extension on an article written by Bob Colwell, called “Complexity in Design” (IEEE Computer Society Journal. Volume 38, Issue 10, October 2005.) I begin with a key quote from the article that seemed to sum up for me what we are truly challenged with when designing a new product (or service for that matter): “When nature is the adversary, all that stands between the engineered product and disaster is the product designer’s foresight, knowledge and skill.” The latest mass recall of Toyota vehicles is one example of when “foresight, knowledge and skill” fall short of the mark, with disaster rearing its ugly head once again. Based on my experiences, I have no doubt that there was a chain of smaller contributing, and perhaps cascading failures which led to this outcome.

Referring back to the quote above, I’d like to add that part of good foresight is wisdom, which comes from a solid understanding of history and the repeated use of knowledge in different scenarios over time (experience). The more we understand nature, the more we can work with it instead of against it. Part of understanding nature is understanding how we have successfully or unsuccessfully interacted with it in the past. Part of this learning comes from learning where our designs, approaches and experiences have failed in the past – always remembering them and never becoming complacent.

Moving on, we seek to answer the main question addressed in the article: “How can we best deal with complexity in design?”  I offer a few practical tips to help us in this endeavor, which combine Colwell’s suggestions with a couple of my own.

• Always Keep Learning – We continuously improve upon our knowledge, skill, and wisdom/experience. Doing this will lead us to the point where “what initially looks impossibly complicated may seem quite reasonable …”

• Keep It Simple – We always strive for simplicity and never fall prey to “design(ing) something so complex that you can never get it right.” I think Einstein had something to say about that.

• Questioning Attitude & Sticking With The Facts – “If you aren’t sure you need some logic in your design, keep asking questions until someone either justifies it or agrees to toss it overboard.” This forces us to stick to the facts instead of false perspectives, which may come from a skewed form of history. That’s where solid documentation, science and statistics become really important. It’s hard to argue against the facts.

• Focus Decreases Unknowns – Given the proper focus, tools, experience, and training, the ability to identify certain risks that were previously unknown is greatly improved. If the product’s concepts and/or requirements are continuously changing, the unknowns take over and derail the project. I’ve been there before and it isn’t pretty.

• The Wild Card – Finally, we add upon the concept of “complexity through iteration,” which can result from new and competing requirements in later releases. In these situations, sub-optimal trade-offs do need to be made. But, sometimes we can get lucky, and some of the complexities cancel each other out. I’ve seen that happen. Those situations give me faith in a higher power; and we all could use a break from time to time. So, always look for these elusive and rare opportunities.

So, there you have it: some solid, practical tips to managing complexity in design, increasing your probability of success, and ultimately becoming a better product designer (and professional for that matter).

[Via http://engineeringsuccess.wordpress.com]

No comments:

Post a Comment