Channel 9 has a very cool video (http://channel9.msdn.com/showpost.aspx?postid=238321)that takes you on a tour of their Patterns and Practices new million dollar lab that has been specifically built to facilitate Agile type development. While I am not a huge Agile fan, I was definitely impressed with the thought that was obviously but into designing their facility to help their development teams write better software faster. I lean more to a hybrid SDLC approach that is somewhere in the middle of Agile and traditional waterfall methodologies. But some of the ideas express in the video were very appealing not matter what flavor you prefer.
I am a big fan of team development. I hate to sit in a cube all day banging away on my keyboard talking to myself. In my past projects where our development team was sequestered together are some of the best experiences I have had in my career. Sure there are distractions that come with cramming a bunch of socially (and sometimes hygienically) challenged developers together in one space, but I think the advantages far outweigh the disadvantages.
But I think you need to put more than just developers in the mix. I think you need representatives from the business side, testing, project management, etc. Yes at times it can be chaotic, but with some internal policies and discipline you can more effectively write software that has a better chance of meeting your user’s requirements and most likely will have fewer defects.
My current project has a fairly large team so we are not all in one room, but we do have the majority of the team in a few conference rooms in the same building. I can attest that this has made the process more accurate than developing in a vacuum. The ability to turn to someone from the functional requirements team to get clarification on something or confer with another developer to formulate the best approach for a solution definitely makes a difference. We are not an Agile shop (by no means), but this team integration and emersion has helped us react and course correct more effectively.
Here are a few ideas/issues that we have discovered:
· There is no such thing as enough whiteboard space. Our current conference rooms have entire walls covered with a floor to ceiling whiteboard. This has been a great tool for brainstorming, task tracking, and smack talking.
· It really helps if most team members have laptops. We move from room to room, meeting to meeting and being able to tote my laptop has made each developer a mobile worker. Each of us has an actual desktop sitting somewhere in the building that we generally remote into to get the extra horsepower of a full blown PC. The ability to grab a few developers and go to another workspace to work made us a much more flexible team.
· Definitely put in some common sense common courtesy guidelines to try to quell the intrinsic chaos. Here are just a few:
o Take phone calls outside the room.
o Unless the majority of the people in the room are involved in a meeting or conference call, do not hold it in the room.
o Spend the money on a good set of headphones that will block out the external noise, but also do not add to it.
o Keep your immediate workspace as sparse as possible. It helps to put a few filing cabinets around for people to store all their extraneous documents and other work resources.
· Have a few smaller rooms or cubicles for those times when you do need privacy or just need to get away from it all.
I have to say that the next time I am a lead for a development endeavor I definitely will implement as much of the team development culture as possible regardless of what type of methodology we use.
Tommy