Scott touches a nerve with his blog post on code monkeys and mass market developers. Whilst the problem is certainly true I think he skipped too quickly over what I view as the root cause.
I don't have any formal training. I started out with a ZX Spectrum and then upgraded to a BBC B (with a double sided 5.25" floppy disk). Now I stand up and talk, and for some reason people listen.
Scott says
These are the people who stitch together snippets of code found on the Internet and in books to make an application, without having an appreciation or understanding what the principles behind the code or the concept of coding are.
This is, to my mind,is the real problem. Not the availability of Visual Studio Express, not the outsourcing trend to the sub-continents and the typical lack of quality deliverables that produces. No, the problem is there's too much information out there for beginners.
Bear with me on this. When I started the only materials I had were text books (dry, formal, not applicable to my platform), the manual that came with the computer and Andrew, my partner in computing crime; we'd bounce ideas of each other, go away and read up, and learn. We had to learn, there were no books about what we were trying to do (usually write an English parser for an adventure game), we were forced to learn.
In this internet age a simple search brings back a myriad of answers to your question, you don't need to think or learn any more, just cut or paste. The basic questions Scott sees on the developer forums he reads are just another symptom of the quest for easy answers. The availably of information is lowering standards because it's a lazy way to "code", because the people that google don't think critically, they cannot evaluate if the solution they found as the first hit on google is better than the solution they found on the second hit. They have no drive to discover if there is a better way to do something because they've found something that just works;
A couple of weeks back I asked someone to take a field in the database and generate a short URL from it; removing all punctuation and replacing spaces with underscores (but no multiple underscores). The solution delivered was 40 string.Replace() statements. Hopefully most of you reading this are screaming "regular expressions". I have no idea if the developer in question knew about regular expressions or not, but it nicely illustrates the perils of taking the quick route and not looking for alternatives. (aside: I hate regular expressions because I'm really bad at reading and writing them.)
I disagree with Scott's conclusions;
The development community needs to start demanding better academic standards for computer science (and related) degrees
A degree doesn't solve the problem. These days degrees and their examinations are taught "to the course". There's no concept of information discovery or critical thinking, and that's not just limited to computing degrees. There needs to be an overhaul of what universities teach and a movement away from ticking syllabus boxes.
Employers need to demand higher quality from their development staff, and realize that there is a trade-off between time-to-market and quality of code.
Employers don't understand quality of code. The problem doesn't lie with the employers, but with developers who cannot educate and express the problems with short cuts and timescales (and also with those project managers who set delivery dates that developers don't agree with).
People should be encouraged to ask questions on forums; but the people that answer should realise their responsibility, it is not to give a correct answer, but to give pointers and hints to code monkeys and to force them to learn and grow.