Over lunch today I watched the closure controversy . What struck me was the nature of the language design and how its creators think of its use. The speaker made it clear that Java was designed with users in mind. I personally have never found Java very usable, but that is simply my opinion. Java's success makes it clear that its usability is a viable feature.
The speaker also alluded to the Java designers acknowledging that most developers were not very smart. Of course he did not say this directly, but the essence of what he mentioned was that Java was made for the "common" programmer. Personally, I have always taken great pride in my work as a developer. I have been diligent about learning technologies, languages and patterns that help to develop my skills as a programmer. For this reason, I am attracted to tools that provide grace and elegance in their power. This is probably why I have never liked Java, its design focused on a tool for getting things done. It has no concern for the quality or elegance of the output.
I'm not saying programming is brain surgery but, if it were, would you want your doctor operating with a drill press and a table saw on your head? Likewise, would you want to see sky scrapers built with only wood and nails? This concept is faulty at its core because without progressing the field into the complex, there will never be any progress towards stability and eventual elegance. We as people can see the art in architecture, fashion and even medicine. None are considered common trades that anyone can do, yet we settle for mediocrity in programming because of the perceived lack of impact.
The problem with this is that there would most likely be a serious lack of available developers. I wonder if that would be an appropriate cost compared to the amount of money spent fixing bugs and poorly programmed applications. One solution to provide a reasonable hierarchy of developers would be something similar to the medical field. There are different classes of nurses with each being qualified to do different types of development. While this is somewhat true today in that most developers are thought to have started with testing and moved up towards and architect, it might actually be worthwhile to have some sort of a guild or union type group to help make the qualifications more official and performed by those who actually understand programming. This could easily cause more problems then it would solve, but again, the costs of bad programming is probably much higher than one would think. Even if a guild type system was created and caused something of a stir, the potential money saved from lost data, broken systems and better designed applications could potentially make the market a much better place for those creating and using software.