El verdadero entregable

Una de las cosas que mas me causa conflicto en mi profesión de desarrollador de software es la concepción de que mi entregable son lineas de código. Mientras el tiempo pasa y he ganado experiencia, me he dado cuenta que mi entregable no son lineas de código, no servers ejecutando un programa o repositorio en GitHub y el verlo de esta manera es uno de los problemas mas grandes que siento que existen en la industria de desarrollo de software en México.

La razón es que la mayoría de las personas cuando buscan implementar o desarrollar un software, ya sea como parte de empezar un startup, contratando una agencia o comprando una licencia de un software, no es por el gusto a programar, o que les agrade tener servers, es para resolver un problema del mundo real. Resolver este problema, a veces implica automatizar algunos procesos y en otros casos es para proporcionar una nueva manera de que sus empleados o clientes puedan realizar una tarea que no podrían hacer sin este software.

Para resolver este problema, es cierto que la principal herramienta es programar lineas de código que permita resolver el problema de manera sencilla y ordenada por los usuarios del software. Para esto es importante entender muy bien los temas clásicos de computer science para poder generar código optimo y mantenible que permita al proyecto vivir por mucho tiempo. Por lo cual tenemos que volvernos expertos en temas de programación, entender las buenas practicas de programación de tu lenguaje y saber en que ambiente correrá el código para que este pueda ser ejecutado de la manera correcta.

El gran problema surge cuando ponemos el crear código optimo y mantenible se realiza antes que todo lo demás y olvidamos el punto mas importante que es:

El primer paso es resolver problemas del mundo real

Para lograr este objetivo, necesitamos mucho más que practicar mucho como escribir código y como manejar servidores. Es necesario tener un enfoque mas allá de programación y de los temas tradicionales de computer science y conocer las herramientas de todas las areas que implican el desarrollar software incluyendo temas de UX para validar que el código que estamos escribiendo resuelve el problema que tenemos que resolver, planeación de proyectos para tomar las desiciones que permitan entregar una solución del problema en tiempos coherentes, y temas de manejo de equipo para que los programadores que están desarrollando el código tengan el deseo de resolver el problema propuesto.

Me gustaría que esto empezara a pasar por muchos mas lados del país. Me agrada mucho lo que ha pasado en el DF en los últimos años con la creación de muchas comunidades técnicas donde se presentan las nuevas herramientas que van surgiendo en cada lenguaje y como utilizar las herramientas populares de manera correcta. Creo que el siguiente paso es empezar a crear espacios y eventos donde podamos hablar de como dar el siguiente paso una vez que tenemos las bases de como hacer lineas de código y tener la experiencia de usar una librería o un framework para enfocarnos resolver problemas del mundo real.