1. Water fall works then why Agile?
- We agree that water fall works, we agree even more that agile works better.Waterfall models forces us to enter in a contract based relationship with the customer.Instead Agile model is more inclined towards collaborative working.In agile, with the shorter iterations delivering working software, the customer can get a feel of what they would get and could ask for changes early. One reason Agile came into picture is because it is a better model to incorporate frequent customer change requests.
2. How to ensure quality in 3-4 weeks iteration?
- Being Agile on the project management is not enough, Agile has to work from individual contributors till the management. The individual contributors need to be educated about Agile development methodologies like TDD, User stories, etc.
3. It is not possible to deliver some thing in 3-4 weeks
- This perception is due to past experiences in water fall, which is more focused on task completion than deliverable. In Waterfall the word "deliverable" is not uttered in the first 3-4 weeks. Here is where the basic difference comes, Agile talks about deliverables as agile believes in working software than documentation or code. In order to deliver some thing in 3-4 weeks, right from the lead to every individual level would have to contribute deliverables. Larger deliverables are broken into smaller ones.
4. How to get the more frequent client involvement?
- One of the requirements for Agile to be successful, is to have the client involved on a regular basis. If the client is not ready to receive the iterative deliverables, agile is not useful to the client as well as to the team following Agile. If for some reasons meetings do not happen with the client regularly, other ways to get the client involved to actually see the deliverables in effect is a must. For this other mediums like a audio video recording of the working software could be provided. This may help in getting the client interested to actually work with the deliverables and suggest their feedback early on itself.
Addressing the most common misconceptions or mental roadblocks for the individual contributors
1. How can 3 weeks suffice for delivering some things
- As far as individual time line is concerned. This is not a big change. Developers in Watefall model also have tasks assigned for 1/2/3 or max 4 weeks. Agile is all about changing the developers mind set from tasks to deliverables. As the developers role changes from completio n
of tasks to deliverables, they become responsible for the deliverables. In this sense they are more productive and start thinking from what really matters to the customer.
2. Daily Stand ups or Scrums - What a waste of time?
- Developers or QA testers wish to be more productive and they perceive meetings as necessary management evils. In case of Agile, the meetings are focused for individual contributers and are meant for individual contributers to provide feedback, status and put forth their roadblocks. Daily scrums are not only status update meet to report to the lead, but to provide possible risks seen by the individual contributors and corrective planning to allow individual contributor to be more productive. This is also the place to change priorities based on the daily situations
3. Updating Status on Wiki - We meet daily then why this additional overhead.
- The Status update on Wiki helps two purposes
a. Tracking Progress
b. Acts like a record, that can be used for future estimations.
Instead of shooting a email (which is hard to track), updating a wiki page, takes the same amount of time.
4. TDD works only in Theory
- Most of us acknowledge TDD is helpful, but most of us again would not take dedicated effort in that Direction. TDD (Test Driven Development) even though is easier said than done, the benefits of TDD against not doing it (as it requires time and effort) is way more than the consequences of not having TDD.
One misconception with TDD is that people think that TDD has to be implemented for even existing code. Writing TDD for existing code/legacy code is some what a non feasible operation. Instead the idea is to have strong integration test cases for existing/legacy code and follow TDD for the new development you would do.



