Attack of the Codelosiphers from Planet Yagni
As I’ve argued before in other places I think some people in the programming profession take best patterns and practices a little too far. In my opinion these people and over engineer their code into huge messes that are only understood by programmers of their school of engineering. Codelosiphers is what I like to call them.
Now I love to read about code architectural design and patterning and do implement things I’ve learned from the Codelosiphers when it makes sense. However I’m really skeptical when somebody says “do things x way” without providing any proof or stories about how it helped their application. I think there is real value in SOLID principles and GoF patterns but so far I’ve only had uncomfortable experiences with them.
I’m working on a project now where I personally over-engineered a really simple web application by implemented an entire MVP pattern for a < 10 page website because the Codelosiphers convinced me it was the right thing to do. Now I'm stuck unraveling this highly abstracted presentation framework just to add some new features to the program.
Normally you abstract out your programs and use GoF patterns so you can add remove extensibility very simply by only changing a minimum and isolated amount of code. So far this hasn't worked out for me. Here I'm am slogging though 6 layers just to change the name of a database column and add an new one. Seems like a bit much when my, according to the codelosophers, "bad" code I'm replacing it with allows me to do it in 2.
In another project I worked with the code base was 10x as large and we found situations where these patterns only bloated up our code. We literally ignored a couple of SOLID principles and the project is highly maintainable and making the owners money.
Maybe I'm doing something wrong. However its clear from the conversations about GoF and SOLID principals that if I'm not using them I'm a bad developer. I'm not so sure about if I can trust what these guy say anymore, there are certainly examples of "bad" software that has been really successful.
Take a look at this post about the ineptitude about John Ressig, the original author of the JQuery library. The criticism looks valid and parts of the code may be utter slop and badly architected but you know what? JQuery is used in over 40% of Asp.net developers at this point and who knows how many in the Open Source world. To me its a hugely successful program that could be full of crap code.
Trying to find the real secret sauce of software development has been a true challenge. Being in the ring a little while now has made me question and doubt everything I’ve learned thus far. The real kicker is I’m always wondering if the blog owners, book writers, and bill-by-the-hour freelances are just using these practices as an excuse to sell more books, earn more money from ads, or increase the hours they bill.


29. May 2009 um 03:10
Architecture Blogs…
[...] Now I love to read about code architectural design and patterning and do implement things I’ve learned from the Codelosiphers when it makes sense. However I’m really skeptical when somebody says do things x way without providing any … [...]…