Why Are Things So Complicated? - 7 Deadly Reasons?
See RLucente.bloki.com: The Culture of Programming - Why Programmers Make Things
So Complicated .
RL
identifies 4 reasons.
- It could be that its actually
complicated
- It could be that have not found the real
problem
- It could be that I have to patch because I
can’t redesign and rebuild the system
- It could be that I am not using the right
tool
There really seem to be
seven.
- “The Conflict Is The
Drama”. The inherent conflicts in the relationship between developers and
buyers or users make the problem appear complex. Often because buyers insist on
their solution to an assumed problem.
- “Fear of Showing Weakness”. Simplicity isn’t
valued.
- “Quality vs. Quantity of
Ideas”. It’s hard to let go of the first idea, no matter how bad it
is.
- “Form vs. Structure”. We fail to
define the problem in the first place; we don’t know what problem we’re solving.
(RL’s #2)
- “When I Grow Up”. Lack of
mature processes for solving problems.
- “If I Had A Hammer”. Inappropriate use of tools or solution design patterns,
viewing all fastener problems as nails because we really understand hammers.
(RL’s #4)
- “How Hard Can It Be?”
Failure to assess risks appropriately. (RL’s
#3)
This list was a cosmic accident.
However 7 is a magic number. See Wikipedia’s entry on Seven Deadly Sins . Since it was just a cosmic
accident, we now have to do some careful matching of our reasons and those sins
and see what might be the real parallel (if
any).
Also, what about RL’s #1 - it
really is hard?
- Yes. Some problems may actually be hard. But
I think that truly hard problems only occur in the realm of public policy.
We’re talking about software here.
- I think anything that appears to be hard in
software can be one of two things: it’s an NP problem with a lot of mathematical
details or you’re solving the wrong problem.