Monday, March 23, 2015

Sharing knowledge using videos

In my current job at everis I'm trying to influence the team on using good technical practices, being TDD the first one in my list. In order to do that I gave a short presentation and I've run a couple of Coding Dojos but not many people showed up. I was frustrated, but on the other hand I knew why they couldn't attend: they are too busy.

The final result is that tests are not written, build is not maintained and code is difficult to handle. What else could I do? If one team member wants to learn TDD but he or she cannot attend an scheduled event  I could give them more options to learn that don't require them to read long books or to be present at a room at a certain time. So I thought about recording videos, screencasts.

I tried different free products and did some experimentation myself, and finally found two:

With Open Broadcasting Software you can record your webcam, the application or both, and assign keyboard short-cuts to switch between them. You can broadcast or record, and your recordings can be easily published to YouTube or Vimeo, and you can leave them unlisted, only for a certain group of users. Great!

My main objective was to easily record videos, without post-production, little preparation and a duration between 5 and 10 minutes. Currently I've recorded a couple of videos (in Spanish) just to show TDD in action, and the "possibility" of introducing tests in an existing code base. All the code is written in Java. For some of the videos I've also shared code in github.

I'm not happy with the videos, but better done than perfect.

Getting feedback from my peers I learnt:
  • Seeing the face of the speaker is interesting but not vital. If they have to choose, they prefer seeing the face.
  • The screen resolution has to be lower than your beloved monitor, otherwise it's going to be difficult to see. 800x600 was too big, but very readable. I'm not yet sure about the best resolution.
  • Noise reduction is important. In Mac I did not have to do anything but it took me too long to find out how to remove it in Windows. I had some Dell application to manage that, and I was not aware.
  • It's hard to code and to talk about what you are thinking, at least for me. And the most difficult part is to add emotion to your voice. People will fall asleep.
  • 5 to 10 minutes is the ideal (I think) but it's hard to achieve without post-production if you are building code.
  • A video will never replace the live experience.
The videos, in Spanish,  are:

Using this tools you can also share with your team other practices that work for you. And you don't need to be a guru to share.

Sunday, February 1, 2015

Communication is based on Shared Knowledge

The other day I was speaking with a friend and I eventually used the expression “you've taken the red pill” and he did not understand me. I was assuming that, as long as we speak the same language, we are about the same age and he has seen the movie The Matrix he would understand.
When you ASSUME, you make an ASS of you and ME.
  - Jerry Belson, scriptwriter
He did not remember the part of the movie when Morpheus offers Neo two options: taking a blue pill to stay in a fabricated reality, taking a red pill to escape from that reality into the true one, even though harder and more difficult.

There are phrases in every language that you won't understand, even if you know all the words (are you pulling my leg?). There are shared metaphors (skeleton in the closet, elephant in the room). We also use references to movies, books, TV, … whatever. And the expression will have more content than just the words (go ahead, make my day). Some of them may be understood as part of the language, but some of them are not.

Sometimes you are part of a conversation in a group and they'll start to refer about things they've lived together, and you'll be out of the game.

Sometimes there are terms that are not used with their proper meaning (methodologies, cloud or agility). You may spend an hour discussing with someone and both were meaning different things.

It is not about the language or about the culture; it is just that you don't share the same knowledge. Or the same understanding.

So, if you are in doubt, check for understanding.

Friday, January 2, 2015

2014 review

Last year passed without a blog post, and I'd like to start this year writing, because 2015 is going to be a year of changes. On 9th of January I'm leaving Thomson Reuters, the company where I've worked for 2 years, 4 if I count the years as a contractor, and on 12th I'll start a new job. So it's a good time to make a retrospective of what happened in 2014.

Inside Thomson Reuters

I participated in a change initiative inside Thomson Reuters and it's been a great experience to know about all the difficulties of people distribution, cultures and communication. I had the opportunity to comment and discuss issues about how to evolve Database structure in a living application, and I stumbled upon some good literature about it. This evolutionary database design thing is something I've fought in several occasions in the past, and I'll find time to investigate further.

I've been programming and learning, above all about testing, and levels of testing, and about collaboration and responsibility, the no-coding bits of programming. We practiced a few times mob programming (all the team in a room using a single computer and a projector), and it resulted an energizing and productive exercise.


This year I held three sessions of Learning Scrum with LEGO, two in-company and another one with my friends of PMI Barcelona, with José Carlos Gil.

I also had three introductory sessions about Sketchnoting where I've had a lot of people drawing and having fun. I've enjoyed a lot these 30 minute sessions.

Conferences and activities

Saket and Ivana organized in Barcelona an Agile Coach Camp and I was lucky enough to attend. I met there amazing people and I learnt a lot from the experience.

I also attended to the Conferencia Agile-Spain in Barcelona. I wanted to be helping in the organization, but in the end I couldn't, but I was observing how great people made CAS2014 an amazing event. I will remember the ending "keynote" where Pedro Serrahima and Cristobal Colon, with the assistance from Jorge Uriarte were just having a conversation about values and common sense.


I've tried to focus more on the family, and that's why I reduced my community activities. And I have still a lot to learn. I've also started a coaching process with my friend Gerard Chiva and it's being really interesting. My back was not causing much trouble this year, so I'm happy with my health (fingers crossed!).


I started participating with La Salle, preparing the subject about Agile Methodologies for one of their on-line masters.

But the most exciting thing was when I started paying attention to the offers I was getting from LinkedIn and I participated in a process that, if successful, would have made all my family to move to another country. After 5 phone interviews and 5 more face-to-face in Dublin, finally I did not get an offer. However, I learnt a lot from the whole experience. The most important part was the conversations we had at home about moving abroad.

That's what opened the possibilities to start something else. And I'll be starting new things this year.

Friday, November 1, 2013

Learning (with) Git

These weeks I'm in a training and  I knew we were going to do a lot of coding exercises and I wanted to be able to share the learning experience with my colleagues when I will be back in Barcelona, so I decided to kill two birds with one stone: I would learn Git.

Git has been around for a while and I had been using scarcely in the past, even I had some code published in GitHub, but when you don't practice, you forget. So I've started small.

I'm working in Windows but I use cygwin to get some Unix-like experience. I installed git in my computer and when I set up my code and initialized a local repository:
cd whereMyCodeIs
git init

A .git folder was created and all my versions would be stored there. I'm not planning on publishing the exercises to any external repository (yet). I created a .gitignore file to exclude from my repository my compilation files. (I struggled without .gitignore in my first repository. Lesson learnt).

Whenever I finished an exercise I would add the code and commit it.
git add .
git commit -m "Exercise 2. Solving the puzzle"

When I want to see which exercises (and commits) I've done so far I do:
git log --oneline

The first think you see the ID of the commit. With it you can retrieve that version, without the risk of losing anything:
git ckeckout 2e81eab

If you want to recover what you were working on:
git checkout master

This way I can review what was studied and modified in every exercise.
If I want to get a list of what files were modified between two exercides I get the commit IDs of the two and I do:
git --no-pager log --name-only --pretty='format:' --full-index 2e81eab..15cf40b

If I want how a particular file was modified between two changes I do:
git --no-pager diff 2e81eab..15cf40b pathToFile/

I know these are very basic commands, but they are helping me in my learning process. I've been following the Atlassian Tutorial.

Even better, read The Junior Developer’s Quick Start Guide to Git.