My team is currently involved in a really complicated project.  Really complicated. By way of summary, we are building a multilevel representation of unmanned air vehicles that goes from very generic to very specific with each subsequent level of detail connected to the former.  This allows actual systems (very specific) to relate to other actual systems (very specific, but usually different from the other system) through common concepts (generic).

If you don’t get it, that’s okay.  That’s not the point.

For the last year, we have had several meetings regarding one seemingly simple concept.  How do we represent position?  As we walked through the logic, things kept getting more and more complex.  And our model kept getting more complex.  And, as with most computer products, complexity tends to create a gap between the developer and the consumer.

In one glowing moment, some far distant memory of calculus starting working its way to the front of my mind. By reframing the problem with calculus in mind, layers of complexity started falling away.

The thing is, we often here anecdotes about making things simple, but those stories fail to capture the absolute difficulty overcome (or knowledge required) to make the leap to simplicity.

Simplifying isn’t always this hard, but it isn’t always simple.  Sometimes it takes a great deal of knowledge and effort.