Does anyone do Agile Development correctly?
Throughout my career I’ve had the opportunity to work for a few shops that claimed to be ‘Agile’ but were really just using the term poorly and inflicting increasing amounts of stress on the developers by trying to manage a non-agile process/project in an agile manner.
Now it is possible that you do not know what Agile Development is, so let me pause and summarize a wikipedia article on the subject.
Agile software development refers to a group of software development methodologies that promotes development iterations, open collaboration, and process adaptability throughout the life-cycle of the project. It chooses to do things in small increments, with minimal planning, rather than plan at length. This helps to minimize the overall risk, and allows the project to adapt to changes more quickly. There is also an emphasis on stakeholder involvement. Meaning at the end of each iteration, the stakeholder is consulted about the product and comments are noted.
From this article I get the following main points:
- Emphasis is placed on producing working software as a measure of progress instead of project planning and documentation
- Development time for each iteration or release is typically between 2-4 weeks
- Strong reliance on unit tests. In fact the unit test is usually written before the actual development. Once the unit test passes, the development is considered complete
- Constant communication with the customer is vital to ensure that the small changes being made are in line with the customers requirements
The article even goes on to give some recommendations on what types of cultures work with agile methods:
Agile:
- Low criticality
- Senior developers
- Requirements change very often
- Small number of developers
- Culture that thrives on chaos
Plan-driven:
- High criticality
- Junior developers
- Requirements don’t change too often
- Large number of developers
- Culture that demands order
So in order for Agile Development to work, you need to have a small group of really good developers that WANT to work within these bounds. The problems that I continually see is that businesses see the benefits that come from using agile methodologies, so they make a decision to go that route without understanding the basic requirements that must be met to be successful. You must have a small team, or break the team up into smaller sub-teams. You must have talented programmers – trying to do this with junior developers will result in chaos. You must adhere to the process – use test driven development, and continually strive for technical excellence. You must empower your developers to do their jobs without running into roadblocks and trust them to do the right thing.
My current employer claims that we are an agile environment but we adhere to only one rule – short turn around on projects. In all reality we are more of a waterfall environment in an agile time frame. We do not have a unit testing framework, and many times our code is released without being tested by QA. I think a coworker summed it perfectly when he said “We do agile development without any of the safety nets”.
So this brings me to my question. Does anyone do Agile Development correctly? Is it possible to take an existing team and code base and make it into a successful agile environment?
September 8th, 2008 at 4:00 pm
I agree with most of your points. However, it seems as if you blame a good portion of the lack of agile development on the company or the employers. I would suggest an alternative reason: the users, customers are not willing or accepting of it. They want their product, they want it now, they don’t want to be involved. I think about if I were to purchase a car. I want it done and now. I don’t want to be involved with the upholstery – just do it. And if I don’t like it, I expect you to fix it.
I think what the problem is – is that we’re running into a paradigm shift. Shops may want to do Agile, but the customer keeps making them do something else. And, as a shop, you have to cater to the needs of the user to pay the bills, unfortunately. I also think a lot of us younger Agile minded developers are doing work for older institutions like banks, insurance, etc, who are very much resistant to that (see your second set of bullet points).
Over all, good article. Keep up the good work
September 8th, 2008 at 4:17 pm
Aaron, thanks for the comments!
I do agree with your points, I just have not been in a situation where it was the customer that was hindering agile development, it has always been (in my experience) hindered by the company. Hopefully someday I will be able to experience a true agile environment and see how much it can be affected by customers.
I do agree that we are in a paradigm shift, especially with the web. This shift may be part of the issue, but what I have seen is more lack of actual understanding by decision makers. What I am really looking for is help on how to make a successful transition to a true agile environment with an existing code base and a staff of junior developers.
Thanks again!