martes, 7 de diciembre de 2010

Hammock Driven Development

Ya os conté que una de las cosas que más me han gustado de Eden (y que más sencillas me parecen) es la parte de la reunión diaria en la que se habla de las cosas interesantes que ha descubierto la gente. Hoy, Steve nos ha contado lo interesante que le había parecido esta charla. Nos ha convencido de que merecía la pena verla y hemos quedado en proyectarla a la hora de la comida.

No es una charla técnica, es más bien "filosófica", así que no tenéis excusa para no verla :P

De todas formas, como tengo que escribir algo :P, voy a explicar algunos de los puntos que he sacado en claro tras la discusión que hemos tenido en Eden después de verla.

Hammock driven development
Básicamente, la idea central de la charla es como mejorar nuestra habilidad para resolver problemas. Hay una transparencia muy aclarativa en la que Rich Hickey, el creador de Clojure, nos recuerda que, si no estamos resolviendo un problema, para que demonios estamos trabajando (dentro del contexto del software). Además, se centra mucho en la importancia de entender el problema de forma global, no solo en el ámbito técnico.

Pensar y reflexionar sobre el problema
Nada más empezar, Rich nos hace una pregunta

¿Cuanto hace que no piensas en un problema durante toda una hora? ¿Durante todo un día? ¿y durante un año?

No se vosotros, pero yo no me paro a pensar "demasiado" en el problema ni en su por qué. Intento buscar una solución lo antes posible. Esta charla me ha recordado que lo importante no es la solución, es entender el por qué (a lo mejor no hace que busques una solución porque realmente no existe un problema). Me lo apunto como "a mejorar" :)

Además, ese pensar en el problema va a hacer posible que tu cerebro asimile que es importante y trabajará en "background" en ello.

¿El cerebro trabajando en background?
A lo que se refiere el autor con esto es al trabajo que realiza tu subconsciente mientras, por ejemplo, duermes (De ahí lo de hammock driven development, que es algo así como desarrollo dirigido por hamaca :D )
Rich deja claro que la charla no es un estudio científico ni nada de eso, así que no os lancéis como leones :P pero, ¿Nunca os ha pasado eso de encontrar la solución mientras dormías?

Enfocarse en profundidad en el problema
Esto implica pensar en el problema sin distracciones (nada de twitter, mail, teléfono, etc), es decir, hay que separarse del ordenador (suena duro, ¿no?). Para nosotros, los ordenadores son nuestra herramienta preferida para la procrastinación y el desenfoque, así que, en los momentos en los que se está enfocado en el problema, hay que intentar dejarlos a un lado.

Anotarlo todo
Personalmente, una de las cosas que más me ha chocado de la charla es que hace mucho hincapié en anotar todo lo que vamos descubriendo del problema. La razón principal es para no olvidar los detalles que ya se han descubierto. No se mete en como tienes que escribirlo, simplemente te aconseja que lo anotes.

No dejéis de ver la charla, es mucho mejor que mis notas :D

Un saludo

lunes, 6 de diciembre de 2010

¿Lunes? Menudo lunes

Es increible la cantidad de cosas que han pasado hoy en Eden :D
Tengo tarea nueva, hemos hablado de Eden Madrid, he asistido a una planificación de release, nos ha visitado un desarrollador de la zona y, por si fuera poco, el Agile South Coast User Group se ha reunido en nuestras oficinas (sí, nuestras, que yo también soy de Eden :P)

Nueva tarea semanal
Tengo que traducir al español la página de Eden :D En realidad lo que tengo que hacer es internacionalizar la página, porque en un futuro quieren poder traducirla también al alemán o al frances.
La web de Eden está hecha con sinatra y utiliza haml para las vistas. No tenía ni idea de lo que eran ninguna de esas dos palabras, así que la mañana la he pasado entendiendo la tecnología y buscando como internacionalizar aplicaciones que usan sinatra. La solución que he encontrado es utilizar r18n.
Tras una horita haciendo un spike para entender el funcionamiento tanto de sinatra como de r18n tengo que decir que ruby te hace la vida muy fácil :D No se que demonios hacía programando en java :P
Una vez descubierto cómo internacionalizar Eden, Spencer me ha hablado de la usabilidad de la web y de como puede afectarle el que esté disponible en varios idiomas.
¿Queremos que si vienes de España te aparezca la página en español? ¿Vamos a dar la poibilidad de elegir el idioma en el que mostrar el texto? En fin, una serie de preguntas de las que hemos sacado en claro que, aunque de primeras te aparezca en el lenguaje indicado por tu browser, debemos permitir seleccionar el idioma (aunque aún no sabemos como lo vamos a hacer).
De momento lo único que he conseguido es obtener la preferencia de idioma del navegador que consulta la página, mañana ya me meteré a fondo con la internacionalización de la página.
Otro problema que aún no he pensado como resolver es el de las pruebas. No estoy seguro de como montar las pruebas para probar la i18n.

Por si os interesa, he tenido que pelearme con unas expresiones regulares y Spencer me ha recomendado esta web. Me ha parecido super útil :D

Eden Madrid
Mas tarde, a las 13:00 nos hemos reunido para hablar de Eden Madrid. La idea era que los edenites decidieran si querían o no embarcarse en el proyecto Eden Madrid. Como siempre, ha sido una discusión abierta (incluso a los que venían de visita, a los clientes, etc) y honesta, en la que cada persona a expresado sus dudas.
Sin duda alguna, me quedo con lo que se preocupan por su empresa :) Está claro que les gusta.

Aunque la reunión ha sido muy reveladora, el resultado de la reunión no ha sido el esperado porque no se ha podido responder a las dudas planteadas. Dentro de una o dos semanas habrá otra reunión con algo mas de información y de la que quizás se salga con una decisión. Os mantendremos al tanto :)

Una de las dudas que han aparecido es si hay mercado en España para Eden (training, coaching y proyectos)y, si lo hay, cuanto tardarían en encontrar un cliente. ¿Vosotros que pensáis?

Release planning
Después de la comida (sí, la reunión de Eden Madrid la hemos hecho mientras omíamos) he participado en una release planning con uno de los clientes.
Ha sido una conversación muy interesante en la que el cliente ha demostrado un grado de madurez muy alto, eliminando de la release las features que menos valor le iban a aportar y contestanto muy tranquilamente a todas las preguntas y observaciones del equipo (era una colaboración con el cliente de las de verdad) e incluso de fuera del equipo (nuestro visitante).
Me ha parecido un product owner al que le importaba de verdad su producto.

Visita de uno de los desarrolladores de la comunidad
Russel, uno de los fundadores de la Winchester Web Scene, ha estado hoy de visita y ha sido algo un poco espectacular. Ha trabajado con Aimee durante casi todo el día pero, lo mejor de todo, es que ha intervenido tanto en la reunión sobre Eden Madrid como en la release planning. Nadie se ha soprendido, salvo yo, y todo el mundo le ha tratado como a uno más. Se nota que están acostumbrados a este tipo de visitas.

Reunión del grupo Agile South Coast
Ha sido una reunión un poco extraña. Parece ser que el grupo está en horas bajas y esta debía ser una reunión "refundacional". De los regulares solo ha aparecido uno, el resto eramos un CSM que acudía a su primera reunión y la gente que estábamos en Eden.
No hemos hablado de nada ágil, pero tengo que decir que me ha impresionado mucho como han llevado el tema los edenites. En todo momento han sido constructivos, pero nunca condescendientes. Ha sido una demostración de como intentar revitalizar una reunión y, sobre todo, como revitalizar un grupo. Todos han intentado buscar soluciones, dejando a un lado toda la parte de buscar culpables y no aceptando justificaciones que no eran pedidas.


Esto es todo por hoy. Como veis, en Eden no tienes tiempo de aburrirte :) Animaos a venir de visita, esto tenéis que verlo por vosotros mismos :)

domingo, 5 de diciembre de 2010

Los valores de Eden

En una de las paredes de Eden hay pegada una tarjeta con una frase que resume qué es Eden:

Eden exists to enable people to achieve better, greater, more worthwhile things
Eden existe para permitir a las personas conseguir cosas mejores, más grandes, que valgan más la pena

No se a vosotros, pero a mi me gusta mucho :D

Como os he contado en las anteriores entradas, Eden se guía por una serie de valores que todos los "edenites" entienden, comparten y cumplen. De hecho, dichos valores los han decidido entre todos, como hacen con todo lo demás :D Todos los valores de Eden están relacionados con esa frase.

We build relationships (Construímos relaciones)
Eden no solo se preocupa de construir software. Además, se preocupa de construir relaciones de total confianza con sus clientes. Tienen claro están dejando en sus manos su reputación y su medio de subsistencia.

Por supuesto, también se preocupa de las propias relaciones entre "edenitas". De hecho, lo que más vas a ver en Eden son sonrisas :D

We have a mindset of mutual respect (Tenemos una mentalidad de respeto mutuo)
Esto es muy importante en Eden. Puede que existan diferencias de opinión, pero nunca se pierde el respeto hacia la otra persona.

De verdad, es alucinante. En estos 5 días no ha habido ni una sola falta de respeto entre "edenites", y por falta de respeto me refiero incluso al típico chascarrillo español en plan "será cabrón :)". Sí que lo he visto por ejemplo por parte del cliente, y también he podido comprobar como los "edenites" lo han cortado de raíz con un toque de atención.

We ask "why?" (Preguntamos "¿por qué?")
Eden quiere añadir valor al negocio de los clientes, por lo que necesitan tener claras sus motivaciones.
Lógicamente, si es bueno para un cliente, también es bueno para Eden. El nivel de exigencia que tienen les hace cuestionarse sus motivaciones con el objetivo de mejorar.

We craft excellence (lo hacemos de forma excelente)
Eden es un equipazo. Son gente muy buena en su trabajo y muy responsable. Dicha responsabilidad les lleva a entregar sólo código excelente. Si la funcionalidad no está al nivel que ellos mismos se exigen, no se entrega.

We are disciplined (Somos disciplinados)
No son disciplinados en el sentido de cumplir órdenes, son disciplinados en el sentido de ser responsables. Prefieren arreglar la raiz de los problemas antes que parchear los sintomas.

We learn aggressively (Aprendemos de forma agresiva)
Todos los miembros de Eden sienten pasión por su profesión y están continuamente aprendiendo (nuevos lenguajes, nuevas técnicas, etc.) y compartiendo lo aprendido con el resto.

We give generously (Damos generosamente)
Eden es realmente generosa. Se involucran con las comunidades (no solo con las relacionadas con el software), aceptan visitas, promueven actividades, etc.

Si se monta Eden en Madrid entenderéis mejor a que me refiero. Nos lo vamos a pasar piruleta :D

We value people (Valoramos a las personas)
Eden no permite que los proyectos y sus fechas de entrega entren en conflicto con la vida personal de los "edenites". Además, fomentan actividades que refuercen las relaciones personales entre los "edenites" (como por ejemplo la proyección de Avatar del otro día)

Tengo que decir que todo esto sale de forma natural. En ningún momento se "fuerza la amistad". Simplemente son buenas personas juntas en una oficina :)

We are honest and open, even when it's hard (Somos honestos y abiertos, incluso cuando es duro)
La confianza entre todo Eden permite una honestidad brutal. Si algo no gusta, se dice, aunque cueste.

Realmente, en la semana que he pasado con ellos la única vez que se dio un toque de atención fue para intentar mejorar la dinámica de trabajo de un equipo cliente. No fue gratuito, fue necesario, y el equipo cliente lo aceptó y reconoció el problema.

We are humble (Somos humildes)
Eden es humilde y los "edenites" son humildes. Saben que son muy buenos y que hacen las cosas muy bien, pero también tienen claro que aún pueden mejorar (Aunque yo ahora mismo no veo como :D ).


Eso es todo, ¿Qué os parece? Espero que esto os de una idea del tipo de compañía que es Eden (o lo que yo entiendo que es Eden), aunque realmente es mucho mejor :) En serio, tenéis que comprobarlo por vosotros mismos. Este tweet de Luismi Cavallé resume bastante bien como me siento después de esta semana :D

viernes, 3 de diciembre de 2010

Mi primera presentación en Eden

Como parte de mi internship en Eden cada semana tengo que dar una charla al resto de la compañía. La primera ha consistido en explicar como he desarrollado el PlageServer.

Qué es PlageServer
Ya os lo he contado en varias entradas. PlageServer es mi primera tarea en Eden. La idea era implementar un servidor web capaz de aceptar peticiones y devolver respuestas que cumplan la rfc2616.
Aunque no he conseguido terminarlo, si que me ha dado tiempo a completar la operación GET. Si queréis ver el código lo tenéis en github.

La presentación
Teníamos fijada la presentación para las 15:00 y, aunque no os lo creais, a las 14:50 estaba tan tranquilo en uno de los sofás de Eden. Normalmente me pongo muy nervioso cuando me toca hablar, pero hoy no ha sido así. Mis compañeros me han dado mucha confianza durante toda la semana y me siento bastante integrado, lo que me ha permitido relajarme y disfrutar :D Tampoco os penséis que gracias a eso la presentación ha sido perfecta. Me he liado tanto con el idioma como con el código en sí :D No ha sido un desastre, pero he ido demasiado rápido y creo que ha sido un poco confuso.

Una vez terminada la exposición, mis compañeros han comentado el código. Ha habido de todo, desde que era un código más o menos limpio hasta que era una mezcla entre OO y programación estructurada :D
Realmente, creo que podría haberlo hecho mucho mejor (sobre todo ahora que ya se hacerlo mal :P).
No se si os pasa a vosotros, pero hay un momento en el que el código se me va de las manos (y eso que hago TDD). Creo que tiene que ver con los test que defino. Puede que esté dando pasos demasiado grandes.

A pesar de todo, mis compañeros me han felicitado con un "well done" :D ¡Muchas gracias!

Feedback semanal
Una vez terminada la presentación y la ronda de preguntas/observaciones, le ha llegado el turno al feedback semanal.
Por un lado, mis compañeros me han contado como se sienten conmigo por allí. Valoran el que haya venido desde España, dejando mi trabajo y a mi pobre novia (a la que, por cierto, le dedico este post :D ) y se sienten cómodos conmigo :) Eso sí, tengo que intentar dejar la timidez en casa.
Por el otro lado, yo les he dicho como me siento con ellos. ¿Os imagináis mis palabras? Las podéis leer aquí :) También les he comentado que quiero programar más con ellos. Esta semana no hemos podido por varios motivos (gente enferma, nieve bloqueando las carreteras, etc) y quiero aprender de ellos :D

Resumiendo, todo va bastante bien. Estoy disfrutando como un enano de la experiencia y espero que se note en estas entradas :)

¡Un saludo a todos!

jueves, 2 de diciembre de 2010

Nevando a tope

Os pido disculpas de antemano porque la entrada de hoy va a ser muy cortita :( Intentaré redimirme el fin de semana.

Que bonita es la nieve
Hoy ha sido un día extraño en Winchester. Anoche nevó mucho y nos hemos levantado con unos 20 centímetros de nieve. Eso ha provocado un mini caos en la ciudad debido al cual solo hemos podido ir al taller tres personas de Eden (Enrique, Aimee y yo) y los cuatro compañeros que están por parte del cliente :S Cuando nos hemos querido poner a trabajar nos hemos dado cuenta de que no funcionaba internet, no sabemos por qué. El proyecto del cliente lo necesita (skype para pair remoto, consultas de documentación, etc), así que nos hemos bajado a trabajar a un café cercano que tiene WiFi :D Este tweet sirve como prueba. A la hora del almuerzo, el equipo del cliente ha decidido irse a Londres para evitar problemas con los trenes, lo que ha dejado a Aimee y Enrique compuestos y sin novio :P Esto nos ha llevado a adelantar la proyección de Avatar (edición de coleccionista), por lo que, aunque la película mola, no hemos trabajado demasiado :P
¿Os lo había contado? El otro día planeamos ver Avatar en Eden :) Otra de esas cosas que crean relaciones personales y que tanto se dan en Eden :)

Avances en el PlageServer
Mañana tengo la presentación del PlageServer y no va del todo mal, aunque quiero darle un repasillo esta noche. Tengo algún problema con los require que provoca que cucumber no funcione, pero he conseguido terminar el GET :D Además, es posible que mañana antes de la presentación pueda tener el post también terminado. No está mal para no tener ni idea de Ruby y Vi (que por cierto, le estoy cogiendo el gustillo :P A ver si me animo y os escribo algo) Personalmente creo que el código no ha quedado del todo mal, aunque seguro que mañana me darán caña a tope (eso espero) :D Si tenéis ganas, también podéis criticarlo vosotros en los comentarios o por twitter :)

Lo dicho, siento que sea una entrada tan corta, pero ha sido un día extraño y tranquilo.

¡Nos vemos!

miércoles, 1 de diciembre de 2010

Esas pequeñas cosas

Desde que he llegado a Eden no han parado de sorprenderme las cosas que suceden sin que nadie les de importancia y que a mi me dejan con una sonrisa en la boca :)

Una de las primeras sorpresas que me llevé fue como funciona el stand up diario que se celebra a las 9:30. La típica reunión corta en la que cada uno dice que hizo ayer y que va a hacer hoy. ¿Típica? Bueno, típica no es, porque Eden es diferente. La mayor diferencia es que no hay una reunión por equipo. Hay una única reunión en la que participa todo Eden (por skype si no has podido ir a la oficina) y todos los clientes que estén con ellos en las oficinas. Mola porque todo el mundo sabe lo que está haciendo todo el mundo y mola porque no hay diferencias entre técnicos, no técnicos, clientes, internos :P Todos somos iguales y todos somos importantes :)
Pero sin duda, lo mejor de la reunión sucede cuando termina la ronda. Entonces llega el momento en el que el que quiera puede contar cosas interesantes que ha descubierto en casa (Por ejemplo, Enrique hoy ha hablado de los koans para clojure). ¿No os ha pasado alguna vez eso de haber leído algo super molón sobre programación y no tener nadie con quien compartirlo en el trabajo? Pues aquí es casi obligatorio que lo compartas :D

El momento de antes de la reunión también es divertido y suelen surgir conversaciones curiosas en torno a la programación. Hoy, por ejemplo, ha surgido el tema "frameworks sí, frameworks no" que tanto gustó en el AOS2010 :D
Espera, que no me lo creo del todo. ¡Mis compañeros hablan de programación en el trabajo! Moooola. Y además nadie les mira como si fueran frikis :P (Lo digo porque a Alfredo y a mi alguna vez sí que nos han mirado raro...)

Otro de los momentos en los que surge la magia es la hora de la comida. Todos los días ha pasado algo divertido e inspirador.
Mi primer almuerzo, como ya os conté, sirvió para que me contaran como ven la empresa, por qué es como es, etc.(Tengo ese tema pendiente, no me olvido) Todo de una forma muy natural y abierto a todo el que quisiera escucharlo.
El segundo día Chris nos contó como estaba enseñando a programar a su hijo de 6 años. Está utilizando un programa que simula un enfrentamiento entre robots y tu tienes que programarte el tuyo. Aquello dio paso a una discusión en torno a la mejor manera de acercar a niños tan pequeños a la programación bastante didáctica :)
Después, Enrique nos hizo la kata de los números romanos a unos cuantos curiosos en menos de 5 minutos (y creo que en mucho menos), dejándonos ojipláticos.
Hoy nos hemos juntado como grupo de estudio de patrones de diseño y hemos hablado sobre el Singleton. No nos ha tocado el más divertido pero aún así ha sido una charla interesante. Además, me he enterado de que twitter usa el 3% de sus servidores para Justin Bieber :O

De todo lo que os he contado, lo que me parece más importante es lo fácil y espontáneo que es, y el hecho de que sea abierto a todos los que quieran acudir (por supuesto, no es obligatorio), ya sean clientes o personal de Eden porque, mientras estás en Eden eres Eden :D

PD: El servidor va mejor :D Hoy he conseguido resolver un GET de un navegador :P Lo malo es que después me lo he cargado en la fase de refactor... El código no está del todo mal, aunque imagino que el viernes me meteran caña a tope :D

martes, 30 de noviembre de 2010

Una retrospectiva en Eden

Ya se que os tengo que hablar de los valores de Eden, pero hoy he podido asistir a una retrospectiva con un cliente y prefiero contaros como se lo montan :D Sobre los valores os prometo una entrada el fin de semana.

Antes de entrar en harina, hoy he conocido a Frances y bueno, super amable y encantadora. Además, nos ha traido una tarta de chocolate hecha por su hermana que estaba muy rica. Parece ser que mañana nos va a traer unos mince pies caseros que, por lo que dicen, son de chuparse los dedos :)

Hablemos de la retro
La retro de hoy la ha facilitado Aimee y han participado, por parte del cliente, las 4 personas que hay ahora mismo en Eden, y por parte de Eden, Enrique, Steve (via Skype porque sigue enfermo), Aimee y yo (Yo por parte de Eden, ¿qué os parece? Alucino :P ), aunque básicamente he ido a curiosear.

La retro ha empezado de una forma muy chula. Los implicados hemos entrado en la sala y nos hemos sentado alrededor de una mesa redonda. Delante nuestra teníamos una nota que decía:


Regardless of what we discover, we understand and truly believe that everyone did the best job they could, given what they knew at the time, their skills and abilities, the resources available, and the situation at hand.
Independientemente de lo que descubrimos, entendemos y creemos firmemente que todo el mundo hizo el mejor trabajo que pudo, teniendo en cuenta lo que sabían en ese momento, sus destrezas y habilidades, los recursos disponibles, y la situación actual.

Actualizado: Aimee me ha pasado el enlace a la cita original :D

Todo el mundo ha leido la nota y se ha mostrado de acuerdo :) (uno por uno hemos dicho "estoy de acuerdo")

Después, se han fijado unas reglas básicas (no se como traducir ground rules) para la retro entre todos los asistentes. Por ejemplo, hay que pedir la palabra levantando la mano, o queda prohibido faltar al respeto a la gente, o hacemos media hora, paramos y luego otra media hora.

Una vez fijadas las reglas, Aimee nos ha pedido que escribieramos en postits eventos importantes que han ocurrido en las dos semanas de proyecto que se iban a retrospectivar (un evento por postit). Algunos ejemplos, Enrique ha escrito que el 14 de noviembre estaba en Madrid en un curso de TDD (que es igual que escribir que no estaba en Inglaterra pero mola más :D), que el 23 fueron a las oficinas del cliente, etc. Supongo que os hacéis una idea. Una vez escritos los postits, los hemos que colocarlos en un calendario en su correspondiente día. Ha quedado algo parecido a esto:


Luego hemos puesto en común los eventos que ha escrito cada uno y hemos dibujado nuestra línea de "sentimiento" del proyecto. Os lo enseño y después os lo explico:


La línea punteada representa el estado "neutral", ni frio ni calor. Cada línea continua representa el sentimiento de un miembro del equipo durante las dos semanas de proyecto.
Una vez que todos los miembros del equipo han dibujado su línea (la mía es la roja :P) cada uno explica por qué la línea es como es, lo que da lugar a que todo el mundo sepa como se siente cada uno de los implicados.
No se ha vosotros, pero a mi me ha parecido una forma muy chula de expresar el bien y el mal del proyecto y, lo que es más importante, de compartirlo :)

Esto nos ha consumido la primera media hora, así que hemos parado para beber un poco, ir al baño, lo típico. Cinco minutos después hemos vuelto al ataque.

La segunda parte de la retrospectiva la hemos dedicado a tratar los problemas que más han afectado al proyecto. Para decidir que temas eran los que más importaban hemos juntado los postit-evento por temas y hemos votado los temas (7 puntos y puedes asignar tantos puntos como quieras a cualquier tema). Se han seleccionado los tres más votados y se ha charlado un rato de cada uno. En el momento en el que la discusión dejaba de tratar sobre como trabajar mejor para centrarse en detalles muy específicos del proyecto, alguien pedía tiempo muerto y cortaba la conversación. Esto mantenía enfocada la reunión.

Como punto y final de la retro, Aimee ha apuntado las conclusiones y las posibles mejoras en tarjetas y las ha dejado pegadas a la pared para que todo el mundo las pueda ver.

Y eso es todo, la verdad es que me ha parecido una forma muy amena de llevar una retrospectiva.

Nos vemos :)

PD: El servidor va igual que ayer porque hoy he borrado todo lo que hice y lo he vuelto a hacer desde otro enfoque :S Esperemos que mañana avance algo más.