miércoles, 24 de diciembre de 2014

Mob programming


Mob Programming

A few days ago I read this article regarding Mob Programming (sorry, it's in spanish) which get my interest because it was the first time I read about a thing with that name. What was that about? A new methodology? a new technique?

Mob Programming is the fact that a group of programmers sit all together, preferably in a room, with only one computer, with only one piece of code. All the group can discuss, can design, can program a piece of code of the project. Therefore, everybody is completely focused in solving the same problem. Something like pair programming but with more than two people involved.

One first impression might be that it is one of the most inefficient ways of work. All the team working in the same task, wasting their times in only one thing while they could be working in different tasks (as usual). But, on the contrary, it's a very useful and efficient (in long term) way of work. Used with moderation, of course.

In my days in Papa Pear we used to use this thing but we called it PapaDojo (Papa for Papa Pear, and Dojo because of the Coding Dojos). We used to do it once a week, the whole developers team in a meeting room, one computer and only one problem to discuss. A few days in advance we picked one topic, one person prepared it, notify to the rest of the team so the people interested could decide to attend or not and prepare the topic.

And, why was this very interesting? Our idea was to, once a week, all the team shared the code and the technologies to use. The aims were multiple: reach share knowledge of the tasks being implemented, being able to know other technologies or languages you don't deal with in your daily basis (IoC, C++, Action Script, Unit Testing, ...), face all together an important refactor to do, ... And in a long term the benefits are multiple, as well: the team may have a knowledge (in deep or superficial) of all the project (not only the parts each one is working on), all the technologies and languages used in the project (easing the cross-development of features), face a refactor/improvement of code that for only one person can be huge,... and, of course, team building.

Don't think Mob Programming is inefficient, in long term will provide you lot of benefits for the team and the project.

martes, 18 de noviembre de 2014

Plus Plus

The last 2nd and 3rd of November I could attend (thanks to King) to a public speaking training with Florian Mueck. Two intensive but very interesting days. With two degrees, two Masters and several other courses behind me, I can say that these "only" two days have been the most interesting and exciting course I have ever had so far.

But, in this post, I had no intention to explain how good is Florian motivating people and getting out the best of you to get you out of your comfort zone. And neither how much I learned during those days and how the second day I was able to do things I couldn't imagine only 48 hours before. Or how I felt something starting to grow up inside me I didn't know, since I liked that thing called public speaking. What I want to talk is about the motivating and learning techniques Florian uses to push people to step forward and get out of the comfort zone: ++

Everytime we were on the stage and made a presentation/speech, the group evaluated us. Florian drew two columns on a board, one with all the good things the speecher did during the presentation and another one with all the things the person had to improve to step forward and keep improving the skills (the ++ column). So simple, so obvious but, at the same time, so few times used. In a society, like ours, where bad comments and destructive criticism, which are completely useless,  takes precedence over good and positive reviews.

Bad and negative criticism is totally useless. If someone points out how bad you are doing something, most likely, the person who receives the criticism may think is a personal attack, making that person feeling bad, and making her/him being anything but receptive. And, in the best of the cases, it wouldn't help at all because a bad criticism doesn't provide anything to the person who is receiving it.

The ++ column is a positive and good review. It doesn't take into account what you did wrong and it focuses on what you have to do to improve. In the end it can seem the same but it's more focused from the bright side, helping, adding, providing. With the ++ column you are helping people to progress and get better, that's why people are more receptive. And, apart from that, people improve and learn quite quicker.

But it's not that difficult to use, only a change of mindset is needed and it can be used either on the professional side and the personal. With that, people won't be afraid of trying and do new things. And not only that, people will have ways and paths to keep improving, learning and growing.

I've experienced it on my own, that's why I know that, from now on, I'll use much more often the ++ column.

martes, 11 de noviembre de 2014

¿Catalán? ¿Español? ¿Probablemente ninguna?

Hace unas semanas nos cruzábamos en la escalera con nuestro nuevo vecino de encima nuestro. Después de hablar unos minutos con él (y a pesar que se le notaba en su acento) le preguntamos de dónde era y su respuesta fue "soy originariamente británico". ¿Originariamente? ¿Qué quería decir con originariamente? ¿No era británico "a secas"? ¿Había nacido en Reino Unido pero no se sentía británico? ¿Había nacido en Reino Unido pero no había crecido en ese país? Esa respuesta y, principalmente, la palabra originariamente estuvo dando vueltas en mi cabeza intentando encontrarle un significado.

Un par de semanas después quedamos con unos amigos (británicos, por cierto) para tomar unas cervezas y a la quedada se sumaron unos amigos suyos americanos (que se estaban mudando a Poblenou) y que era la primera vez que veíamos. Después de estar hablando un rato con ellos, él me preguntó lo de "¿De dónde eres?" a lo que respondí, obviamente, de Barcelona. Pero mi sorpresa fue cuando me volvió a preguntar "Sí, vale, pero originariamente, ¿de dónde eres?" Originariamente ... Otra vez... Y ya le dí todo el significado a esa palabra. Entendían que originariamente una persona es del lugar donde nace, donde crece, donde se hace adulto... Pero, realmente, es del lugar en el que vive en ese momento... Algo que, realmente, yo siempre también he pensado y también he sentido...

Y todo esto me llevó a mi época de "holandés". Al principio de todo, cuando me preguntaban de dónde era respondía que venía de España (pensando que era lo que esperaban oir), hasta que vi que no les decía nada, decían OK y ya está, se acabó la conversación. Entonces aprendí que si respondía "de Barcelona", se les abrían los ojos como platos, querían saber más y te los habías ganado para siempre. Hasta que un día me encontré respondiendo a esa misma pregunta con la frase: "Soy de Haarlem". En el fondo yo sentía lo mismo, originariamente era de Barcelona, pero me sentía de Haarlem.

Vivía en Holanda, trabajaba en Holanda, pagaba mis impuestos en Holanda, consumía en Holanda,... Sólo la nacionalidad holandesa me separaba de ser, a todos los efectos, holandés. Y así lo sentía yo. Mi vida era holandesa, ¿porqué no lo iba a sentir así?

No siento ninguna bandera y no considero que ninguna bandera me represente. Soy de donde soy por haber nacido en la población donde nací, en la provincia de Barcelona y porque mi documentación, por el momento, así acredita. ¿Pero me siento catalán y español? Ahora sí, porque vivo aquí, trabajo aquí y pago mis impuestos aquí. Pero creo que, en el fondo, yo sólo me siento de dos lugares.

De Rubí, el lugar donde crecí, donde me hice adulto, donde pasé mis primeros 25 años de vida, donde empecé a trabajar, donde, todavía, tengo a toda mi familia.

Y del lugar donde esté viviendo en ese momento. Ahora mismo es Barcelona, pero hubo un tiempo que fue Haarlem y otro que fue Londres.

Por lo tanto, sí, cuando me hizo esa pregunta mi respuesta cambió, le contesté: "Originariamente soy de Rubí, a 25 km. de aquí, pero ahora soy de Barcelona"

miércoles, 17 de septiembre de 2014

Product Owners vs. Product Executors

It's almost two years since I started working at King, and during all this time I've learned lot of things. One of them, being able to experience another way of working, organising and managing teams. Most likely, provided by using an agile methodology, but also promoted by the company culture.

All the companies I've worked for so far had a classic organisation and work methods. Pyramidal hierarchies, with typical bosses and where the team members were Product Executors. I mean, the members could only execute commands, already taken and agreed decisions. The boss or corresponding department decided the what, when, by when and, usually, the team could only decide how.

I don't mean we don't have bosses now, because we do have. I don't mean we don't have hierarchy, because we do have as well, or nobody takes decisions, because they are taken. But the team has too much to say when taking decisions and each team member is, kind of, a Product Owner. The role of Product Owner exists within the team, who is the person responsible of making the roadmap, study the final user, know what he/she wants. But, in the end, it's the own team who decides what is going to be implemented (everybody in the team has the freedom to organise meetings in order to specify and define new features), the when it's implemented (there are often meetings where the team plans what to do and what not to do), by when a feature is to be implemented (if the team decides that something can't happen for an expected date, the team decision is accepted or a smaller product scope is negotiated) and the how.

This results in many benefits for the team and, therefore, for the company. Because the team members will be working much more motivated and feeling the product as their own. They are not just command executors, but they are involved in the decision taking flow and, specially, any decision taken by them is respected. Resulting in a team totally get involved in the development and success of the product/project.

But, obviously, not everything is too easy to implement. For its success, this requires a high amount of trust from the company in the team, in its work and decisions. Something that usually (specially in Spain) doesn't happen.