Agile Methodologies
There was some really interesting discussion going on at http://www.codinghorror.com/blog/archives/000999.html regarding Pair Programming vs. Code Reviews, and it got me thinking about the agile methodologies I think are most effective. The team I work with seems to have a good grasp on what it takes to get good software out the door, so I thought I would share...
The first thing I have to acknowledge is that the people I work with are all pretty sharp. They are all creative, thoughtful and diligent about their work. Each is an expert in their respective field of expertise. More importantly, people are helpful to each other - generally speaking, everyone is kind, considerate and nice. Most people will come up to speed with a dynamic environment, but some people just don't get it, and won't! It is really essential that the right people are brought into the mix.
The importance of communication cannot be understated. My project team consists of seven people, including three BAs and four coders. We are in constant contact with other groups within our company and do occasionally "borrow" people. To foster communication, everybody is in close proximity to one another. Each person has their own office/cubicle, but no one is more than a few hundred feet away - most are next door to each other. We have a SharePoint site so that documents can be shared between team members and between teams. Everybody has a well publicized phone number, cell phone number, email address, and I have several coworkers on speed dial with Yahoo! Messenger. In this environment you can share knowledge, pair program, code review whenever the need arises. There are literally no barriers to communication.
We take the agile "iterative" approach, so our project is constantly moving forward. There is a never ending queue of new features, performance improvements and bug fixes to keep us busy. We do nothing that is not required, but always have an eye to the future. While we are making something work, we contemplate how it might be improved in the next iteration, and our code reflects that foresight. This keeps our customers happy in the short term and our development targeted on the future.
The first thing I have to acknowledge is that the people I work with are all pretty sharp. They are all creative, thoughtful and diligent about their work. Each is an expert in their respective field of expertise. More importantly, people are helpful to each other - generally speaking, everyone is kind, considerate and nice. Most people will come up to speed with a dynamic environment, but some people just don't get it, and won't! It is really essential that the right people are brought into the mix.
The importance of communication cannot be understated. My project team consists of seven people, including three BAs and four coders. We are in constant contact with other groups within our company and do occasionally "borrow" people. To foster communication, everybody is in close proximity to one another. Each person has their own office/cubicle, but no one is more than a few hundred feet away - most are next door to each other. We have a SharePoint site so that documents can be shared between team members and between teams. Everybody has a well publicized phone number, cell phone number, email address, and I have several coworkers on speed dial with Yahoo! Messenger. In this environment you can share knowledge, pair program, code review whenever the need arises. There are literally no barriers to communication.
We take the agile "iterative" approach, so our project is constantly moving forward. There is a never ending queue of new features, performance improvements and bug fixes to keep us busy. We do nothing that is not required, but always have an eye to the future. While we are making something work, we contemplate how it might be improved in the next iteration, and our code reflects that foresight. This keeps our customers happy in the short term and our development targeted on the future.