Hoy me llegó un artículo que me pareció que se asemeja bastante a lo que pasa en muchas organizaciones. Sintéticamente el artículo escrito por Łukasz Bownik de Polonia trata sobre el lado psicológico de la programación y los programadores, cuyo título es: Las razones psicológicas de las fallas en los proyectos de software. No voy a tomar todo lo que dice el autor sino que resaltaré algunos puntos que me resultan relevantes.
Sostiene Łukasz Bownik, que la creencia común en la sociedad en general y también entre los programadores es que «los programadores son inteligentes», se basa en una suposición falsa de que programar una máquina es difícil. Pero en realidad, lo verdaderamente difícil es resolver los problemas que enfrentan los clientes, probablemente con código (es decir programando) pero no necesariamente. Estos problemas suelen ser solo parcialmente «técnicos», a menudo sociológicos, a menudo complejos, a menudo perversos. A medida que crece la complejidad del problema, el esfuerzo, la inteligencia, el conocimiento y la dedicación necesarios para resolverlo también crecen. Reconocer la complejidad, limitarla y minimizarla es el objetivo final de un programador.
Muchos programadores, dice el autor, están orientados a la tecnología. Se sienten atraídos por la informática debido a su sesgo tecnológico. Sin embargo, su trabajo no es escribir código como a menudo piensan, su trabajo ni siquiera es crear software. Su trabajo es resolver los problemas de los clientes y el software es solo uno de los medios para hacerlo. Resolver los problemas de los clientes requiere mucho más que escribir código. Principalmente requiere adquirir conocimiento del dominio para poder comunicarse con el cliente y sumergirse en el mundo del cliente para poder comprender sus necesidades. Un programador familiarizado con un dominio en particular no solo es capaz de codificar sino de crear soluciones. De lo contrario, es ciego. Un programador que es un experto en dominios es mucho más eficiente ya que puede responder muchas más preguntas por sí mismo. Muchos programadores desconocen el dominio. No les interesa. Deliberadamente se reducen a «compiladores orgánicos» porque es más fácil. No entienden que la compañía y ellos mismos pagan el precio por eso.
Algunos programadores se reclutan de la parte nerd de la población estudiantil, que presentan deficiencias en las habilidades sociales. Muchos futuros programadores eligen interactuar con las computadoras en lugar de las personas porque en esta relación son ellos quienes dan las órdenes, y las computadoras generalmente no se oponen. A lo largo de mi carrera, dice Łukasz Bownik, descubrí que la mayoría de estos obstáculos no son de naturaleza técnica sino social. Requieren desafiar a otras personas, obligarlos a salir de su zona de confort y decir «¡NO!» a un gerente, en otras palabras, requiere coraje. Muchos programadores no saben cómo lidiar con el conflicto, por lo que prefieren evitarlo agregando su parte al fracaso final.
Otra particularidad de muchos programadores es que son demasiado optimistas sobre la complejidad de los problemas con los que se enfrentan. De hecho, las metas poco realistas del proyecto, generalmente en términos de cronograma, se encuentran entre las fallas más comunes del proyecto. El exceso de confianza explica la mayor parte del mal software. (Ver el artículo completo)
Seguramente hay otras cuestiones a considerar para que los proyectos resulten como se espera, ya volveré sobre el tema.