The paper examines the idea presented by Fred Brooks of splitting Complexity to two different types. Essential and Accidental. But the paper disagrees with Brooks's notion that most complexity in modern systems is essential. The paper states that while it is easy to create complex systems simple ones are much harder to create.
"Simplicity is Hard"-Out of the Tar PitThe paper continues claiming that the only significant factor for making it hard to create software is Complexity. So it is essential to bring more simplicity to our design.
Main causes of complexity in software are presented as State and Control, with some more minor ones brought along. The paper claims that three important principles are behind these other causes.
- Complexity breeds Complexity Complexity is created because the system is already too complex to be understood.
- Simplicity is Hard Creating simplicity requires effort and in the short term it seems more viable. Simplicity can only be gained if it is prized and sough after
- Power Corrupts Similarly as the power of managing memory manually creates problems removed by Garbage Collection other kinds of power create other kinds of complexity. The singles out the power of state (mutable) as one of the main causes of complexity
The paper continues by splitting state into essential and accidental and distinguishing into which types of state different kinds of data belong. The main point here is that the only essential data is the data coming from the user. After this a recommendations are given to separate different kinds of complexity and distinguishing useless Complexity in order to avoid it as well as representing a model on doing this separation.
Last parts of the paper discuss using relational model as a example of doing the mentioned recommendations.
All in all i don't think many other writings have had as much effect on my programming as this paper, although i look forward to encountering more of it's kind. Any recommendations?
Yeah, writing for dummies for starters. Follow with brainfarts 101 and stating the obvious for beginners. Ground Control for Major Fail -->
ReplyDelete(Vittu mitä paskaa voi suoltaa..)
Care to elaborate? At least to me your comment is pretty hard to decipher.
Delete