This story explains why I started to stop working as a anarchistic-multi-tasking-schedule-driven and learnt how to become a good team leader.
How it started
March 2015, Puppet OpenStack project just moved under the Big Tent. What a success for our group!
One of the first step was to elect a Project Team Lead. Our group was pretty small (~10 active contributors) so we thought that the PTL would be just a facilitator for the group, and the liaison with other projects that interact with us. I mean, easy, right?
At that time, I was clearly an unconsciously incompetent PTL. I thought I knew what I was doing to drive the project to success.
But situation evolved. I started to deal with things that I didn’t expect to deal with like making sure our team works together in a way that is efficient and consistent. I also realized nobody knew what a PTL was really supposed to do (at least in our group), so I took care of more tasks, like release management, organizing Summit design sessions, promoting core reviewers, and welcoming newcomers. That was the time where I realized I become a consciously incompetent PTL. I was doing things that nobody taught me before.
In fact, there is no book telling you how to lead an OpenStack project so I decided to jump in this black hole and hopefully I would make mistakes so I can learn something.
Set your own expectations
I made the mistake of engaging myself into a role where expectations were not cleared with the team. The PTL guide is not enough to clear expectations of what your team will wait from you. This is something you have to figure out with the folks you’re working with. You would be surprised by the diversity of expectations that project contributors have for their PTL. Talk with your team and ask them what they want you to be and how they see you as a team lead. I don’t think there is a single rule that works for all projects, because of the different cultures in OpenStack community.
Embrace changes
… and accept failures. There is no project in OpenStack that didn’t had outstanding issues (technical and human). The first step as a PTL is to acknowledge the problem and share it with your team. Most of the conflicts are self-resolved when everyone agrees that yes, there is a problem. It can be a code design issue or any other technical disagreement but also human complains, like the difficulty to start contributing or the lack of reward for very active contributors who aren’t core yet. Once a problem is resolved: discuss with your team about how we can avoid the same situation in the future. Make a retrospective if needed but talk and document the output.
I continuously encourage at welcoming all kind of changes in TripleO so we can adopt new technologies that will make our project better.
Keep in mind it has a cost. Some people will disagree but that’s fine: you might have to pick a rate of acceptance to consider that your team is ready to make this change.
Delegate
We are humans and have limits. We can’t be everywhere and do everything. We have to accept that PTLs are not supposed to be online 24/7. They don’t always have the best ideas and don’t always take the right decisions. This is fine. Your project will survive.
I learnt that when I started to be PTL of TripleO in 2016. The TripleO team has become so big that I didn’t realize how many interruptions I would have every day. So I decided to learn how to delegate. We worked together and created TripleO Squads where each squad focus on a specific area of TripleO. Each squad would be autonomous enough to propose their own core reviewers or do their own meetings when needed. I wanted small teams working together, failing fast and making quick iterations so we could scale the project, accept and share the work load and increase the trust inside the TripleO team.
This is where I started to be a Consciously Competent PTL.
Where am I now
I have reached a point where I think that projects wouldn’t need a PTL to run fine if they really wanted. Instead, I start to believe about some essential things that would actually help to get rid of this role:
- As a team, define the vision of the project and document it. It will really help to know where we want to go and clear all expectations about the project.
- Establish trust to each individual by default and welcome newcomers.
- Encourage collective and distributed leadership.
- Try, Do, Fail, Learn, Teach. and start again. Don’t stale.
This long journey helped me to learn many things in both technical and human areas. It has been awesome to work with such groups so far. I would like to spend more time on technical work (aka coding) but also in teaching and mentoring new contributors in OpenStack. Therefore, I won’t be PTL during the next cycle and my hope is to see new leaders in TripleO, who would come up with fresh ideas and help us to keep TripleO rocking.
Thanks for reading so far, and also thanks for your trust.