Agile development is all about stacking the deck in favour of success.
We continuously adapt the application and process to improve it. In code, this is called refactoring - rearranging the parts to a simpler, more manageable form.
But it does not end here.
You should refactor your workspace, too.
We just did that on my current project.
Success is the result of setting the frame for efficient focused communications about the project: making sure the developers are moving in the same direction as the customer’s expectations.
If the “information cost” is low everybody will have more information and be more likely to do the right thing. Chances that the application and the customers need diverge get smaller. The success expectancy goes up.
So just as with programmatic interfaces the people interfaces should be clean and efficient. Hence the need to put people in a physical setting where it is easy to do the right thing.
Realising that we were not moving as quickly as we wanted to we refactored our team office layout. Instead of sitting in two separate rooms, we moved the project manager and the customer’s project manager into the development team office, putting the customer and PM next to the GUI-guys. This way they can easily talk about the requirements, implement the acceptance tests (we are using Selenium), and the code.
Excellent communication ensued.
In the first two hours after moving people around the PM - who is also implementing a lot of the requirements as tests - started having much better conversations with the developers. The customer stepped in to clarify some issues. Then more developers stepped up with more questions and eventually the requirements for the central part of the application became much clearer.
In a few hours we unveiled more mistakes and incongruencies between the application and the customer’s expectations than we had done in the previous two weeks.
It results in some rework now (rather than later) and it drove home the point that communication is key success factor. Therefore refactoring the physical environment is a first-class activity in agile development optimization toolkit.