DEV Community

Cover image for Simplify what can be Simpler
Frank Font
Frank Font

Posted on • Edited on

Simplify what can be Simpler

When something makes sense to us, we can say there is something about it we understand. Perhaps there are subjects today that make sense to you now that years ago did not. Some subjects take effort to master. Once you master a topic, navigating it can become simple.

Some things can never be mastered and will never be simple.

Knowing what can be simplified and what is already as simple as it can get is an art with tremendous impact on successfully achieving our goals in any endeavor. Let's discuss a few critical concepts that fuel success in this art.

Distinguish the Complicated from the Complex

We can generally agree on the following qualitative observations:

  • Simple problems are reliably solvable with predictable outcomes.
  • Complicated problems require more work to complete successfully.

We can also agree that what is simple to one person may be complicated to another. In most cases it is a matter of experience and education in a domain that makes a complicated problem for one person, a simple familiar problem to another.

And then there is complex. This is qualitatively different from complicated in that you cannot study your way into a position where you can long-range predict outcomes with high confidence of success. There are too many unpredictable elements at work.

Quality of prediction

A thought experiment about simple, complicated, and complex

Imagine you are at one end of the large engine room in an ocean-going ship. The engine room is filled with dangerous machinery you would not want to touch.

Ship on the ocean

If the lights are on and you can see your way across the the room, walking around the machinery to get out will be easy. If your vantage point allows it, you might even look across the room and plan your path completely with high confidence of having a successful navigation. This is an example of a simple situation.

Now imagine that most of the lights are out. If you stand at one spot long enough and look carefully your eyes eventually adjust to the dim lighting and you can start to make out the locations and type of equipment in your way. With enough eye scrunching and critical deductive thinking about the shapes you see, you can safely make your way across the room. If the room has many obstacles, the path may be complicated, but you can study and somewhat long-range plan your way out. This is an example of a complicated situation.

What if there is zero lighting, and you have never seen the room, and the seas are very rough, and some of the dangerous equipment is loose? Every time a large wave hits the ship, something might shift from where it was. Can you study enough to long-range plan your way out? No, there is nothing at your disposal where you could think this through and know the path to the exit from the beginning so you could just run a pre-planned path. That will not end well. This is not simple. This is not even complicated, it is more than complicated. This is a complex situation.

What distinguishes complicated from complex? The fundamental difference is there being a material dependency on elements you have no way to long-range precisely predict. Some common factors that impact our ability to predict include the following:

  • There are important elements that shift in the future in ways we cannot predict.
  • We lack material insight into the landscape ahead and there is nothing we can do to learn the whole layout of it ahead of time.

Can a complex situation be successfully navigated? Many times yes. And the way to work all complex situations is through experimental iterations. Iterate in small safe steps in a direction picked from previous experiments. In the engine room exercise, a winning strategy would be to move slowly while listening all around you. Carefully tap around yourself too. Back out and try a different path if the one you are on does not seem good after you start walking it.

Can something complex be converted into something complicated?

Sometimes, yes. Imagine the ship engine room in the complex scenario again, but this time you have the master ship mechanic at your side. This person is an expert that knows that engine room with his eyes closed. Now you, as a team, do have a clear picture of what lies ahead at least to the extent that he knows what equipment may be sliding around and you both plan paths that avoid those areas.

What does any of this have to do with practical knowledge management system design and implementation? A lot. Knowing how to distinguish between simple/complicated challenges and complex challenges will save you time building a successful system. Each presents opportunities for simplification in their own way.

Reducing complication

Our goal with anything complicated is to turn as much of the work as possible into simple tasks. Sometimes skillfully partitioning and re-framing parts of a complicated scenario converts the entire scenario into a simple one.

How does a complicated activity become simple? One way is to engage with an expert that understands the domain. Is there a way to carve off part of the work so they do all the heavy lifting? Let the expert own it.

Engineer what an expert will own in such a way that it is simple for them to understand.

Simple and complicated tasks can be predictably completed. And finishing parts of a system so we don't expect to have them change while other parts are being built simplifies the entire exercise. We want to keep the simultaneously changing parts of a system to a minimum. It is simpler to do a good overall job that way.

Complicated challenges of a system development project are the low hanging fruit because there are ways to turn them into simple directly. And we should always look for ways to turn complicated into simple.

Reducing complexity

Recognizing that a challenge is a complex one that will never simplify into a complicated one means we can confidently channel our focus constructively into iterative planning and experimentation cycles. Anything else is a waste of effort that may result in avoidable cost overruns and frustration.

When building software we should attempt to isolate complex work into their own module artifacts. By trimming away simple and complicated elements from a complex whole, we reduce the size of what is complex.

Complex is never simple, but other things can be.

Top comments (0)