Ayende's post, A Maintainable Environment - Anti Corruption as a Way of Life, made me think that as a development community (and I'm including developers, Microsoft and all technology thought leaders) we're not making the progress we should be.
Ayende states,
I noticed that a major part of the problem seems to be in the underlying assumption that in order to make it possible for beginners/intermediate developers to work with the application, you have to do one of two things. Embark on a long education period or dumb down the application to a level that beginners can deal with.
So you either build an application like we all know it should be built; utilising established best practice and design patterns that only the elite can understand, or build it so that any grunt developer can understand what's going on. In both cases, but for different reasons, you essentially increase the ability to maintain the system into the future.
Surely we can do better than that.
Should it really take "a long education period" to get beginner/intermediate developers to understand your code? Surely the sign of a great pattern or technology is in its simplicity. In its inherent accessibility to all developers, new and seasoned.
I sometimes think there is an innate love of complexity in the development community. We have a perverse aversion to something that's so simple anyone could understand it. I sometimes read my partners academic Interior Architecture (houses not software!) articles and find myself battling through obtuse, long-winded, overly flamboyant sentence structures wondering what the hell the person is trying to say. Academics can be an elitist bunch. They take great pride in producing work that only their colleagues can decipher yet miss out on spreading their message to a wider audience.
Does the development community have a similar group of academics at its helm?