A las tendencias que mencionas agregaría una más, que en mi humilde opinión las explica:
Hay muchos más programadores (necesarios) que nunca.
La cantidad de tareas que requieren o incluyen programación es cada vez mayor, y en una tasa aún mayor que la cantidad de programadores. Hoy en día hay varios microchips en un automóvil promedio. En 5 años puede haber un chip en su refrigerador y en su tostadora. ¿En 10 años, su ropa interior? ... Y alguien necesita producir todo ese software para que funcione. Por lo tanto, se hacen todos los esfuerzos posibles para automatizar lo que sea automatizable y para mejorar la "productividad" (como se defina). 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 necesitan varios años para alcanzar un nivel adecuado de experiencia y se requiere un aprendizaje constante para mantenerse allí. La conclusión es que cada vez más 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 abogado del diablo contra tus puntos anteriores:
No tomarse el tiempo para implementar las mejores prácticas.
Mucha gente no, mucha gente lo hace. Hace diez años, cuando descubrí por primera vez las pruebas unitarias y el enfoque ágil, ninguno de mis colegas tenía 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 otras personas 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 final, solo el medio para eso . Si se puede resolver un problema sin escribir una sola línea de código, todavía hace feliz al cliente. Especialmente si de esta manera logramos producir una solución más confiable de manera más rápida y económica. No veo ningún problema con eso.
Uso de idiomas cada vez más altos para mejorar la productividad.
¿A diferencia de codificar todo en el ensamblaje? ;-)
"Herramientas" de desarrollo basadas en GUI que simplifican enormemente la "programación" y no requieren que la gente entienda la plomería detrás del código
En mi humilde opinión, 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 evidencia que lo demuestre) que en los días de la tarjeta perforada y el código de máquina, aproximadamente la misma proporción de código existente era horrible como ahora, solo ambos
- la cantidad total de código, y
- las posibilidades de que extraños vean ese código
fue mucho, 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 celebridades divorciadas, y gritar lo peligroso e inmoral que se volvió este mundo.