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?








domingo, 12 de agosto de 2012

No, I won’t fix your computer

En mi nuevo trabajo donde recién comencé, me llamó mucho la atención la camiseta  que un compañero tiene, una camiseta negra que dice en letras medianas “No, I won’t fix your computer”. Me pareció genial por que resume algo que todos los informáticos y sobre todo los desarrolladores quisiéramos gritarles a todo aquel “amigo” que viene de vez en cuando con la típica pregunta de si le podes ayudar por que su máquina no anda bien.
Y claro, tenemos que comenzar a idear en nuestras mentes todo un plan para decir que no y quedar mal, o explicar que nosotros no nos encargamos de arreglar computadoras (apostaría que ya en estos días ni siquiera  nos molestamos en revisar nuestros propios equipos tan seguido), pero al final todo ese plan termina, al menos la mayoría de veces, en nosotros revisando esos equipos y quedando como que somos tontos por hacerlo, o como "malos informáticos" por no saber como arreglar una computadora.

Ahora, ¿En que momento nos convertimos en los técnicos personales de nuestros amigos? Sin importar si sabemos o no arreglar computadoras, si somos desarrolladores, técnicos de mantenimiento, líderes de proyectos o documentadores, si trabajas con computadoras el mundo asume que sabes repararlas y que además, tienes la obligación de ayudarles a arreglar las suyas.

Para responder esa pregunta hay que hacernos otra: ¿quien tiene la culpa? lastimosamente a mi punto de vista, creo que somos nosotros mismos los responsables de que esto suceda. Tenemos la culpa cuando por ejemplo cuando no sabemos explicar al mundo que es lo que hacemos, o cuando por que nos gusta lo que hacemos comenzamos a hacerlo de gratis a todo el que nos lo pida, y no solo arreglar computadoras, no falta incluso el que le hace algún programita de gratis a algún amigo/familiar/colega que necesita algo y terminamos trabajando mucho, ya sea arreglando un "problemita" de alguna computadora en varias horas, o haciendo ese desarrollo, o peor aún, terminamos haciendo algo mal y ganándonos el enojo de esa persona que "amablemente" confió en nosotros para pedirnos ayuda.

Y si te ríes de eso es por que te ha pasado, y si te ha pasado vos tenés la culpa, y si vos tenés la culpa pues... bueno hay que hacer algo.

Y hay que hacer algo en definitiva, por que no sos el único afectado por todo eso, no, cada vez que ayudas a alguien a arreglar su computadora o a configurar algún programa o a limpiar algún virus o lo que sea, le quitas ese trabajo a un técnico de reparación de computadoras el cual si cobra por eso y posiblemente depende de esos trabajos para vivir. Mientras que tu solo ganas un par de falsos amigos gracias a eso (o hasta enemigos si metés la pata), y nada mas.

Ahh  eso no es todo, cada vez que lo haces, también haces que las personas a las que ayudas no valoren el trabajo de los informáticos, que nos trivialicen y que piensen que todo el que estudia esto se dedica solamente o a arreglar computadoras o a hacer videojuegos (y eso que ambas áreas ya son lo suficientemente complejas como para trivializar) y peor aún, que todo lo que hacemos es fácil y que cualquier mono entrenado lo podría hacer.

Entonces que hacemos? como decimos que no? Bueno, me acuerdo una vez en una fiesta, una chica atractiva le dijo a un amigo que es muy buen músico lo siguiente: "Que bien que tocas, por que no vienes a tocar a mi cumpleaños" y el le contestó a esta chica "Muchas gracias, y si puedo, pero cobro", la chica al principio pensó que era broma pero mientras se ponía pálida por que seguramente no estaba acostumbrada a ese tipo de respuestas le dijo "en serio" y este le dijo tranquilamente "Si, de esto vivo, soy músico y acá con mis amigos tocamos por diversión y sin presiones, pero si voy a algún lugar a tocar cobro ya que a eso me dedico", la cara de esta tipa fue épica, pero todos seguimos a lo nuestro.

Por que entonces nosotros no podemos hacer lo mismo? decirles a los que nos piden ayuda decirles sin presión "No, no me dedico a eso" o "Si, pero cobro tanto por eso"?? como dije antes, creo que es por nuestra culpa. Por que no tenemos el valor para decirle eso a quien sea. Pero tenemos que hacerlo y sin miedo!! nadie regala su trabajo por que entonces vos vas a regalar el tuyo!

Cuando haces eso te jodes vos, nos joden a los demás y quedan como tontos. Así que por lo menos asegurate que si lo vas a hacer cobra de alguna manera (y por que no, si se lo hacés a alguien atractivo/a que al menos te pague en especias no) por lo menos que te inviten a comer, algo! lo que sea! pero no lo hagas de gratis!! Tu dignidad, tu bolsillo y tus compañeros te lo van a agradecer.
Pago en especias... por que no?
Así que a la siguiente que alguien te pida algo parecido trata de por lo menos tener preparada una respuesta parecida a la de No, no te voy a arreglar tu computadora!