Reflections after Codurance
The setup
Yesterday was my last working day at Codurance. Is my longest second tenure at a company (I was nearly part of the furniture by London standards) that, sadly, has come to an end. And I wanted to take quick stock of my time at the company.
I am a fan of Rouletabille and his idea that time erases the unimportant things and leaves only the important ones in our mind (even if we don’t realize they are important). Maybe in 1 or 2 years time I would write different things here?
I am (currently) a Consultant
Going to Codurance was a bit happenstance, as it was a recruiter that suggested to apply to them. I have heard about Codurance before, through the LSCC events, and I had very small contact with people like Samir Talwar and Steve Lydford. In fact, before joining the company I was at that time I thought about joining Codurance, but I had a lot of Impostor Syndrome. This time I just rolled with it.
Why becoming a consultant? Because I want to help other developers (and, by extension, their companies). For a long time I was frustrated with the ways I (and others) were working, and once I started to find better ways, that made my work so much better, I wanted for other people to get there as well. That is why started doing talks/courses within the companies I was.
That hasn’t changed. Is still the main driving force for continuing my career as a consultant. What has changed is the experience that I have been accumulating, and learning about how to introduce change (the most difficult thing to do, in my view). Not that have always been successful, but at least I have had some really good experiences while doing it.
There is still much to learn as a consultant, experience that needs to be acquired on the field.
The importance of people
At one point, I have worked with a developer that had a timer on their desktop saying how long before the day was finished and they could go home.
Multiple times I have worked with people that did not want to learn anything new. Even if the new technique/process/tool would be an improvement on their life.
Multiple times I have worked with people that their only reason to learn/use something new is because it will go into their CV.
At Codurance was the first time in which I was in a company where everyone was interested in learning to improve themselves. So many people with that same characteristic does create a culture of learning. I have never learned as much in such a short time as there. The distribution of ideas, the dialogues, the talks and presentations … for someone like me, is a piece of Heaven. If you care about programming, look for places like that, where people want to learn.
Technical views
One of the ideas that I had in mind when I joined Codurance is that knowing a specific language should not be a blocker for a developer. I came as a C# developer and then I never touched it in nearly 4 years. Didn’t skip a beat (ok, maybe on the first client where I was doing some operations work).
Learning is interesting. When you only know one thing, learning the second one similar yet completely different (say a Dynamic language and a static language, or an OOP language and an FP language) is quite difficult. The third one becomes slightly easier. By the time you can do your 5th or 6th, there is no fear of learning anything new. The Pragmatic Programmer tells you to learn a new language every year. They know what they are talking about.
What you want to learn are fundamental ideas for the different paradigms and styles which then you can apply to similar systems.
The number of times through my years that very specific knowledge of a language/tool was required to sort out something is quite limited. You don’t need a collection of Jon Skeets or Eric Lipperts at your company. That should be the last of your consideration. Make sure that you have a profiler in desktop apps (like the ANTS profiler) or observability in web/distributed system (like Honeycomb) and the people that you hired, because they are doers, will sort any issue that comes around.
Furthermore, the problem is never technical (ok, “never”, there will be cases where the are some technical problems). The issues revolve around people, that be the processes they use, their attitudes, or their pledge to Newton’s first law (… wait … I pledge to it as well, only I keep learning). Sometimes you will find the one C-level executive that still stuck in Taylorism and hasn’t read The Mythical Man-Month (yep, they do exists). Learn how to affect people, and everything else will come into place (my favourite way is leading by example).
Organizational enlightenment
This is the part that I did not expect to happen: a different organizational model making such an impact on me. I knew about the idea of open salaries (only way to have a fair system, transparency), as that was talked in my first call with David Hall. But it was more than that. Codurance back then was trying to be a Teal organization (check the book Reinventing Organizations by Frederic Laloux for more info). And that is the best organizational model that I have seen. Of course, it is an organizational model that completely aligns with me. It is also an organizational model that requires rewiring for most people, as it breaks completely the hierarchical, top-to-bottom power that exists nearly everywhere. It wasn’t perfect at Codurance (after all, it was the first time for everyone involved), but after just finishing the book a couple of weeks ago I think I see some of the roots of the issues we faced.
What has left me is with the desire to do it again in the future.
The End
All in all, a great time, and hopefully my next adventure will be as satisfying.