Software Complexity Is Killing Us
Blah <i>bullshit</i> blah.<p>The reason software is so complex now is that our expectations as users is orders of magnitude higher than it was "in the good old days".  I'm old enough to remember the good old days, so I can speak with a little authority here.<p>The Pareto principle may not be exactly accurate, but it describes many situations quite well.  And in software, it fits very well.  80% of the requirements take about 20% of the code (and complexity).  It's the edge and special cases that add the bulk of the work.<p>When a program just did one useful thing, we humans would do our human thing and integrate several different programs with our manual effort.  If an edge case appeared, we didn't even identify it as an edge case - we're built for handling edge cases!  We just made the minor _human_ judgement and fixed the data and pushed it into the next program.<p>Software is complex because we're trying to make it replace more human activity.  And beyond the core functionality, human activity is all about applying human judgement.  If anyone is familiar with people training people on a particular task, particularly the quaint concept of apprenticeship, it involves teaching and showing and mentoring until a student has enough knowledge AND wisdom to get the job done.<p>So to boil it down, modern software is primarily complex because it attempts to replicate human judgement and wisdom.<p>That software complexity is not killing us.  It may be a pain in the ass, but if anyone can remember what it was like before we had these tools, I would dare to say that it's still a whole lot better than before computers.