Teams usually adopt an agile process in order to achieve a happier customer, a happier team and a happier manager — see this previous post for more on that. But by having a good agile process teams can achieve other great benefits as well. One of these benefits that most of you probably aren’t focusing on, is growing your dev teams to be mature, responsible and effective.
And it‘s no surprise this is not what you’re focusing on. It might be clear how being agile can contribute to your delivery and the value you’re providing. It might be less clear how being agile can contribute to your engineering team’s development. Also, it’s more straightforward for managers to work on team members’ personal development than on team development. But it’s a shame this aspect is sometimes overlooked. In the long run it’ll help the team deliver more complex features with higher quality and in less time.
In this post I’d like to highlight how to elevate your agile process — mainly the sprint planning, daily standups and sprint retrospective — to allow and encourage your engineering team to grow and develop.
Agile teams usually start their sprint with a planning session where the product owner and the team discuss upcoming tickets. The goal is to set the scope of the coming sprint (a.k.a the “sprint backlog”) and get the team’s commitment to that scope. The sprint planning is a great place to grow the team — or keep it from growing.
The planning should definitely not be where the product owner lets the team know what they’re expected to achieve this sprint. I know, it’s tempting… But this kind of approach puts the team in a place with very little responsibility and no real commitment. Instead, the product owner should highlight the team’s priorities for the coming sprint, go through each relevant story and present what’s required. Then it’s the team’s job to make sure the ticket is ready for work and the acceptance criteria is clear.
The team may ask for clarifications. They may ask questions the product owner doesn’t have the answer to or hasn’t even thought about. They may raise concerns or impediments. And in case it has a major effect on the complexity/dependencies of the task, they may need to discuss the implementation on high level. Great! These are good things! As long as the discussion is effective and well-facilitated, this is an investment of everyone’s time that will return itself. The team needs to do that so they can:
Some tickets are ready for the sprint. Some tickets may not be ready yet and should be put back in the product backlog. Others may require more preparation and we need to do some research or talk to some other team so we can start working on them next week. You go through the tickets, add them to the sprint backlog one by one and discuss each of them. At some point the team says “that’s it, this is the amount of work we believe we can do this sprint”. If you’ve been around, you already know making this decision is a complicated thing by itself, and we’ll keep it for another post.
If you don’t do the above, three things are very likely to happen:
This will happen, I assure you.
Actually, unless you’re working on a very simple project, it’s probably already happening.
If you do encourage your team to be more active in the sprint planning, you’ll be doing them and yourself a huge favor.
The team should also be responsible for adding and prioritizing engineering tasks. This could include areas such as monitoring, error logging, upgrading 3rd party libraries etc. They know the product’s engineering side best, so they should be responsible of these tasks. If you encourage them to do so they will raise important issues and this will lead to a more stable, robust and faster product with less bugs and downtime. This will also push them to be more proficient and proactive, to think more about the product, and even to learn more about these topics.
The sprint planning is a conversation. And in that conversation, the team is a participant, and a valuable one.
The more you encourage the team to participate in this conversation it will lead to faster delivery of more quality features. And the more the team participates, it will grow and become stronger, more proficient and more responsible.
The daily standup is a quick daily meeting agile teams hold to catch up and sync on the their tasks. A lot of teams use the famous three questions practice to have an effective session.
So we have a daily meeting where all team members take turns in talking about their progress yesterday and what they plan to achieve today. With the team lead present, that’s basically the perfect setup for… micromanagement. Even more so if that team lead is a dominant figure (and many times they are). An interesting symptom that you can see in a lot of teams is team members talking mostly to the team lead when they give their update. It’s just a very human thing to do.
If you let yourself fall into the “daily micromanagement” pitfall you’re keeping team members focused only on their current tickets. They focus on their current tickets all day, and at the standup they should also focus on the team’s goal to complete what we committed to. You’re basically encouraging them to keep a very low level of responsibility and accountability. You’re missing out on a great opportunity to grow the engineering team.
Let me be very clear about it:
The team is the owner of the sprint backlog. This is very important so I’m going to repeat it:
The team is the owner of the sprint backlog.
And it’s the team’s job to do whatever they can to complete the sprint backlog by the end of the sprint. The daily standup is a tool which serves to help the team understand their progress versus the sprint backlog. It’s their opportunity to communicate, see where they stand and adjust accordingly. If there’s a problem with one of the tickets we can notice it together and communicate it to our stakeholders. If one engineer is stuck, another engineer may offer help. If there are many items waiting for code review, the team might make a decision to not start working on new items before reviewing those. If we’re getting close to the end of the sprint and there’s a big ticket we haven’t even started yet, the team may decide to make that the next ticket. The team owns the sprint, we sync every day and regroup as needed, as a team.
By applying this state of mind in your daily standups, you’ll remove the dynamics of the team lead and product owner as the only people responsible and team members caring only about their tasks at hand. It’ll be replaced with dynamics which allow the team to take ownership, encourage them to be responsible for their progress and results, and make them face daily challenges and find solutions as they go. The beauty is that once the team is proactive and takes responsibility there’s much more to learn from and improve on when the sprint ends.
When team members make comments on where you stand as a team considering the sprint backlog, when they suggest how to handle a problem they’re facing as a team, when they make eye contact with everyone during their update and not just with the team lead — team growth is taking place.
The sprint retrospective occurs at the end of the sprint and is focused on learning from how the team performed during the sprint. While there are many ways to conduct this meeting (google it), my first tip for the retrospective is this: do it!
Some teams focus on the more straightforward meetings — the sprint planning and daily standups — and leave the retrospective out of their process. Don’t be that team. This is where we can look ourselves in the eye, and ask what went well and what could have gone better. This is exactly where the team can grow! And it’s even more true for a new team. If the team was just recently formed, don’t wait for it to be more “mature” before you introduce this meeting into your process. Having a place to examine how you worked together and what you could do better next sprint is a great tool for your team to get better faster.
Run the meeting with a learning and improvement state of mind. Discuss interesting positive/negative incidents that took place. You know how they say catching an exception is a good thing because you now know there’s a problem? Well, discussing a negative experience is a good thing for the same reason. You realize there’s a problem and you talk about how to improve for next time. What did we do well? What could we have done better? How can we become a smarter, more productive, more effective team when the meeting ends and we leave the room?
Look at what you thought you’ll get done at the beginning of the sprint. Were we close to our estimations? What can we learn about our pace? If we achieved much less than we expected, was it just bad estimation or did something hold us back? If we accomplished much more, what can we keep doing to maintain that momentum in the coming sprint/month/year? We were the ones that set the sprint scope, and we were the ones looking at the board every day trying to adjust according to our progress. So we are the ones accountable and it’s up to us to check how we did
Getting everyone involved, not just the already very engaged team members, is crucial for effective group learning.
Here’s what you can do:
Apply the above and you’ll start seeing a couple of things:
By applying these small changes to recurring meetings you can achieve the above and help your engineering teams grow. This will help the team deliver more complex features with higher quality and in less time. Try it out, let me know how it goes!
If you liked this post click the ♡ bellow. As a writer it means the world.
If you want Medium to tell you about new posts click the Follow button.