Most people have had experience of meetings that seem to drag on with no real purpose and which seem to eat up time for very little benefit. People like to complain about this kind of meeting, and they are right to do so. A well-managed meeting has some very specific characteristics:
It has a purpose that everyone is aware of - everyone knows why they are there and what job they are required to do
It has a pre-prepared agenda - everyone knows how long the meeting will take and when they will be free again afterwards
It has a chair - one of the people attending the meeting has the job of keeping to time, ensuring that the agenda is covered, and that everyone is able to contribute effectively
It has a minute-taker - one of the people attending the meeting makes notes of what was discussed, what decisions were taken and what actions were assigned to attendees
In a software development project, there is a risk that as soon as a technical discussion starts in a meeting, the attendees become so engrossed that the agenda is forgotten and the purpose of the meeting becomes blurred. A major motivation for the agile approach to software development is the elimination of unnecessary or counter-productive activities. Meetings are clearly a risky undertaking since they can take effort to prepare and can easily be knocked off-track. On the other hand, a major benefit of meetings is that they punctuate the flow of work and ensure that information is made available to all attendees as required. The only question is how to realise these benefits without the disadvantages.
In a software development project, the daily work of the team consists of selecting system features to work on, developing the software, performing tests and checking in code. The specific features change, but the nature of the work is essentially the same on every day of the project. This suggests that certain types of meeting need very little planning since the agenda will be the same every time. Also in a development team, technical discussions happen in an ad-hoc fashion throughout the project. When someone has a problem or wants a second opinion, they will simply have a conversation with another developer. This is a natural part of software development and there is no need to formalise such discussions unnecessarily as a meeting.
Bearing these characteristics in mind, the agile solution is the daily stand-up meeting - and yes, it is conducted standing up. The idea is that if people are allowed to sit down, they will get comfortable and will start to enjoy the conversation and its many potential digressions. Standing up makes most people uncomfortable, and it therefore encourages everyone to avoid distractions and get through the meeting as efficiently as possible. The daily stand-up has a simplified agenda which is managed by the agile team leader. In its simplest form, the agenda consists each team member answering three questions:
- What did I accomplish yesterday?
- What will I do today?
- What obstacles are impeding my progress?
These are usually sufficient for the team leader to assess the current rate of progress, for each developer to get a sense of what is currently being done and their own part in the team progress, and for issues to identified and resolved. Every team member is responsible for making their own notes about things that affect them. Any topics that look as though they are going to take any significant time to discuss are put to one side so that the people affected can pick them up again after the stand-up.
Some suggestions for making the daily stand-up work well are:
- Keep the meeting to under 15 minutes
- Make sure your project management information is visible (eg Kanban board)
- Have a regular time so that everyone knows when the stand-up is going to take place