Mike Champion, responding to a blog post by Christopher Ferris:
(try explaining “hypermedia as the engine of application state” to an ordinary Java developer!)
Why? Would that be, like, difficult, or something?
Leaving aside the language wars / “Java is a language for the masses” snob stuff, I do worry about the way people apostrophize the Ordinary Developer, like The Man On The Street, whenever they want to say that something is too hard for dumb people to understand.
Writing software that doesn’t completely suck is still quite a difficult activity, possibly more difficult than it should be.
If you’re smart enough to write software that doesn’t completely suck, you should be smart enough to understand things like REST without too much difficulty.
If you’re not smart enough to write software that doesn’t completely suck, then why are you writing software?
The real work in that expression, “ordinary Java developers”, is being done by the word “ordinary”. It’s a way to label anyone who isn’t hopelessly dumb as out of the ordinary, and therefore peripheral to the argument: what you think you understand, and what your understanding causes you to think is important, is irrelevant because you’re unrepresentatively smart.
I don’t think this is a good way to argue. It’s better to start with the premise that, within the profession of software developers, “ordinary” means “pretty smart” – professional, educated, capable of writing software that doesn’t completely suck. Insofar as reality doesn’t match that premise, there is a problem and the problem is with reality (and it is our practical responsibility to try to fix it).
High peer-group expectations are one of the drivers of high achievement. In the software industry, we seem to like to think, and be prepared to accept, that almost everybody around us is thick as two short planks. This is a destructive form of competitive individualism (“I’m OK, you’re not OK”), entirely at odds with the creative form of competitive individualism that encourages people to recognise and affirm one another’s talents, and strive to better themselves.
It is also a form of collaboration with the “deskilling” ambitions of those in the industry who would rather bully a herd of replaceable dunces than lead a team of respected professionals (note: professionals are also replaceable, when necessary – but this is because professionals have shared values and competancies that enable them to learn and adapt quickly).
What I would like to see is greater confidence and trust in the abilities of developers, and languages and tools that are based on that confidence and trust.