Causas de infelicidad entre los desarrolladores de software
Estaba leyendo el otro día un estudio titulado “On the Unhappiness of Software Developers” y realmente lo he encontrado fascinante. Estos investigadores le preguntaron a varios desarrolladores qué los hacía infelices. Si alguien me preguntara eso no sabría por dónde empezar porque nunca lo he pensado.
Entonces he traducido y resumido las categorías y causas principales, no es substituto para no leer el estudio pero confío en que da una visión general. Empezamos con las categorías, las clasifican en dos generales; externas e internas.
Causas externas
- Personas: con las que el desarrollador interactúa, sus características y comportamiento.
- Artefactos: trabajar con artefactos de desarrollo de software (código y prácticas).
- Procesos: administración de proyectos y el día a día en desarrollo de software.
- Otras: todo lo que no entra en las anteriores categorías.
Cada una de estas tiene más subcategorías.
Causas internas
Se trata del propio ser del desarrollador, no muestran una estructura definida, lo que si muestran son los diferentes estados mentales y su estado emocional al desarrollar software.
Las 10 principales causas a nivel general
- Estar atorado en un problema (internas): no encontrar la mejor forma para solucionar un problema.
- Presión de tiempo (externas -> procesos): cuando las fechas de entrega se sienten irreales, injustificadas o que no tienen sentido.
- Mala calidad del código (externas -> artefactos -> código y programación): en la mayoría de los casos el problema es el código escrito por otras personas, sólo unos pocos desarrolladores se sintieron mal por código deficiente que habían escrito ellos mismos en el pasado.
- Colega con poco rendimiento (externas -> personas -> colega): problemas con colegas que cometen errores.
- Sentirse inadecuado para el trabajo (interna): sentirse no familiarizado o sentir no tener las habilidades para utilizar herramientas o técnicas para el desarrollo de software.
- Tareas mundanas o repetitivas (externas -> procesos): cuando se trabaja con cosas que no presentan un desafío.
- Código que sin explicación ya no funciona (externas -> artefactos -> código y programación): ayer compilaba, hoy ya no y “no hice nada”.
- Mala toma de decisiones (externas -> procesos): cuando se toman decisiones en niveles superiores que afectan de forma negativa el trabajo, los desarrolladores también perciben como malas decisiones aquellas en las que no se les incluye.
- Limitaciones impuestas en el desarrollo (externas -> artefactos -> infraestructura técnica): las herramientas y técnicas para el desarrollo tienen ciertas limitaciones que no permiten al desarrollador realizar su trabajo.
- Asuntos personales no relacionados al trabajo (internas): los desarrolladores no son robots, son humanos como todos.
Mi opinión
Me llama la atención que de las principales diez, siete son causas externas, pienso que debido a su naturaleza no están bajo el control del desarrollador entonces no habría necesidad de preocuparse por ellas. Si se puede influir en algo en las que tienen que ver con las personas hay que hacerlo o buscar soluciones con las otras como la número nueve.
Y las internas veo que si están bajo el control del desarrollador, la primera es cuestión de desconectarse, buscar inspiración y encontrar otros acercamientos al problema. La número cinco es normal y siempre va a suceder porque las herramientas y las técnicas van cambiando, si es obligación de que usés lo más novedoso tenés que adaptarte (no sos el único que pasa por eso) pero si te dan la posibilidad de usar herramientas y técnicas maduras que se han probado muchas veces que funcionan no hay de que temer. La última pues es normal, como bien dicen que “todos los problemas son debido a relaciones interpersonales” pues que otra, no vivimos como ermitaños.