Tuesday, August 19, 2008

Complexity Shmetzity

Software is complex.

We all know that.

So why do we insist on making things even more complex than they need to be?

During my career I've noticed a trend in software development, and its not a trend I think is always intrinsic to the problems that we are trying to solve. You've no doubt cottoned on to the fact that I'm alluding to complexity, and in particular the increasing complexity of the systems that are designed and built.

In software development its always easier to develop a complex solution to a complex problem than it is to develop a simple solution to a complex problem. When designing a solution there are many forces to consider, pushing the design parameters to and fro. You're exploring the solution space, looking for design approaches that hopefully descend down into some kind of optimum (having a good wander around the area is generally a good way to start). Unfortunately, some architects don't seem to see it that way. Instead, they see Mt Olympus over in the distance and want to scale it ... its easy to spot, you know where you're going (even if it is vertically straight up) and dammit, its going to be fun! This way team, I know what I'm doing! We've got all the right tools; we've got design patterns, and services, and layers and ...

Oh dear.

So where am I going with this? Well, nowhere really. Its just a bit of a moan.