miércoles, 12 de septiembre de 2012

El Config Freak

Hace un tiempo era normal ver al típico desarrollador al que incluso sus compañeros conocían como "code freak", aquel típico programador que prefería hacer todo su código en notepad sin importar el lenguaje que fuera o que herramientas tuviera a su disposición, compilaba desde consola y conocía de memoria todos los comandos necesarios para hacerlo, junto con cualquier parámetro que pudieran necesitar. Ojo, si no tenías un compañero que hiciera eso de seguro tu eras el coder freak de tu equipo.

Ahora eso es menos común al menos en ambientes laborales donde los proyectos informáticos han llegado a ser de tamaños inimaginables casi en cualquier industria, donde un simple sistema de gestión de clientes puede llegar a requerir grandes equipos de desarrollo junto con sus respectivos project managers, tech leaders, gerentes y hasta aguateros. Es difícil imaginar un proyecto de 2000 clases escrito en notepad.

Sin embargo debido a la creciente complejidad de estos proyectos ahora parece haber surgido una nueva moda: El "config freak guy", que es nada mas que lo que dice el nombre, un tipo dentro de tu equipo que está loco por las configuraciones del proyecto, que es el que ves bajando maven, configurando todo en xml o en archivos properties, que conoce todas las librerías que se han usado en el proyecto (que muchas veces las bajo solamente las bajo el, configuró y usó) y todos los pasos secretos necesarios para hacer un deploy exitoso en el servidor que sea, llámele weblogic, IIS, apache, o esos servidores que nadie conoce a excepción de el.



Y claro, es común ver que si este tipo falta al trabajo, cosa muy rara ya que igual que los antiguos code freaks nunca se enferman y aunque lo hagan prefieren pasar cualquier angustia antes de faltar al trabajo, pero si lo hacen nadie mas tiene idea de como hacer andar las cosas. Muchas veces no se puede ni realizar un deploy de desarrollo o una depuración sin que este tipo mueva sus palancas y apriete esos botones que solo el conoce.

Pero que pasaría si este tipo no estuviera en el proyecto? pues seguramente los demás desarrolladores hubieran buscado alguna otra forma de hacer las cosas, quizá en lugar de configurar ese ORM de última generación y esa capa de administración de webservices o ese robot automatizado para pruebas unitarias, mejor hubieran creado algunas clases que hicieran nada mas lo que necesitaban, quizá no tan eficientemente o tan correctamente como debería de hacerlo pero lo hace. Está bien esto?

Entramos en otra duda que vendrá para otro post, conviene programar correctamente o rápidamente? que es programar correctamente? como debe de ser la arquitectura de tu sistema para que cumpla con lo que se necesita? Por que configurar en xml en lugar de programar?

Bueno, la ultima pregunta quiza tenga varias respuestas, por ejemplo muchos pueden argumentar que tener la configuracion centralizada es una buea practica. En parte estoy de acuerdo, pero tampoco es mucha gran ayuda si es una configuracion que no puede ser cambiada nada mas que por los desarrolladores. Viene a ser nada mas como una separacion de codigo, codigo por aca, xml por alla, y al final se vuelve nada mas un paso adicional en el desarrollo que muchos terminaran saltando con tal de programar rapido.

Pero entonces?? cual es el punto de este post? pues no es decir que ser un config freak este malo, tampco que ser un code freak este bueno. Quiza lo mas que puedo sacar es que simplemente no hay que preocuparse tanto por temas que no tienen que ver con el negocio a menos que en serio valga la pena, esto aplicaria a patrones de diseño, configuraciones, codigo bonito, e incluso rendimiento en muchos casos entre otros aspectos mas.

Seria genial tener un framework que se encargara de todo eso de antemano (librerias mas usadas,  facil configuracion en desarrollo y en tiempo de ejecucion para desarrolladores, administradores e incluso usuarios y otro "glue code" o trabajo lateral)sin agregar mas complejidad al proyecto no? alguien conoce alguno?