Agile: A Project Management Methodology
Agile is a work management method that balances staying focused on a task and being responsive to changing requirements. I believe following this methodology can help our students work better in teams and help them to become better problem solvers! I have described a leaner Agile framework for our FRC team below, minus the jargon (in italics). For a complete breakdown of Agile/SCRUM checkout the workflow
At the minimum, I think we can become agile by doing the following each week in order:
- Weekly Planning (Sprint Planning)
- Daily Standup (SCRUM)
- Weekly Review with Mentors (Sprint Review) / (Product Owner Alignment)
Weekly Planning
Planning is critical to make sure we stay focused on a set of tasks. If there is too much on our plate, we spread development too thin and make shallow products. Too little and we will not move fast enough to meet deadlines.
Weekly Planning follows these steps:
- Set estimations for TODOs (Tasks / Tickets). TODOs should be bite sized - the smaller the better! Estimates are measured in days.
- TODOs should have explicit acceptance criteria. (The product should pass a series of tests to convince the team your changes does what you say it does) See rule-oriented acceptance criteria
- Assign TODOs for each member based on their weekly commitment
Note: Estimations are never exact. The most important thing is to give better estimates each week so we better understand how fast we can complete tasks (Velocity).
Sample TODO
Title:
* Blink LED
Description:
* Write method to blink an LED given an interval in seconds.
Acceptance Criteria:
* As a programmer
* I want to be able to control how often my LED blinks in seconds
* So that I can quickly debug the robot without having to look at the debug log.
Estimation:
* 0.5 days
Assignee:
Engineer 1
Daily Standup
In short, SCRUM is daily checkins with the team to discuss the following:
- What did I do yesterday?
- What will I do today?
- What am I blocked by? (What are you struggling with? Is there anyone on the team who can help out? Are there any roadblocks in our way to reach our weekly goal?
If every member can give a short and sweet blurb each day we can maintain accountability and momentum. Put these comments for each member in the daily meeting minutes.
Sample Standup Script
Engineer 1:
* Yesterday, I worked on the Blink LED task and got the LED to turn on and off, it wasn't even turned on the day before.
* But, I am blocked because for some reason after the first blink it stays ON and I don't know why. Any ideas team?
* Today I'll continue on this Blink LED task and hope to finish it by tomorrow. If I finish early, I'll start on the Forward Movement Task.
Engineer 2:
...
Weekly Review with Mentors
Review and reflection helps us do a number of things including:
- Demo the product (How has the product improved since last week?)
- Modify / reevaluate goals (Are we still on track to finish by the deadline?)
- Meta reflection (What went well as a team / what do we need to improve on as a team?)
This is an opportunity for the mentors to see how the team is doing and for us to regroup and give guidance to help the team succeed.
Sample Weekly Review Script
Engineering Team:
* This is what we worked on last week...
* Engineer 1
Look our LED blinks! Now we don't have to look at the log so much.
* Engineer 2
...
* Weekly goals:
Looks like we overcommitted this week 😅. It turns out our tickets took two times as long as we thought! Next week we will account for this in our estimations.
...
* Meta Reflection:
I liked that we pair programmed together this week. I would have been stuck for hours if I didn't get Engineer 2's help!
I think we should keep meetings shorter. 1 hour is too long!
...
Mentor:
* (Follow up questions)
Conclusion
Agile and SCRUM help teams stay focused to improve their product and provides the foundation for collaboration. These methodologies are common practices in industry and hopefully this will help our students become better equipped to tackle their projects!
Comments