Differences

This shows you the differences between two versions of the page.

Link to this comparison view

it:ad:patterns:complex_is_not_complicated_strategy [2019/03/24 12:02] (current)
Line 1: Line 1:
 +# IT:​AD:​Patterns:​Complex is not Complicated Strategy #
  
 +
 +
 +<callout type="​Navigation"​ class="​small">​
 +* [[../​|(UP)]]
 +{{indexmenu>​.#​2|nsort tsort}}
 +
 +
 +</​callout>​
 +
 +
 +<panel title="​Summary">​
 +
 +You'll often hear the statement 'Keep it Simple'​. (see [[IT/​AD/​Patterns/​KISS Strategy/​]]). ​
 +
 +Yet I'd propose that Simple isn't something you should automatically be striving for. It depends on the field (Management yes, Development...probably not).
 +
 +
 +</​panel>​
 +
 +
 +#### Simple ####
 +
 +It's good to keep the *description* of something simple. It makes it easier for managers to understand functionality and risk. In terms of product, it's good to keep it understandable by potential clients.
 +
 +
 +But in terms of the underlying ideas and technology...maybe not. Simple can sometimes really mean “guess what – if it’s easy there’s lots of competition”. ​
 +
 +A burger joint is a *simple*. ​
 +
 +It’s repetitious,​ easily understood.  ​
 +
 +And frankly nobody cares. You own a burger joint, you aren't making the world any better.
 +
 +
 +#### Complicated ####
 +
 +Complicated is the opposite. A complicated system means it has too many wires, bits, pieces, etc. hanging out all over the place. its expensive to test, expensive to keep it together, impossible to update. And that, rightly so (given a business driver) should be torn apart to make something that can be less costly to work on, maintain, and provide additional value as time goes by.
 +
 +**But throwing Complicated out to get back to Simple is an idiots game. **
 +It means no progress, always going back to the lowest common denominator of progress. ​ You cant get far with `Simple` (can’t build anything tall, or new, or special if you only don’t try something new).
 +
 +
 +#### Complex ####
 +
 +But Complex is not the same thing as Complicated.
 +
 +[[http///​en.wikipedia.org/​wiki/​Complexity/​]]
 +
 +**Complex means many moving Simple parts.**
 +
 +To achieve large vision, you need to be able to handle the complex (skyscrapers have a myriad more Simple systems in them that a small house).
 +
 +It really depends on the architect'​s competance whether those parts are put together in a Simple or Complicated way.
 +
 +And frankly, code often appears Simple to ‘write from scratch’ when you start out…but it quickly get’s complicated.
 +
 +
 +You need strategies to break the Complex down into repeatable Simple patterns that help you achieve completion.
 +
 +It it stays Simple as it gets more and more complex, it either because you’re frankly not pushing the envelope very hard,​you’re a god at managing developers and upskilling them to write simple, clean code at both the micro and macro level. Fat chance. There aren’t many of those types of leaders.
 +
 +Or you’re encapsulating code into libraries as you go, thinking hard about reuse to make the custom code as little as possible.
 +
 +## Conclusion ##
 +That's the reason for the [[Projects/​XActLib/​|XActLib]] library: it's a tool to obtain the fruit of Complex apps at the cost of Simple apps.
 +
 +## Addendum ##
 +Making Complicated Complex is the worst of everything. The only good news in that strategy is that if you do that you’ll quickly be out of business before the project is finished, and you’ll save the world from your mistakes.