Buscar este blog

domingo, diciembre 18, 2011

Toma de decisiones y desarrollo de software

Probablemente una de las cosas que más agota mentalmente a una persona sea tomar decisiones: recabar datos, modelar escenarios, simular, probar, imaginar, buscar, resposabilizarse, convencer... En informática esto se traduce en un agotamiento mental, que se nota al terminar una jornada, cuando has tenido que decidir cosas como:
Qué framework, tecnología y lenguaje usar, como distribuir lógicamente el código, como organizar el trabajo en equipo, como llamar a las páginas/clases/tablas/campos/variables/funciones, como almacenar los datos, como escribir cada estructura de decisión (if/while/switch/for y cual de todas usar), como organizar el interfaz, que colores poner, cual será el flujo del programa a nivel de usuario/interno, que tipo de seguridad se implementa, que pruebas realizar, como se tratan los errores, qué es un error y que no, qué navegador usar, qué tipos de datos toca en cada momento, qué partes optimizar, qué nivel de abtracción es suficiente, cuando se hacen según qué tareas (y cuales son estas), qué tiempo llevará cada hito de proyecto, qué recursos deberían usarse, qué versiones de los estándares se implementan (CSS/HTML/SQL/VB/JS...) y a qué nivel (por compatibilidad)... en fin, los afectados sabrán de que hablo. No olvidemos que cada decisión de este tipo, debe casar perfectamente con las anteriores, todo es vinculante en el código.

El desarrollo de software es, por su propia naturaleza, una tarea altamente creativa, no porque sea más cool que otras disciplinas, sino porque poco o nada puede llevarse a cabo de manera automática o mecánica (a nivel mental), dado que la principal característica de la informática es... automatizar procesos repetitivos. Y esta característica precisamente hace que cuando alguien se ha enfrentado a un problema y lo haya resuelto, puede aplicarse la solución de nuevo o adaptarla a nuevos casos (abstrayendo y reutilizando siempre que se conozca la solución, o te tocará resolver el problema de nuevo). Al final esta característica provoca que no se pueda hacer siempre lo mismo como desarrollador. Es irónico. Nunca se pueden resolver problemas típicos, porque estos ya se han resuelto. Los problemas a resolver son siempre nuevos.

Probablemente todo esto que cuento, es una de las ventajas en informática y una de las quejas comunes. Ventaja porque solo es necesario resolver los problemas una vez, y eso permite avanzar a toda máquina en cuestión de meses o años (al menos globalmente, con nuevas aplicaciones, plataformas y servicios). Queja porque siempre hay que estar aprendiendo, pensando y probando, nunca puedes “apalancarte” y muchos acaban quemados o abandonando lo que parece una carrera de ratas. Al final los que quedan, son probablemente los que más y mejores soluciones conocen (por mera experiencia) y eso debería hacerlos valiosos por encima de modas. Pero eso es otra historia.

No hay comentarios: