|
If you can't learn your own lessons, at least learn someone else's
Jim Dempsey of compaid.com recently hosted a webinar entitled “Agile Lessons Learned.” I was initially put off by a lengthy introduction to Scrum because I had been led to believe the material was geared towards more advanced practitioners.
Eventually, though, Jim got to the meat of his talk by going into a fair amount of detail on a few dozen lessons he’s learned over many years of training and implementation of Agile methods. Here are five points I picked out of his slides, all of which I absolutely concur with, although I have to add a “yeah, but…” to the last one.
Lesson 1: Conduct Product Owner training when introducing Scrum
When I implemented Scrum at Raven it was top-down but didn’t ingrain in the project lead the responsibilities of his role as Product Owner.
Sure, I told him he had final say on the backlog and I informed him of the deadlines he had that revolved around the team's beginning and ending of sprints, but I didn’t properly convey the critical nature of his involvement. If I had made sure he had proper training as PO perhaps the project would’ve met with better results.
Lesson 2: Don’t build the Product Backlog in the Sprint1 planning meeting
If you’re getting the stories in place for the very first time during the planning meeting for your first sprint, you are already going to impose delays on your team. You won’t have enough information in place when they need it and/or it won’t be as well thought out or prioritized as it should be.
Get your backlog sorted before you sit down to plan sprint #1. And keep in mind you don’t need the entire project prioritized into the backlog at this point. In fact, as the Poppendiecks point out in an excellent example in Implementing Lean Software Development, you don’t want to prioritize beyond the next three sprints or so – it adds too much waste from bookkeeping and most of the items will change out from under you, anyway.
Lesson 3: Tools should be used if and only if they add value to the team’s work
Do not force a tool on your team because “it’s the company standard” or any similarly poor line of thinking. First of all, I’m a big believer in the saying, “The work chooses the tool.” If you decide ahead of time that you’re going to use a hammer at all costs, you’ll reach new heights of inefficiency when you encounter your first screw.
Second, your team’s progress, work quality, and mental wellbeing have a whole lot to say about any software choice. Maybe they don’t even want software. Maybe a whiteboard and some markers will do. Let them decide what adds the most value.
Lesson 4: When Scrum gets tough (and it will) don’t succumb to old habits
You need a predetermined resolve not to fall back into your old habits of moving deadlines, working overtime continuously, and cutting corners to make a milestone.
Those are the reasons that your competitors who employ wisely iterative and adaptive improvement techniques (such as Scrum and Lean) are making better games, selling more units, and retaining better talent. You absolutely must have quality leadership to get through tough times – I’m not saying Scrum alleviates that need. But forcing overtime and increasing your production debt by pushing off features is not the solution.
Lesson 5: Team will tell you if a stabilizing sprint is needed
This is where I felt the need to add to Mr. Dempsey’s material with my own commentary. Yes, a committed team should be able to speak up and request a stabilizing sprint if deteriorating build quality requires it.
However, your producer or project lead should also be stepping in at some point to make that call. The team can do everything within its power to execute on the vision for the game, but that vision belongs to whoever holds the creative reigns.
It’s her job to provide that leadership, to make the tough decisions between adding more features and solidifying the build you’ve already got. If you’re not getting that kind of leadership from your creative lead, step up and hold her accountable.
My favorite quote: Scrum is "Extremely simple but very hard"
Overall, this webinar was helpful to someone who’s looking to implement Scrum but isn’t entirely sure what they’ll find on the other side. The material was also reassuring to folks who’ve already started working with Scrum but weren’t sure if they were the only ones having a tough time with it.
As one of the slides specifically stated, Scrum may be based on common sense, but it’s still difficult. This is, of course, true. What’s also true, though, is that the benefits of Scrum are worth the effort, especially in an arena such as game development where solid specifications are hard to come by.
In preferring Agile methods you are giving your project the best chance of creating the greatest value, pleasing the most shareholders, and minimizing your team’s crunch time.
|
Lesson 4 is especially critical.
Any citations for this? Because I don't see this as the case. I see a lot of studios looking to adopt more sustainable practices, but the poster children for Scrum in the industry aren't exactly setting the gaming world on fire.
One of the keys to avoiding this is to have regular checks of the backlog. Over the course of development, new features will be requested both by the team and external parties, things get pushed back because of bugs, etc. What's important is that you don't pretend that agile actually fixes these problems for you, rather than just providing a way to manage them.
It took me a long time to really figure out a concise way to explain the critical difference of agile vs waterfall, and here it is:
* Waterfall is all about figuring out what you can do in the time and budget that you have, then divide and conquer breaking major tasks into milestones, and milestones into deliverables, and deliverables into tasks. Good analogy: "what can you do in the time that you have?"
* Agile is all about taking a look at the current status of your project and choosing the next most important thing to tackle to add immediate value to the game. Good analogy: "how far can go take this in the time that you have?"
The bigger problems upper management can have with agile is knowing what they are going to get out of the end and when. And this is where people tend to get things very wrong. It's still perfectly valid to create milestone dates and fill them with high level deliverables, but keep it light and flexible. Agile allows teams to move things around as feature values fluctuate. It's still important for a good project manager on the team to keep an eye on the greater picture rather than the now.
And pod systems (cross-disciplinary groups) working together on high level goals allows for much tighter iteration times. People on the team are empowered by having the ability to choose what they do and how they do it rather than having a producer coming over on Wednesday and saying...
Producer: (looks on list)
Producer: "How's your ..FSM.. working coming along? Is it going to be finished today?" Note producer clearly has no idea what FSM means.
Programmer: "I don't know... I still have a few problems to work out."
Producer: "Oh okay... can you tell me how long you think it'll take?"
Programmer: "Actually no."
(more back and forth)
Producer: "Um so tomorrow you are supposed to start on the... 'Pathfinder Refactor' and you've got 2 days for that. Do you think you'll be able to get that done by Friday?"
Programmer: "What exactly do you mean by Pathfinder Refactor?"
Producer: "I have no idea what that means. But I'll go find out for you."
Programmer: (rolls eyes, goes back to work)
This folks, is why waterfall is a disease. People believe it works but I've never seen it work well.
Agile is feature driven, not resource driven. You cannot use it to measure individual team members' productivity. If you want to see hours of effort vs. output, then you should not use Agile.
Agile should be all in or not at all. Some companies half-implement Agile with so-called "strike teams" focused on specific features. The strike teams usually get all the focus of project management while the team members who are NOT in a the strike team get forgetten about.
Agile is NOT good at predicting an end date. It's great for developers who have open-ended contracts i.e. t's done when it's done, but not great for contracts with no room for iteration.