Seres humanos construyendo software

“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” — Martin Fowler, 2008.

Mucha conversación existe sobre el futuro de la construcción de tecnología, y como en algún momento alcanzaremos la singularidad sin necesidad de alguna persona que tenga que desarrollar alguna línea de código. Se estiman tiempos de cuando podría suceder esto, gente comenta que en varias décadas o incluso unos cuantos años.

La realidad es que hoy en día el proceso de construcción de software sigue siendo demasiado humano, no sólo por el involucramiento de personas en su desarrollo, sino la dinámica entre los miembros de un equipo de software que exige un vínculo estrecho en toda las fases del ciclo de vida.

La colaboración intensiva, cohesión de equipo, y comunicación continua son ejemplo claro de la necesidad de vínculos humanos para el desarrollo de un producto digital. Incluso, por la importancia del valor que tendrá ese pedazo de software, esta misma colaboración se extiende con shareholders, usuarios, clientes, y más. Es la misma colaboración la que hace que la tecnología tenga sentido y agregue valor con otras personas.

Cada día en el que se construye software sus miembros viven la empatía de pensar que otros miembros tomarán ese código y lo seguirán programando, de que otras personas usarán esa tecnología, de que él mismo tomará ese pedazo de tecnología y lo continuará día con día y espera encontrar el proyecto en el mejor estado posible. Cada día se vive la colaboración entre los miembros, la alta cohesión de los equipos de trabajo, y la necesidad de entablar una conversación abierta sobre lo que cada uno trabaja y lo que el equipo persigue. Cada día en que se construye software sus miembros viven la humildad de escuchar a otras personas que han construido tecnología, que han aprendido, fracasado o creado algo único, y que de mantenerse con la humildad se genera la curiosidad de seguir aprendiendo al ritmo que esta misma industria que hemos creado demanda.

El perfil del desarrollador moderno tiene un balance entre la introversión de sumergirse en un estado de Flow y llegar a la solución de un problema, de manera correcta, completa y eficiente, pero toca también el mundo de la extroversión con la necesidad de trabajar en equipo y hacer algo mas grande de lo que él mismo hace. Esta dinámica demanda de estos perfiles un perfil ambivertido — híbrido en la tarea de construir de manera colaborativa productos de calidad y de alto impacto.

El desarrollo de software nos hace recordar que somos humanos, que tenemos que organizarnos para construir algo grande, de impacto y de valor. Que si no lo hacemos habrá sido una inversión grande de tiempo, esfuerzo y dinero, y que todo lo que se haya intentado hacer en términos de código, ahora queda sólo en un repositorio, porque el producto trabajado no está liberado usándose.

Si el futuro pinta para que el proceso de desarrollo esté completamente automatizado, muchos de los datos que ayudarán a que se logre serán los factores y detalles humanos alrededor de la dinámica de desarrollo de software que aún no dominamos completamente. Hoy por hoy siguen existiendo áreas de oportunidad que nos impiden que 100% del software que producimos funcione y permanezca en el mundo en el largo plazo. Temas como la “correctitud” de un grupo de funcionalidades, la “confiabilidad” del software ante los usuarios, o la adecuada priorización de backlog de producto son sólo un puñado de los muchos temas que tenemos que seguir enfrentando.

Por mas intangible que pueda ser un producto de software la forma en la que se llegará a algo tangible y en las manos del usuario final dependerá sin duda de factores humanos que me recuerdan continuamente que aún dependeremos de que personas construyan la tecnología que será usada por otras personas.