Good points. Just to elaborate a bit, the mediocre programmers tend to end up writing five functions that do almost the same thing because they don't have the vision to see how it all fits together and come up with a single, elegant solution. The code may very well work to accomplish the immediate task, but the lack of clarity and good planning makes it rather fragile if modification/extension is ever necessary. They tend to produce a lot of unnecessary lines of code that become a maintenance liability as the project grows.