In October 2015, just two months before the Spanish elections I was lucky to visit Scytl and work there as a consultant for a week. Thanks to my good friends Manu Martin (@ManuCervello) and Alvaro Garcia (@alvarobiz) who are currently working in there as agile coach and developer respectively. I met a different team each day of the week, it was quite challenging and interesting.
More often than not, when I visit companies, I get to see a significant amount of coding horrors and technical debt. So I was curious about Scytl because I knew they were going to collect and count my vote together with other 30 million more two months later. They were the IT company designated to collect and count the votes in the Spanish elections - among many other things like the website with the reports...
I must say that I really liked what I saw, they are brilliant security experts, very professional. Citizens' vote was absolutely private and secure. I was confident that my decision as voter was secure, that I could trust their software. It's a very good feeling... software one can trust finally!
And yes, two months later they did a fantastic job, and they even broke the voting count speed record. Congratulations!
One of the teams I worked with was exactly the one in charge of collecting the votes. They had really good architecture and design questions for me. It was a challenge. Their chosen solution was very smart, I liked its simplicity. There was a lot of pressure on this team and I explained how important it is to have some slack time in order to step back for a little while and rethink decisions. Too much pressure is harmful in my experience, the best ideas come up when the brain is relaxed.
I also worked with the team in charge of counting votes and I got to see the D'hondt algorithm, something totally new for a democracy illiterate like me. We had a very nice mob programming session with the whole team in the meeting room. People were skeptical about mob programming at first but they quickly grasped its benefits, it was a way to find out team conventions for example.
On the third or forth day I also spent the day with the mob, this time with another team. The focus was on refactoring and unit testing strategies apart from a code review. We had the chance to explore together some of the new features of Java 8 too. I emphasized the importance of learning the IDE's shortcuts and the automatic refactorings it provides - it was IntelliJ in this case. Nice to code with young people willing to learn and improve.
I emphasized the fact that communication among co-located teams is more effective face to face. Pairing for a while to integrate a new feature from the other team or some API change, feels nicer than sending emails back and forth. Dog fooding among teams could help improve collaboration given that some teams act as a kind of "customer" to others.
There was also a session with a group to discuss about values, principles, professionalism and motivation. An exchange of opinions and points of view. Unexpected and very enriching.
I didn't know that teams are multicultural with people from distinct nationalities. English is the official spoken language. Although my English is not too bad for a quick chat, I had some trouble understanding and communicating with some people from other cultures. It reminded me of how tough it could be to work with people from other cultures, specially when English is not the native spoken language of none of us.
Scytl's people were excellent hosts, very welcoming and friendly. Thank you for a remarkable week!