Changing how we work
As those of you who read the https://communityblog.fedoraproject.org/state-of-the-community-platform-engineering-team/ blog know, we are looking at changing workflows and organization around in the Community Platform Engineering team (of which, I am a member). So, I thought I would share a few thoughts from my perspective and hopefully enlighten the community more on why we are changing things and what that might look like.
First, let me preface my remarks with a disclaimer: I am speaking for myself, not our entire team or anyone else in it.
So what are the reasons we are looking for change? Well, there are a number of them, some of them inter-related, but:
- I know I spend more time on my job than any 'normal' person would. Thats great, but we don't want burn out or heroic efforts all the time. It's just not sustainable. We want to get things done more efficiently, but also have time to relax and not have tons of stress.
- We maintain/run too many things for the number of people we have. Some of our services don't need much attention, but even so, we have added lots of things over the years and retired very few.
- Humans suck at multitasking. There's been study after study that show that for the vast majority of people, it is MUCH more efficent to do one task at a time, finish it and then move on. Our team gets constant interruptions, and we currently handle them poorly.
- It's unclear where big projects are in our backlog. When other teams approach us with big items to do it's hard to show them when we might work on the thing they want us to, or whats ahead of it, or what priority things have.
- We have a lot of 'silos'. Just the way the team has worked, one person usually takes lead on each specific application or area and knows it quite well. This however means no one else does, no one else can help, they can never win the lottery, etc.
- Things without a 'driver' sometimes just languish. If there is not someone (one of our team or even a requestor) pressing a work item forward, sometimes it just never gets done. Look at some of the old tickets in the fedora-infrastructure tracker. We totally want to do many of those, but they never get someone scheduling them and doing them.
- There's likely more...
So, what have we done lately to help with these issues? We have been looking a lot at other similar teams and how they became more efficient. We have been looking at various of the 'agile' processes, although I personally do not want to cargo cult anything, if there's a ceremony some process calls for that makes no sense for us, we should not do it.
- We setup an 'oncall' person (switched weekly). This person listens for pings on IRC, tickets or emails to anyone on the team and tries to intercept and triage them. This allows the rest of the team to focus on whatever they are working on (unless the oncall person deems this serious enough to bother them). Even if you stop and tell the person you don't have time and are busy on something else, the amount of time to swap that out and back in already makes things much worse for you. We of course will still be happy to work with people on IRC, just schedule time in advance in the associated ticket.
- ticket or it doesn't exist. We still are somewhat bad about this, but the idea is that every work item should be a ticket. Why? So we can keep track of the things we do, so oncall can triage them and assign priority, so people can look at tickets when they have finished a task and not been interrupted in the middle of it. So we can hand off items that are still being worked on and coordinate. So we know who is doing what. And on and on.
- We are moving our 'big project' items to be handled by teams that assemble for that project. This includes a gathering info phase, priority, who does what, estimated schedule, etc. This ensures that there's no silo (multiple people working on it), that it has a driver so it gets done and so on. Setting expectations is key.
- We are looking to retire, outsource or hand off to community members some of the things we 'maintain' today. There's a few things that just make sense to drop because they aren't used much, or we can just point at some better one. There's also a group of things that we could run, but we could just outsource to another company that focuses on that application and have them do it. Finally there are things we really like and want to grow, but we just don't have any time to work on them. If we hand them off to people who are passioniate about them, hopefully they will grow much better than if we were still the bottleneck.
Finally, where are we looking at getting to?
- We will probibly be setting up a new tracker for work (which may not mean anything to our existing trackers, we may just sync from those to the new one). This is to allow us to get lots more metrics and have a better way of tracking all this stuff. This is all still handwavy, but we will of course take input on it as we go and adjust.
- Have an ability to look and see what everyone is working on right at a point in time.
- Much more 'planning ahead' and seeing all the big projects on the list.
- Have an ability for stakeholders to see where their thing is and who is higher priority and be able to negotiate to move things around.
- Be able to work on single tasks to completion, then grab the next one from the backlog.
- Be able to work "normal" amounts of time... no heroics!
I hope everyone will be patient with us as we do these things, provide honest feedback to us so we can adjust and help us get to a point where everyone is happier.