Failing to keep things simple in the software designs I’m responsible for seems to be a problem I keep running into. I’m always coming up with designs that are more complicated than they need to be, and once they come up for review, they always seem to be rejected for something much simpler that can get the immediate job done in a shorter amount of time.

Not that I’m offended by that: I don’t want my team building something more complicated than it needs to be. I’m just curious as to why I keep doing this. My current theory is either that I’m prioritising future extendability over immediate needs — which sort of goes against the idea of “you ain’t gonna need it” — or that I’m bored and it’s just an attempt to put together a design that seems interesting. I suspect that it’s a little of both.