First of all, I was exaggerating the negatives of Java. There are 2.0+ programmers writing in Java every day. The vast majority of these would prefer to use another language, but that's another story.
My experience is that most 1.5+ developers, when forced to use Java, react in one of two ways. The first is to scale back their general tendency toward ambition in coding and tolerate uninspired patterns, such as objects with 25 getters and setters. This works, and it can produce quality software, but it's not fast and it's definitely not fun. The second is to follow Greenspun's Tenth Rule (http://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule) which describes the process by which a skilled programmer, confronted with under-powered tools for his job, creates a personal DSL (and usually a bad one) for solving the problem. Rich Hickey and Martin Odersky are counterexamples: instead of writing shitty DSLs, they built full-fledged, awesome languages.
Are there 1.5 and 2.0 programmers in languages like Java? Absolutely. Is it common? No. Is it likely that a person exposed to only Java and C++ will ever crack 1.5? Absolutely not.
You have now introduced a definition which implies that the designers behind projects like the Windows kernel, MSSQL, and Kinect are a lower level of programmers because of the technology they use or the company they chose to work for.
You're taking it a bit far. Obviously, there are exceptions. Multiplier effects happen on bad languages, but you have to either (a) fight the language the whole way through, or (b) deliver a complex system, which ends up being a divider effect if someone other than you ever has to maintain it.
To call functional programming a 'shibboleth of good engineers' seems to exclude too many people I would call good engineers to be a good or even useful measure. I would go as far as to say that, for above average programmers, interest in and use of functional programming is orthogonal to their contribution and skill.
Disagree, unless you're taking a very strict view of what "functional programming" is. A 1.5 programmer in Python will find himself using a lot of list comprehensions. Are his Python programs likely to be "purely functional"? Absolutely not. It's not idiomatic for the language. But his code will be in a state where the average Lisper will understand what he is doing and why, and in which the average Java developer will be asking "where are the Factories?"