@RyanD said:
In continuation of this thread, it seems to me there are 2 kinds of people who program, those who "get" it and those who don't. Plenty of people understand programming enough to make something work, but when it comes to truly understanding best practices (MVC, OOP, loose coupling, simple naming conventions, simple structures, non-WTF code), architecture, maintainability, etc, lots of people don't get it. Whether it's due to lack of training, effort or just intelligence, I don't know.
There are plenty of people who took 4 years of programming classes and still don't get it, yet there are plenty that have taken 1 (or even 0) classes yet seem to have an uncanny ability to write clean, maintainable code.
It seems to come down to common sense and the ability to see far ahead of yourself enough to realize when you are writing WTF code and rewrite. I don't know how many times I've started to write overly-complex code, stopped when I felt it was too complex and refactored.
My $0.02
Programming, like painting or literature, is an art form. I can't paint to save my life, but I consider my self a very decent programmer. It takes practice and a sense of awareness that something just isn't quite right. It takes intelligence to figure out what isn't elegant and to remedy that -- like a artist will work to find just the right colors.
Beyond that, and like any other art form, it takes a healthy dollop of intuition. Just like in any other area or field, some people got it -- and other people don't.
WTF code I see on this site usually tends to be a simple lack of intuition -- that sense that "there must be a better way to do this".