One of the most important aspects of software development, as not the most important aspect, are the team members. The people who have to build the software. You could come up with all kind of processes, documents, methodologies, etc., in the end the team members have to build the software. Therefore, I believe the agile office is a very important aspect of software development. I would not say good software development is not possible in an agile office. However, the other way around is certainly true. A a real agile office stimulates good software development.
I gave a presentation about the Agile office on the Benelux XP Days 2009 and an improved version on the Mini XP Days 2010 in Rheeze, near Eindhoven. For the improved version I created an survey to collect data about the use, benefits, advantages, disadvantage, etc. of the agile office. I am still interested in extra data. Therefore, if you have time please fill in this survey.
In three articles I will explain what I think an agile office is. There are three elements important in an Agile Office:
In this article I will discuss communication in the Agile Office. If you have any questions, remarks, disagree, etc. please let me know!
One the most important things in an agile office is a whiteboard. An agile office really needs one or if possible more whiteboards. The boards should be close to the engineers (Engineers are testers, developers, everyone working the development team), to make it easy to go to the whiteboard and start a discussion. When an engineer needs to walk ten meters, the step to use the whiteboard in a discussion is too high. The boards should, ideally, behind the engineers.
Make sure you always have some personal markers at your desk. How often did you not go to a whiteboard to find out there are no markers or all markers are empty… When you have a empty marker, throw it away immediately please.
What to do when you had a discussion and there are important notes on the whiteboard? Three options, first copy all the notes manually to you personal notebook. It could take some time. However, you are sure you have the notes in your personal administration. Secondly, make a photo with your fancy mobile or the fancy mobile of your colleague. Simple send the photo to all the people involved in the discussion. Sometimes it is difficult to make a photo of the whiteboard because of the reflection. If necessary, create four photo’s to cover the whole whiteboard. The last option is to leave it on the whiteboard with a clear statement that people should not wipe out the notes. This is a good approach when the notes are only necessary during the sprint and you have multiple whiteboard in your team room.
If you have the budget, a active whiteboard is a real must have. We have one mobile active whiteboard in our department and many teams are using the board. There are two major advantages, you are able to save your notes and to share the whiteboard with team members working on a different location. Most active whiteboards have software to save your notes, and easily copy them. For example, a team is having a drawing a oo-model on the board. When you would like to create some alternatives, simple copy the current page and create a new page in which you make some changes. The original is still there, and the the alternative model also. When you are done, export the pages to pdf and send them to all team members. The other advantage is very useful when you are working with not co-located team. It is possible to share your active whiteboard with simple screen sharing tools like Mikogo or GotoMeeting. With a microphone and web-cam people all over the world can easily join and see all the notes that are created on the whiteboard. When the other side uses a digital pen it is even possible for them to participate in creating notes.
Optimal communication is one of the most important aspects of (software) projects. When the team is located in one room communication could be maximised. Assuming there are not person related problems of the team members who refuse to talk to other team members. However, when you have eight persons in your team, in one room, it could be nice to have a separate meeting room. Not all discussions are interesting for everyone.A code review of developers is maybe interesting for a technical writer. Therefore, I believe every agile team should have at least one meeting room.
The meeting room should be in the neighbourhood of the team room. You are not going to walk to another floor or building to go to a meeting room. People tend to be lazy, if the room is too far away it will not be used. It should not be necessary to reserve the room in front, some meetings are planned in front. However, some discussion start spontaneously.
There are some requirements to the meeting room:
- Whiteboards, there should be at least one whiteboard in the room to make notes and drawings;
- Large table, make sure there is a large table so that there is room to make notes, move things around. You should not be limited in your freedom of movement during discussion because the table is too small;
- Chairs…, in our organisation the chairs seems to be able to walk around alone. It happens very often you walk into a meeting room and first have to find some chairs. Make sure the chairs are always there, don’t use desk chairs with wheels;
- Beamer, when the engineers or customers have notebooks it is very effective to connect the notebook to the beamer and show the screen to all attendees. Sharing the screen for a demo, discussion about a feature or reading requirements together is very effective;
- If your team is not a co-located team make sure there is a fixed communication machine. A personal computer with a web-cam, speakers, microphone and for example Skype already installed. When the communication tools are already there, it is very easily for engineers located somewhere else to join the meeting. Make sure the pc starts up automatically in the morning and shut-downs automatically in the evening.
Sometimes you are not allowed to install a communication machine in a meeting room because it is used by different departments or you have multiple meeting rooms available. A solution for this problem is a mobile communication corner. Instead of a desktop use a laptop and buy a mobile cabinet
Keep always the five minutes rule in mind when installing and configuring a communication corner. If it doesn’t work in five minutes, don’t use it!
Most of the teams have fixed workplaces, all the team members work full time in the team or have their own desk. However, some people that you would like to sit together with the team are not part of the team. They are not 100% available, for example customers, proxy customers, product owners with multiple teams, lead architects, team members from other teams, external consultants, etc. Did you ever start in a team, did you have desktop, chair, network connection? Probably not, I guess most of those items had to be arranged before and after the team stand up.
To enable external people to join the team easy, make sure you have at least one flexible workplace. A flexible workplace should consist out of:
- Desktop, easily configurable in height and not occupied by your old notes;
- Wireless network, to make sure the person is quick up and running or make sure you have some spare network cables in your team room that are not “borrowed” by other teams;
- Docking station, if you use all the same notebooks in your organisation make sure you have one spare docking station available.
As you probably already read, I find communication important. Did you ever tried to communicate with someone with your back to each others. It is possible of course. However, you should agree with me that communication face-to-face is much more efficient.
An agile office should stimulate face-to-face communication.You should be able to topics directly with your team members. There should be no cabinet or wall between you and the rest of the team. Additionally, it should also be possible to discuss in a meeting room, see the section before above.
If you are working not co-located, a face-to-face discussion is still possible. Make sure all team members have a web-cam and headset. With the Skype, your team mate is just one-click away. You should make sure the barrier to communicate face-to-face is as low as possible.
The last important topic of communication is visualisation. People are from nature visually oriented. When people have a discussion about a difficult subject, a picture really helps. There is a saying a picture is word a thousand words
When some team members of you are located in a different time zone you could of course calculate the difference every time. Some of our team members use software to display the local time. However, the old fashion clocks are used most often!
Another very powerful visualisation is displaying the automated test results, build status, etc. People are lazy from nature, they will not look up the bug count, or release progress every day. By displaying this data on monitor in a central environment people walk by, stop and are able to see the status of the project in a few seconds. When you build a display, make sure you use clear colours. Red is failure, green is OK, orange is a possible problem. The data on the monitor should be updated regularly, if possible it should be real time.
If you have a team co-located, the use of scrum boards or kanban boards is very powerful. It has the same effect as the dashboard. In a single glance, you are able to see the status of the current iteration. For everyone in the room, engineers, customers, product owners, etc. the status is visible. A side advantage is, when a topic is done you have to physically move it. Everyone in the room is able to see the change and could anticipate on the change. When you have an excel as “scrum board”, the change is not visible in the room, only after refreshing the excel file.