A las tendencias que mencionas, yo añadiría una más, lo cual, en mi humilde opinión, las explica:
Hay muchísimos más programadores (necesarios) que nunca.
La cantidad de tareas que requieren o incluyen programación aumenta cada vez más, y en una tasa aún mayor que la cantidad de programadores. Hoy en día hay varios microchips en un auto promedio. En 5 años puede haber un chip en su nevera y su tostadora. En 10 años, ¿tu ropa interior? ... Y alguien necesita producir todo ese software para que esto funcione. Por lo tanto, se hacen todos los esfuerzos posibles para automatizar lo que sea automatizable y para mejorar la "productividad" (sin embargo, está definido). Y se reclutan más y más cerebros frescos.
Esto implica que la mayoría de los programadores activos de hoy en día no tienen experiencia y / o están mal preparados para su trabajo. Se requieren varios años para llegar a un nivel adecuado de experiencia y se requiere un aprendizaje constante para mantenerse allí. La conclusión es, cada vez más y más de los trabajos de programación son cada vez menos desafiantes. Pero todavía hay suficientes desafíos para cualquiera que los esté buscando .
Déjame jugar al defensor del diablo en contra de tus puntos anteriores:
No se toma el tiempo para implementar las mejores prácticas
Mucha gente no, mucha gente lo hace. Hace diez años, cuando descubrí las pruebas de unidad y el enfoque ágil, ninguno de mis colegas tuvo la menor idea de lo que era. Hoy en día es un material casi estándar en las universidades, por lo que muchos recién graduados ya lo entienden.
Usar el código de personas de otros tanto como sea posible (código personalizado como responsabilidad)
¿A diferencia de qué? ¿Reinventando la rueda? ¿O usar el código de otras personas para evitar eso?
Creo que es importante tener en cuenta que se nos paga (principalmente) para resolver problemas, y escribir código no es el fin, solo los medios para eso . Si un problema se puede resolver sin escribir una sola línea de código, el cliente todavía está contento. Especialmente si de esta manera conseguimos producir una solución más confiable, más rápida y más barata. No veo ningún problema con eso.
Uso de lenguajes cada vez más altos para mejorar la productividad
¿A diferencia de codificar todo en ensamblador? ;-)
"Herramientas" de desarrollo basadas en GUI que simplifican enormemente la "programación" y no requieren que las personas entiendan la tubería detrás del código
IMHO cualquier herramienta puede ser mal utilizada. Lo que no quiere decir que los constructores de GUI fueran necesariamente perfectos o incluso buenos: la mayoría (o al menos algunos) de ellos son utilizables dentro de sus límites. Pero si alguien no conoce esos límites, ¿es un problema de la herramienta o de su usuario?
En general, creo (aunque no tengo pruebas que lo demuestren) que en los días de tarjetas perforadas y códigos de máquinas, casi la misma proporción de código existente era horrible como ahora, solo ambas
- la cantidad total de código, y
- las posibilidades de que los forasteros vean tal código
era mucho menos.
Ahora, con Internet y el Daily WTF, nos exponemos a los peores ejemplos día a día. Es un poco como ver todas las noticias sobre terrorismo y terremotos y divorciarse de celebridades, y gritar lo peligroso e inmoral que se convirtió este mundo.