Dealing with Complexity

8 November 2005 In: Information Architecture

In order to work efficiently and successfully in a complex environment, the focus must be on a small number of core goals for a project without introducing unnecessary noise. Break down the complex project into small, workable, discrete units. It is easier to design, build, and test a product that does one thing well, than it is one that tries to do many things.

In my latest project, we took the list of features everyone wanted in the product, and winnowed them to a very small subset that we could deliver in a timely fashion. Later, we will add the additional functionality. This has many major advantages. It allows the product to get to the market faster, and the users can grow with the application as new functionality is added. Users are less apt to make support calls when you deliver small, incremental changes, and the calls that do come in are easier to handle. Perhaps most importantly, features that you add after the initial launch are a result from real-world feedback, and not the whim of an upper-level executive. This leads to a discussion on what I think is an effective development strategy: the “just in time” iterative model. More about what this means later.