26/3/12

La complicación de lo simple


     Los grandes problemas, al menos en informática, suelen tener origen en la más insignificantes tonterías. Esto no es más que una teoría que, a estas alturas, debería tomarse como una ley porque nunca falla (al menos, a día de hoy, aún no he visto la excepción que lo confirme).
     El nuevo y flamante fichaje (Suri) es, al menos en teoría, un experto en desarrollo web. Conoce una interminable lista de lenguajes y es especialista en PHP (esto, visto lo visto, es pura teoría).
     Hace cosa de 2 semanas recibimos una incidencia en una página que había hecho yo. Como estábamos un poco liados terminando una aplicación, Yolosé le encargó a Suri la sencilla misión de arreglar la página. Como la había hecho yo me ordenó que le explicase por encima cómo funcionaba.
     Siguiendo las órdenes de Yolosé, le expliqué a Suri cómo estaba organizado el código y le pasé el esquema de la base de datos (no le iba a hacer falta, pero seguro que le viene bien para el futuro). Para facilitarle más las cosas le dije en qué archivo estaba el fallo que tenía que arreglar.
     Después de 10 minutos explicando a fondo el funcionamiento de un botijo decidí que era el momento adecuado para dejar que el pequeño pajarillo saltase del nido e intentase volar. Volví a mi puesto y continué haciendo un par de módulos "para ayer".
     Era una mañana de paz y tranquilidad. No había ruído alguno que molestase (cosa tremendamente extraña). Creo que Gothmog tenía un buen día porque lo único que dijo a todo el mundo a lo largo de la mañana fue "buenos días" y lo hizo con una voz digna de un ser humano. Yolosé estaba enfrascado en una acalorada discusión interior con el compilador. Yo estaba con mi gran amigo Google buscando unos códigos de error que no había visto en mi corta vida y las descripciones que daba el compilador eran serias candidatas a aparecer en un libro de criptografía avanzada. Suri, en cambio, estaba dando saltos de alegría; por fin le habían dado un trabajo con el que se sentía realmente cómodo y sonreía.
     El tiempo pasaba y el trabajo iba viento en popa. Un par de llamadas telefónicas le devolvieron a Gothmog su mal humor habitual así que la tranquilidad duró poco. Sin embargo, mi paz interior seguía intacta.
        - Cobolero, estoy cambiando un método de la clase Producto y... - mi paz interior también duró poco.
        - Antes de que sigas: ¿por qué has tocado una clase que funciona y que no tiene nada que ver con lo que tienes que arreglar? - Yolosé se pone alerta y decide intervenir.
        - Suri, haz el favor de hacer sólo lo que se te dijo que no estamos para perder el tiempo.
        - ¡Pero esto está mal! - me levanto y voy a su sitio.
        - Bueno, dime. ¿Qué es lo que está mal? - me señala el método get_id().
        - Hombre, ese método funciona. De hecho se suele usar cuando se hacen los pedidos y nadie se ha quejado nunca de que le llega lo que no ha pedido.
        - Ya, pero yo también quiero que me devuelva el nombre y el precio.
 

        - Para eso están las funciones get_nombre() y get_precio().
        - Ya, pero si le meto todo aquí y devuelvo un string... - no le dejo continuar.
        - ...tendrías que arreglar todas las funciones donde aparezca ese get_id() o la aplicación se va a la mierda. - Suri se queda mirando para la pantalla mientras procesa la información. Parece que se ha convencido.
        - Venga anda, termina esto llevan más de una hora parados y ya debería estar.
     Después de explicarle a un experto por qué no es buena idea devolver algo más que la id en un get_id() decidí que era buen momento para ir a tomarme un cafecillo. Pregunté a mis compañeros si querían que les subiese algo. Todos rechazaron el ofrecimiento salvo Gothmog que me pidió un bocata de corazón humano. Una flecha orca clavada en la pared a escasos centímetros de mi cabeza me convenció de que no había sido buena idea decirle que ya no se vendían.
     Cuando volví de la cafetería noté que el ambiente estaba un poco tenso. Pensé que Gothmog le habría intentado arrancar el corazón a Suri. Como nadie me dijo nada seguí a lo mío.
     Los días fueron pasando. Yolosé y yo nos quitamos de encima los marrones "para ayer" y, como nos aburríamos, mi estimado jefe decidió que era hora de cambiar el aspecto de una aplicación entera. Esto no es un cambio difícil, pero sí muy tedioso. Se decidió que el honor de efectuar dichos cambios debía recaer sobre mi persona.
     Después de un par de días realizando el trabajo casi más aburrido de la historia (sigue de cerca a observar una pared mientras se seca la pintura) Yolosé le preguntó a Suri en qué estaba trabajando. La respuesta fue un como un bofetón con un bloque de cemento:
        - Sigo con lo de la web. - Yolosé y yo tuvimos la misma reacción:
 

        - ¿PERO AÚN SIGUES CON ESA MIERDA? - la cara de mi amado jefe era un poema. El odio que emanaban sus ojos era comparable al de Gothmog después de 1000 días sin probar la carne humana.
        - Si, es que es muy difícil. ¡De verdad! - Suri intentaba poner cara de cordero degollado en un intento de ablandar el corazón de Yolosé. A simple vista parece que lo consiguió.
        - Mira, siéntate al lado de Cobolero y que te diga cómo se hace. Cobolero, esto tiene que estar hoy y sin excusa alguna. - Suri se acerca apesadumbrado a mi mesa, coge una silla y se sienta.
        - Todo por la horda...Suri, atiende. - entro en el servidor, descargo la última copia de seguridad (miedo me da lo que haya tocado este hombre), busco el archivo a modificar y lo abro. Busco la línea apropiada y golpeo varias veces Enter.
     Suri está muy atento a todo lo que hago. También existe la opción de que sepa disimular muy bien y tenga bien entrenada la cara de concentración. Para salir de dudas no dejo de mirar su cara por el rabillo del ojo mientras voy tecleando.
     Pongo el cursor en el hueco que había hecho previamente y empiezo a escribir: if((empty($i) || ($i==0 )) { blabla; blabla; bla; }. Guardo. Los ojos de Suri empiezan a abrirse de tal modo que empieza a parecerse más a un dibujo de comic que a una persona. Hago una prueba. Funciona. En la boca de Suri podría aparcar un camión. Hablo disimuladamente con el.
        - Oye tío, ¿dónde estabas tocando?
        - Yo...es que...
        - Tranquilo hombre, que no voy a decir nada.
     Me empezó a relatar su lista de cambios. Nada menos que 2 clases nuevas, 8 funciones a mayores y cambios en 3 clases existentes. A esto, en algunos círculos, se le llama hinjenieria habanzada.
        - Oye Suri, si te dije dónde hacer el cambio debiste hacerme caso. Y si tienes dudas pregunta.
        - Pero yo creía que lo estaba haciendo bien...
        - Hombre, todo el trabajo que hiciste y que no funciona lo suplí por 5 líneas...y funciona.
     Suri está perplejo. No entiende que reinventar la rueda es una tontería. Yolosé lo saca de su ensimismamiento para darle una gran noticia.
        - Suri, ahora vas a terminar lo que está haciendo Cobolero. Cuando termines hay 2 aplicaciones más a las que hay que cambiarles el aspecto. Cobolero, explícale cómo se hace.
     Todavía escucho a la voz interior de Suri gritando "¡NOOOOOOOOOOOOOOOOOOOO!"

17/2/12

Gothmog


     Gothmog es la subjefa de la oficina. Es una mujer metódica, trabajadora y eficiente. Como contrapunto he de decir que tiene los mismos modales que un orco. Tiende a hablar entre dientes, con un tono de voz ronco por lo que parece que hable en un dialecto orco.
     Tiene un carácter abrupto y cuando se enfada puede, incluso, aparentar ser un uruk-hai; sin embargo esto es pura fachada y lo hace, simplemente, para sentirse respetada dado que Yolosé tiende a llevar la voz cantante. Esto que hace que quede relegada a un segundo plano y es algo que no le gusta.
     Otra de sus cualidades es la tozudez. Esto conlleva que no da su brazo a torcer, tenga o no razón lo que genera situaciones absurdas, por lo menos, una vez a la semana. Sin ir más lejos hoy ha hecho alarde de su tozudez por todo lo alto.
     Ocurre que en la oficina trabajamos de una manera bastante rudimentaria. No usamos sistema CVS ni nada así (bueno, gracias a MEV se hacen copias de seguridad diarias) por lo que cuando se hacen modificaciones en algún programa el protocolo a seguir es hacer una copia, trabajar sobre ella y, si todo va bien, se reemplaza y se despliega. El motivo para hacer esto es que si llega una incidencia se puede arreglar lo que haga falta y desplegarlo al momento.
     Al terminar un cambio, a parte de las pruebas pertinentes, el programa pasa por un "control de calidad" que normalmente lleva a cabo Yolosé. A falta de Yolosé se puede suponer quién hace el control de calidad.
     Me mandaron hacer un cambio bastante simple en una pantalla de pedidos. Básicamente el trabajo consistió en meter un par de rejillas con sus correspondientes formularios (copia aquí, pega allá y adáptalo). Despues de terminar pasé aviso a la dirección, me encargaron otro trabajo y a otra cosa! O eso pensaba yo...
     De pronto tambores de guerra empezaron a sonar en el este. Acompañando los tambores el vientro traía sonidos prácticamente ininteligibles de los que logré entender "increíble" y "esto no puede ser". De hecho los cinco minutos siguientes sólo se podía escuchar crecientes rumores. En esto un grito me saca de la pantalla.
        - COBOLERO! ¿Por qué dices que está terminado cuando no has hecho nada?
        - Gothmog, no es por mal pero deberías revisar...
        - ¡Estoy revisando y por eso te digo que aquí no hay ningún cambio hecho!
     Mi cara de asombro dura muy poco; algo huele tremendamente mal y sospecho lo que es. Me levanto de mi silla y me acerco al escritorio de Gothmog con aire despreocupado. Miro a su pantalla, concretamente a la barra de tareas, y veo que hay abierto un directorio. Sonreí.
        - Oye Gothmog, no es por mal pero...
        - ¿Pero qué? ¿No ves que no hay cambios hechos? ¡Si aún querrás llevar la razón!
        - Pues verás, no es que lo quiera llevar, es que la tengo. - Me intenta cortar pero continúo y, de paso, aprovecho para robarle el ratón – Verás, normalmente antes de hacer cambios hago una copia con el nombre "COBOLERO" así en mayúsculas para que se vea bien. ¿Me puedes explicar qué te llevó a pensar que los cambios que hice estarían en el directorio "gothmog"?
     Click, doble click, doble click, generar proyecto. Ejecuto el programa. Gothmog está pálida.
        - Y digo yo, vale que un despiste lo tiene cualquiera pero ¿no hubiese sido más simple que preguntases en su momento en vez de pasarte rosmando cinco minutos?
     Menos mal que me sobra la paciencia...

12/2/12

Yolosé


     Yolosé es mi jefe. Es tipo enjuto, apocado, rácano y con una personalidad un tanto rancia. Con una falta total de tacto o paciencia (cosa incomprensible teniendo en cuenta que es él quien trata con los clientes la mayor parte de las veces). Pese a esto, es un hombre muy trabajador, lo que le lleva a deslomarse para cumplir los objetivos que se propone (personalmente, me parece una actitud loable).
     Desgraciadamente, su condición de jefe a veces se le viene grande. Esto conlleva que siempre quiere llevar la razón aunque no la tenga, lo cual provoca situaciones, como mínimo, cómicas y, eventualmente, surrealistas.
     Esta semana ha sido de las duras, y además de una buena cantidad de trabajo, Yolosé estaba altamente inspirado.
     Todo se empezó a gestar el lunes a primera hora de la mañana tras una discusión bastante potente con Gothmog. Además, está enseñándole a Suri, mi futuro sustituto, el nuevo lenguaje en el que debe empezar a trabajar. Pese a que pone todo lo que puede de su parte, tanto el cambio de paradigma, como la falta de paciencia del jefe, hacen que el aprendizaje se le haga un poco cuesta arriba, cosa que, por momentos, crispa a Yolosé hasta límites casi inhumanos. Estos dos hechos han provocado que Yolosé arrastre el mal humor a lo largo de toda la semana...y eso provoca que diga más tonterías de lo normal.
     Pese a que soy programador, algún hado del destino quiso que Yolosé me encargase el viernes pedir un par de PC's, un switch y cableado. Recibidas las órdenes me puse manos a la obra: es algo tan simple como mirar la página de una empresa afín, que es la que normalmente nos hace las instalaciones, en busca del material. Una vez escogidos le envío un mail a Yolosé con las referencias a pedir, cantidades, precios y demás. Veo que pone cara rara...
        - Oye, Cobolero. Esto no está bien.
        - ¿Más concretamente? ¿No te gustan los ordenadores o no te gusta el switch?
        - No, no es nada de eso...¿para qué mi**da quieren cables de red UTP categoría 6?
        - Hombre, llevan un switch gigabit y unas tarjetas de red gigabit...
        - ¿Y qué tendrá eso que ver? - esta respuesta sí que no me la esperaba.
        - Hombre, Yolosé, con un categoría 5 no van a ir a gigabit.
        - Porque lo digas tu.
        - ...bueno, pues ponles cableado del 5.
     Gracias a MEV tengo un fin de semana para olvidar esta conversación...

7/2/12

DISPLAY "Hola mundo..."

Esto es una declaración de intenciones.

   Empiezo hoy este blog con un objetivo simple: voy a intentar montar este blog para contar, en tono cómico, las aventuras y desventuras que me ocurren y me ocurrieron a lo largo de mi carrera profesional. En gran medida lo hago porque lo que escucho, muchas veces, merece ser relatado para la posteridad. Además, hay días que me aburro...
   Soy programador pero, en mi actual puesto de trabajo, también tengo que atender a una amplia variedad de lusers con una amplia variedad de idioteces almacenadas en sus mentes y deseosos de relatárselas al informático que les atiende.
   También relataré hechos sobre mis compañeros de trabajo. He tenido la suerte de trabajar, mayormente, con gente capaz pero también he tenido la desgracia de trabajar con gente que...bueno, ya haré algún post sobre todos ellos.
   En ocasiones me será difícil dejar a algún jefe de lado en transcurso de estas historias. De hecho, algún jefe será el protagonista principal e indiscutible de algún post.

   Sin mucho más que añadir, por ahora, me despido.

Gracias a los que leáis este blog, y gracias a los que, de una manera u otra, me apoyáis y aguantáis día a día.

Fdo: Cobolero.