At Software Garden we are obsessed with creating a work environment where we can be efficient and happy at the same time. That's why we practice agile planning - a simple and collaborative process where everyone has a chance to catch up with all the latest developments and choose the priorities they will work on.
The goal of agile planning is to create a plan that is both concrete and flexible. The plan should include goals that are:
We use timeboxes to schedule these goals. A team of two is responsible for completing a set task within two hours.
The plan should also include time where no explicit goal is set, where each team member is encouraged to work on whatever they believe to be important and pursue creative avenues that might yield great value for the team. That's why, at Software Garden, we schedule at most 4 hours for each team member per day. The rest of the time team members are encouraged to work on whatever they think is important. To achieve this balance between discipline and freedom, it is important that we trust each other. We trust one others' judgment. One team member might decide to experiment with the website design. Another might be preparing to give a talk. A third may choose to conserve energy after a particularly strenuous week. We do what feels right, and use open communication to remain accountable.
The goals selected in the plan should emerge organically and be chosen democratically. The team is in almost constant conversation about lines of action and priorities. By the time the formal planning session comes around, many potential concrete todos will have emerged from these conversations. In the planning session, the team decides together which of these are most important and urgent. Our team implements this principle by using GitLab issues as a platform to discuss our ongoing business concerns: strategies, product ideas, work for our clients, etc. From these discussions, lots of potential todos emerge. Active participation in these discussions prepares the members of our team for the planning session.
In the planning session, we use an election process to plan the timeboxes for the week. First, every team member nominates the tasks they would like to see completed in the coming week. Then, each of us casts a vote for the task they consider the most important and they can contribute to. Once a task has two votes, the people who voted for it decide when to work on it. We continue until the schedule is full.
An agile planning session includes a quick retrospective. For Software Garden, the significance of the retrospective is to catch everyone up on what was done since the previous planning session. We aren't too concerned with what work was planned the previous session--we see no benefit in the guilt-feelings that come from recounting work that had been planned but wasn't attended. Instead, we're interested in what actually happened and what should happen next.
Importantly, like all things agile, an agile planning session is iterative: we plan only for a relatively short period of time. At Software Garden, we plan for a period of 10 days. An agile planning session should also be fast. We give ourselves two-hours, tops, to hammer out a plan for the coming week. Will the plan be perfect? No. But it will make sure we're spending our time creating value for our team and experiences we can bring to the next week to refine our work.