I'm Big Brother... to my programs. I'm a vicious draconian ruler over them. I'm forcing them to be simpler, to lose their complexity and become all neat and organized... is this a bad thing, actually?
I suppose making programs simpler inside is not so bad as forcing an entire civilization to begin speaking in ever-simpler words, as in Orwell's 1984. But I can't help but think - am I not being just a little bit cruel to my poor, poor programs?
Perhaps I'm not. Perhaps the comparison isn't so valid. It isn't that my programs are simple, but that the individual parts of my programs are simple. Humans are much the same way; the concepts of how the human brain works (neurons interacting) are much simpler than the actual result.
I think that this is the problem with many pieces of software. They are designed in complicated ways. I can tell, I can feel it when I run the programs: they feel clunky, old, abnormal. Some examples: Mac OS X Tiger's Finder, the entirety of Microsoft Windows, Adobe CS software... the list goes on.
Why are these big pieces of software so, so complicated? Because they are still using the same codebase as they stared with, for some of them, over a decade ago.
Rewrites (complete and total rewrites) are the best things that can happen to software. Each full version upgrade of a piece of software should be completely rewritten. Sure, programmers should be allowed to copy and paste some code here and there, but they should always redesign from the ground up the software. Only if they come up with the same design as the time before should they keep their old code base.
On a side note, I hope Apple's Finder is rewritten for Leopard. I think it might be, since it shows some signs of being implemented in Cocoa (I couldn't care less whether it is or isn't, but it should at least be rewritten). The current Finder feels clunky and slow, and is in desperate need of an update.