Llevo casi 6 años de desarrollo en ambiente web (empece a los 15 años), en java cerca de 3 y en JSP y RUBY arranque hace unos pocos meses a experimentar, aun estoy verde, tambien pase por otros lenguajes como assembler, C++, prolog, object-pascal(lazarus), cobol, visual-basic, phyton y node-js, mi curriculum no es relevante, solo doy mi opinion como un fulano anonimo que le gusta programar, no como un experto del tema.
Es clave para todo lenguaje orientado a objetos y para aplicaciones de escritorio (o al menos, eso considero yo, estoy abierto a escuchar buenos fundamentos que prueben lo contrario), como dijo @triby al inicio, programadores malos los habemos en todos los lenguajes, que sea el mejor camino no quiere decir que sea el unico, entra a un foro de java y pregunta cuantos no saben lo que es MVC o no saben aplicarlo o no lo usan y seran muy pocas las respuestas, si entras a uno de php y haces la misma pregunta lloveran respuestas sin contar que muchos de los que lo usan lo hacen porque laburan con un framework de este estilo, no aplican el patron sobre el lenguaje puro.
Le pegue a java porque es sobre el que se esta debatiendo, lo nombre como caso particular del contexto al que se aplica, no porque sea inherente a el.
Tristemente, es verdad.
Por ultimo me tomo la libertad de hacer un par de citas con las cuales, estoy sumamente de acuerdo: