martes, 14 de diciembre de 2010

Código expresivo

Como os conté ayer, he comenzado un nuevo show que me gusta llamar "limpiemos el código que he creado". El invitado especial de hoy ha sido Enrique Comba, y tengo que decir que Aimee es una gran profesora :D Bueeeno, Enrique también es buen profe :P Ahora en serio, he estado programando todo le día con Enrique y me lo he pasado muy bien :D ¡Muchas gracias, Enrique!

Código expresivo
Lo que más me ha gustado de programar con Enrique es la importancia que le da a que el código sea expresivo. Hemos pasado mucho tiempo buscando buenos nombres y preguntándonos como conseguir que el código hablara por si mismo. Todo ese pensar, que muchas veces yo no hago :P, nos ha llevado a un código mucho más simple y entendible que el que había. No hemos conseguido terminar de limpiar, pero hemos avanzado bastante :D

Aunque siempre intento buscar nombres correctos cuando programo, hoy me he dado cuenta que soy muy vago. De hecho, comparado con Enrique, prácticamente no uso mi cerebro para pensar en el naming o para darle vueltas al código, de forma que sea más expresivo. Ojo, yo pensaba que sí que tenía cuidado, pero me he dado cuenta de que necesito ser mucho más responsable y tener mucha más autodisciplina. Para mi, no es fácil "perder" tanto tiempo intentando hacer que mi código sea lo más expresivo posible. Hoy creo que he aprendido a calmarme y a pensar bien lo que hago, aunque está claro que necesito practicar mucho.

Pequeños éxitos
Si aún no habéis programado con Enrique, os tengo que decir que es muy divertido (es un poco ganso :P ). A parte de lo mucho que sabe (he aprendido mucho sobre como refactorizar y un poco más de vi), siempre que limpiábamos algo un poco más complejo y conseguíamos que todos los tests estuvieran en verde, lo celebrábamos con un "high five" :) Parece una tontería, pero esas celebraciones son un reconocimiento al trabajo bien hecho y motivan para afrontar el siguiente cambio.

Pair programming
No es fácil hacer código que entienda mucha gente si solo trabajas tú en él. Hoy me he dado cuenta de lo importante que es tener a alguien al lado que lea lo que escribes y opine sobre ello. No he hecho mucho pair programming, por lo que no puedo comparar, pero el de hoy me ha parecido muy comunicativo. Ambas partes opinábamos sobre el código (aunque yo aveces no sabía como mejorarlo o como expresar lo que quería hacer :P) y lo íbamos "enriqueciendo", haciendolo más simple y más comunicativo. Creo que esa comunicación (feedback instantáneo sobre el código que escribes) es una de las mayores ventajas del pair programming.
Además, mientras haces pair programming es más complicado que vaguees a la hora de limpiar el código. La otra persona te puede dar un capón y ponerte en tu sitio :P

Cucumber
Respecto a los escenarios de cucumber, hemos dejado de hablar de locales y, como decía calavera en los comentarios de la anterior entrada, lo hemos cambiado por idiomas. Creo que la especificación de la funcionalidad ha quedado algo más clara, aunque puede que cuando la vuelva a leer se me ocurra otro cambio :P

Otras cosas
A parte de pasar el día programando con Enrique, que ya mola un montón, Aimee no ha dado una charla sobre como ha integrado MongoDB en su Merlin's castle :D ¿Cuanto mola eso? No se, creo que casi infinito. Tener unos compañeros así creo que no tiene precio :D

Oops, dinner's ready! Un saludo.

Actualizado: La charla sobre MongoDB la podéis ver aquí. ¡Muchas gracias por compartirla, Aimee!

5 comentarios:

  1. Hola:

    Yo tambien me siento como tu respecto al naming: me cuesta pero, creo que tengo cuidado(vamos eso creo yo ;-P)
    ¿puedes dar alguna clave de lo que has aprendido hoy para tener mas cuidado y disciplina, como tu dices?

    Un saludo
    Amalia

    ResponderEliminar
  2. Pues no lo se, creo que tener un compañero exigente :)
    Algo que creo que podemos intentar si estamos solos es no añadir nueva funcionalidad hasta que estés contento con el código, y como decía Javier en uno de sus tweets, "programa como si el siguiente que tuviera que tocar tu código fuera un psicópata violento que sabe donde vives :P
    En serio, no se si os pasa a vosotros, pero yo, a veces, cuando no consigo encontrar un buen nombre tras haberlo pensado un rato pongo uno no muy malo y sigo para alante. Pues intentar evitar eso es a lo que me refiero cuando hablo de responsabilidad y autodisciplina...

    ResponderEliminar
  3. I'm so glad you had a good day pairing with Enrique. I think it's important to pair with many different people, as everyone will have different ideas to contribute to making the code the best it possibly can be.

    I was very impressed to overhear you both speaking in English today. It's great that you are making such an effort.

    Thanks for mentioning my tech talk and linking to Merlin's Castle! :)

    ResponderEliminar
  4. No hay nada mejor como programador que la satisfacción de hacer código que se entienda "sólo" con leerlo.

    Yo creo que como desarrollador se pasa por varias fases, primero tu preocupación es casi exclusivamente que la cosa funcione, cuando más o menos superas esto empiezas a preocuparte por hacer buenos diseños (solid, diseño simple, patrones...), y después empiezas a intentar, no siempre conseguir, hacer código expresivo.

    La mayoría se quedan en la primera fase y gracias, otros como el tio peña se van al extranjero para intentar mejorar en lo segundo y en lo tercero, that's the diference.

    ResponderEliminar
  5. Hola Alberto, tu post me recuerda un caballo de batalla que tengo con mis compañeros: el pair programming.
    Todavía no he conseguido convencer a la mayoría de mis compañeros de que el pair programming aumenta la productividad, y por lo tanto, convencerlos de que lo practiquen.
    Tu post me recuerda una ventaja muy importante del pair programming: conseguir código expresivo. Si programas sólo es muy difícil conseguirlo. Si programas con una pareja, estas forzado a ello ya que tu pareja tiene que entender tu código.
    Ahora sólo me queda convencerlos de que el código expresivo es necesario...
    Nada, a seguir aprendiendo, pero sobre todo diviértete.

    ResponderEliminar