My learnings in two years at LIFULL
My learnings in two years at LIFULL
This article is a message to my future self, it may not make sense to you and it will be ugly as hell as I expect it to become a link mess, one link for every thing that I’ve learned or finally experienced in first person in my professional live.
Yesterday was my last day in LIFULL Connect, after two very exciting years it’s a good time to recap.
Landing in LIFULL
I got into LIFULL Connect thanks to Manu Rivero, I asked him about Codurance because I was in conversations with them and I ended up in a very friendly call with LIFULL's CTO, Jose Carlos, with whom I had an immediate connection.After that call my first time with a full-day interview followed. On that day I talked to Edu Mateu, Eric Teruel, Manel Ibañez and plenty of other interesting people, and it finished pairing with my future team, something I never done before and that I liked a lot. It’s a good way to assess the proposition from both interested parties (mmmhh… I already started learning from them even before I joined).
First position: Developer in Trovit B2C
Anyway, I decided to join the company as PHP developer of the Trovit website (never done PHP before 😵💫).Landing was interesting to say the least, somehow the team had gone through a small revolution and almost all of us were new to the company and the product. To speed up gaining traction on our codebase we started mob programming all day long. It was a radically different experience to me, the team was big and opinionated (the tech colleagues who where there at some moment in time were Cris Cirera, Pau Trepat, Dani Jordi, Dani Amer, David Rojilla, Yanice Agoune, Marcel Barros and me), so the discussions were always challenging and sometimes long.
After some time of mobbing we decided to split the team in multiple pairing teams, one of them working on caring tasks. I like the proposal of caring tasks. Framing the conversation in team needs instead of solutions or tools we already had on our hard was hard for us in the beginning but became easier after a while.
During these days had some technical coaching with Manu Rivero first and Pedro Santos afterwards. My experience with technical coaching was good, I think it’s an excellent tool to help teams grow because the coach can be there when the real work is done and follow up the growth over time (so it’s not a one day training that then you don’t know how to apply). On the risky side of the business, I see the fact that sometimes the team can have a blurred vision of their responsability, delegating on the coach some decisions that are theirs.
Back to work, I was at last working on an environment where my team was pair programming most of the time. And I liked it, very much. Even though my lack of PHP and frontend skills, which were the ones in most demand, I was able to contribute. I was learning by pairing and pairs weren’t barely stuck due to technical problems (getting stuck on a discussion was a whole different topic, but that was completely under our control).
And we were not only pairing, but we were also practicing TDD. Delicious! Most of the times it makes your life so much easier! It was not always feasible, as our legacy codebase imposed some constraints, but it helped. Now that I mention legacy, words like sprout method, extend and override or scientist became part of our vocabular, I even found the motivation to read Working effectively with legacy code after a previous trial some years ago (BTW, you should find the motivation too if you haven’t, we all work with legacy code).
On the product side, we were using AB Tests to try all our new developments in production. And it was good, since our product was so mature we realized a bunch of the proposed changes were not worth investing in. On the downsides, most of the times the B variant code was a cheap crappy implementation and sometimes our codebase was a little bit messed up with feature flags and on-going tests. Nothing comes for free.
Domain wise, the aggreggator world and data architecture was relatively similar to what I had seen in Sunweb, where I learnt a little about was in email sender reputation, what a crazy world when you send gazillions of emails a day. Well, at least I now understand why I sparsely receive some newsletters which are expected to come more often (ofc, it only happens with the ones that I almost never open 😛).
Trainings and alignement
At the time I joined the company, a lot of other people were doing it too, and I guess there was a conscious effort in aligning us and investing in shared knowledge and values, because of that I was lucky to enjoy multiple trainings. On the technical side, Codesai was in charge. I did their TDD training with Manu Rivero and Toño de la Torre first followed by the course on Code Smells & Refactoring with Dani Ojeda and Manu Rivero (again). Both trinings highly recommended!In parallel to the trainings, we were doing deliverate practice, on a bi-weekly basis we were meeting to work on some Katas together, always oriented to consolidate some skills or gain new ones. It was also a good moment to mix and match people from different teams and get to know each other.
There was another training on Agile and facilitation tought by Jose Torres, I recall that training full of worthwile discussions, my very first good explanation on Cynefin and, discovering Kanban was much more than a board. A top moment was when we did a Lord of the Rings retrospective that sprinkled multiple laughs. This training was also my first contact with Non-Violent Communication (NVC from now on), more on the topic afterwards.
Forming, norming, storming, storming
And then Covid arrived... and my role changed. I was offered to lead the B2C team (it didn't last long, 5-6 months), and then the Discovery team which finally became the Sherpas team.The first and most important thing from this period is that I should thank everyone in the company for their support and assistance. On a personal level it helped to my mental sanity to have a purpose and the fact that the purpose was shared with multiple people who were with me most of the day (meetings and pairing).
I really liked the way management handled the crisis, they were transparent with us sharing the impact on the numbers, and they ensured we were on a safe spot for the upcoming months. As busy as my head was with all corona news, at least I didn’t have to worry about my job.
Anyway, that period of time took a personal toll on some of us. I recall these days as full of hard-conversations, challenging one on ones and trying to deal with managing colleagues necessities and expectations.
I didn’t always succeed, up to the point that I had my first experience with a team lead by myself that disbanded 😞. The Discovery team, did only last 6 months, after that 2 persons left the company and 2 more left the team, so only me and the PM stayed from the original staff. It was kind of crazy to me, we had an awesome setup (goal, conditions, team) and we still managed to explode. My learning on here was that sometimes having such a good setup is not enough, managing expectations (the ones from the company and the ones from the team members), having good communication and giving fair and kind feedback is very important. Important learnings at a high price 😥.
To cope with all this situation having someone independent and able coach me was really helpful, I thank Ingrid Astiz, Manel Ibañez and Edu Mateu for being there and helping me go through it. From them I learned that role playing difficult conversations before having them is very important (at the beginning I felt childish, but it’s a ****ing live saver). I also saw a cathartic exercise where the whole team re-lived the previous months sharing their feelings at every stage of the process. It was rough but sincere, and clear that it was time for us to split apart and try to move forward, such is live 🤷.
Product, product, product
Ooohhh... product development, both in Trovit B2C, Discovery and Sherpas I've grown like crazy thanks to the product mindset and expertise you can find everywhere in LIFULL Connect (and specially in Eric Teruel).First of all, it was my first time with formal OKRs (In Microsoft we had something similar, but I don't recall them giving it this name). Starting from our OKRs in B2C, I participated in opportunity solution trees in order to work out how could be get closer to our goals, really appreciate how the exercise forces you to open your breadth of ideas an prioritize them. I got access to user journeys and, personas and profiles, a huge amount of information on who were our users and their purpose.
After B2C, I moved to Discovery team where I first heard of a lot of new concepts: Agile dual track, Design Sprint (my thouhts on it here), the product trio (funny concept, coming from the power of three, should we have a meta quartet of PM, UX, Dev and Test?) and I did stakeholder mapping (do it if you are ever responsbile of anything that requires multiple levels of communiication). Also heard about Amazon press release but didn’t do it in the end.
Well, I basically heard a looooooooot about Marty Cagan and Teresa Torres’s ideas. Funny thing is, during this period their names were barely mentioned, unfortunately it took me a while to realize they were the persons behind that school of thought. Once I realized, I ran to read Inspired (Empowered is in the wishlist) which helped me a lot to put most of the things in the right shelve of my head) and then I subscribed to Teresa Torres’s mailing list (Continuous Product Habits didn’t exist at that moment in time, luckily for all of us, now it does!). Both Marty and Teresa now belong to my list of beloved gurus 😍.
Apart of all those things, I finally had the chance to play with Wizard of Oz prototyping, interview users and use tools like lookback.io or even write polls using mailchimp. On top of all that, of course I used my pivot tables to try to gather insights on our usage data, that is always fun 🥳.
Forming, norming, storming and ... finally performing
Early in 2021, we redefined the Discovery team as the Sherpa's team (hence the cup in the picture), the name was following the idea that the new goal of the team was to help other teams climbing their corresponding mountains.The team was extraordinary, Guido Lavecchia as Product Manager and Chus Spínola, Manu Tordesillas and David Asensio as developers built in close to no time a very high-performance team (according to my standards, ofc). We made our fair share of mistakes (including a bloated Google bill - previous to some of them joining the team - and a failed rollout of a feature), but we also did some good things.
On the technical side, it has been my first time where I’ve been able to setup a real Continuous Delivery pipeline (it was little strange, because we were able to rollout anytime but we only had real traffic in the evenings or while we were out) with a codebase built almost entirely using TDD.
We worked with Lambdas in Node.Js, so even I learned some Javascript jargon like the revealing module pattern! Also, worth mentioning David Asensio discovered us ngrok, very very handy tool to open your local computer “to the internet” and that we ran an experiment in production using a Google Optimize (always wanted to do that, the idea is excellent but the experiment backfired a little).
On the team dynamics side… it has been awesome. The team was (and still is) keen to explore new ways of working and constantly eager for learning, humble and easy going. Using our retrospectives as means to introduce experiments, we have discovered and then adopted User Story Mapping as a very practical technique to organize our ideas (blog post on the topic coming soon), we have done a remote walking retro (awesome, some technical problems but worth it), the Paco Umbral retro (love the name!) or the Dora Retro (for ourselves and for other teams) which derived in our own custom Dora board (not that used though).
We also ran an experiment based on Reinventing organizations from Frederic Laloux (excellent book, must read!). The experiment consisted on every one of us sharing a form to the rest of the team members with whatever questions we wanted to ask. This looks very much like a traditional 360 except for a couple of differences:
- We were the drivers of the exercise
- We then read the answers, individually, next to a person who was a facilitator from outside the team and helped us process the feedback with an outside prespective. In our case the person was Ingrid Astiz who as usual did an excellent job 🤗!
When we reviewed the outcome of the exercise our conclusions were that it was a little bit too expensive (we gotta time box the form fulfilling task) and that it was worth repeating periodically.
An experiment I left pending before leaving was to write some Learning Contracts, hopefully someday I get to try them and I’m pretty sure the team will have their chance without me 😆.
One of the places where I struggled the most with the Sherpas during this period of time has been the personal growth of my peers. I feel them like equals in knowledge and skills, of course we all have our virtues and defects, but let’s say that there are other people who I feel I can help them grow more because the knowledge gap in my favour is bigger. Again in Ingrid, I found some help with the amarres professionales (career anchors?) and in Félix López’s Taller de Engineering Manager training. As he very well defined it, I was leaning more towards coaching instead of mentoring, which is neither good or bad.
Meanwhile, organization wise...
Lots of things happened, Jose Carlos Gil (the CTO) taught a Non Violent Communication training which was enlightening and bonding (someday I still plan to write a blog article on that too).In the training I met Adela Tort and Aitor Alzola, more than coffee colleagues now to me. After Aitor came Xabi Saéz de Ocáriz (to my surprise some basque wacky reading twin of mine), with whom we moved a “Tech Mandangas” initiative (weekly meetings to talk about tech and share some laughs). One of the most memorable tech mandangas I saw was from Jordi Pradel (slides here), so good I asked him to join Girona SW Crafters to repeat again :). As part of tech mandangas we also did some fishbowls, we used stoaa and it was a good way to change dynamics for a while.
I participated in my first Open Space ever, which I found very insightful. Relatively cheap and simple to organize (you need a venue, time and good will) and quite impactful. On that open space I could listen to people like Erik Torres talk about how was to him the transition to a functional language in a very humorous and smart way (there will be a video somewhere about that because Erik did the talk in SW Crafters Bcn, still looking for the link).
In one of the Sherpa’s retrospectives, we came up with the idea to relaunch the book club (halted since Covid), in that club we have read Thinking in Systems and Accelerate. Related to thinking in systems, we found ncase, an online tool you can use in case you want to model some.
Living the hiring process from the inside was also interesting, I’ve never done debrefings like the ones in LIFULL. They have clear guidelines on what to assess and how not to do it (to avoid some well known biases). It was very interesting to see how 5 or 6 persons with different points of view (product, tech, management) fulfilled their own debriefing and then shared it with the rest. I think it’s a way fairer process than the ones I’ve participated before as interviewer, where a lot of responsiblity was on one single person and with a high dependency on a single hour of interview.
Jumping (again) to a whole different topic, I had the opportunity to participate in the tech committee, whose goal was, simplifying it a lot, to help align tech initiatives in the company and find high-level strategies. In the committee I worked together with Mario Sánchez, Jordi Pradel, Erik Torres, Adela Tort, Ferran Galí, Joan Montplet, Edu Mateu and Manel Ibañez, conversations were very interesting over there as that’s the only thing that can happen when you join such a group of excellent professionals :).
One of the first things we did together was to write a Tech Radar, my first one and something that was “not on my radar” 😅
Other lingering learnings...
Another learning I got about LIFULL Connect is on the importance of networking and community building. From people like Xabi and Aitor (and others) have sparkled my desiree to join events in the future. I've always been lazy about those, because I always watched my personal gurus online, but guess I've missed the talks in the corridors and getting to know people from outside my personal circle.iPad mastery is one of the skills I've envied the most in my LIFULL colleagues, over there I've seen people like Jose Carlos, Edu Mateu or Pau Trepat who use the tablet to facilitate a meeting, summarize it or draw a diagram for a presentation in no time. The possibilites and ease of use of applications like OneNote (I love the infinite board) or Notability (things always look nicer in notability) convinced me, and now I have mine as I use it (for example ot create the schemas in my blog)
Testing wise, I got to know Maaret Pyhäjärvi from Jorge Fernandez (Maaret is very good!) and I finally saw people using Mutation Testing or Property Based Testing for real live problems.
And my personal errand...
So... while doing all those things I've kept working 4 days a week for LIFULL Connect and keeping Friday's to myself.During Covid, all my personal business stopped (not a surprise, as it’s based on trainings and consultancy) and I made good use of it, I took care of my family and me.
Still, I’m very happy about what happened after live came back to a pseudo-normality, business is slowly ramping up with multiple collaborations, the most common one is my Testing techniques training (as a talk, as an all-day workshop, in-person or remote). I also recovered the Unit testing workshop, which has been upgraded to .Net Core, renewed with my learnings from the last years and highly improved by Pau Trepat. Last but not least on the trainings side, I’m now collaborating with WiseWork (Marcela Ospina and Ingrid Astiz again) with a training for Medicos Sin Fronteras on Agility.
Apart of the trainings, I made a company assessment on Software Development practices and I also shared some sparse hours here and there for specific consultations (doubts on how to organize a testing team, hiring, methodologies …).
As crazy as it may seem, I helped Luc van Vugt reviewing the second edition of his book Automated Testing in Microsoft Business Central. This has been a completely unexpected errand as I’ve been away from Business Central since it was called Dynamics NAV (this means more than 10 years) and I’m not an expert on the topic, far from that. Still, it has been fun (as well as confusing sometimes) to try to mix and match the ideas on the book with my conception of automated testing more rooted in Continuous Delivery and Agile testing.
And, the last place where I got out of my comfort zone has been organizing the Software Crafters Girona meetup. Motivated with how many people in LIFULL Connect organize and enjoy this kind of events and knowing I was kinda disconnected from my previous peers from Girona I gave it a try and it seems to be working out. Multiple X’mas dinner conversations with Pau Trepat, Erik Torres, Manu Rivero and Jose Carlos helped making it possible, as I was quite lost before starting (afterwards I was too, but … you know, fake until you make it 🤫)
So far we’ve done a bunch of remote katas, a talk and a dinner once Covid conditions got better. It’s fun and I’m happy that the organizing group is gaining traction and cohesion.
Long story short, it’s very stimulating and enriching to be involved in such a variety of initiatives with so many people and backgrounds.
Summary
These two years have been a crazy ride, if you've read until here you can imagine why. Now it's time for me to move forward with such a precious bounty of friends and knowledge, hopefully LIFULL is also happy with what I gave them 😜.BTW, If you like what you heard and you’d like to join LIFULL, they are looking for people.
Thanks for reading and have a nice day :)
Xavi
Appendix: My technical reads while at LIFULL Connect
I think my reading is not only shaped by my taste, but also by my needs at work. Here's the list of books I read while at LIFULL Connect:- Radical focus, Christina R Wodtke.
- Working Effectively with Legacy Code, Michael C. Feathers
- Agile Testing Condensed, Janet Gregory and Lisa Crispin
- Agile Technical Practices Distilled: A Journey Toward Mastering Software Design, Pedro Moreira Santos, Marco Consolaro, Alessandro Di Gioia
- Thinking fast and slow, Daniel Kahneman
- Non Violent Communication, Marshall B. Rosenberg
- Drive, Daniel H. Pink
- Start with the Why, Simon Sinek
- Inspired, Marty Cagan
- Reinventing organizations, Frederic Laloux
- Automated Testing in Microsoft Business Central (3 times), Luc van Vugt
- Essential Kanban Condensed, David J. Anderson and Andy Carmichael
- The Black Swan, Nassim Nicholas Taleb
- The Sketchnote Handbook, Mike Rohde
- Continuous Delivery Pipelines, Dave Farley
- Thinking in Systems Donella Meadows
- Continouus Discovery Habits, Teresa Torres
- Team topologies, Matthew Skelton and Manuel Pais (reading)
- Category Theory for the Functionally Curious Scala Programmer, Salva Alcantara (reading)