People
might say there is no point in 'day dreaming', but sometimes that may help you
define what's the kind of ideal world that you want to build for you and the
organization. A recent survey stated that most organizations are not deriving
the benefits out of their agile adoption and the people who claimed reaping
benefits didn't actually follow agile practices (http://adtmag.com/articles/2012/07/13/report-says-agile-a-scam.aspx)
If
you think why such reports are surfacing, most organizations are far from the
idealistic agile practices while still maintaining that they are agile. So it's
good to remind ourselves then and there how an idealistic agile team will look
like
Product Owner (PO)
- Ideally the PO should be the customer herself. If that's not possible, the PO should truly represent the customer interests and should be a clone of the customer in realistic terms
- PO should be a thought leader and a product strategist. She must be aligning the product features, customer/market needs and the sponsor (or top management) interests continuously. It's actually a triangle that one side cannot be altered without affecting the other side
- PO should NOT shy away from decision making. But still applies self-control because though changes are encouraged in agile, in and out changes will drain the budget while creating frustrations down the line
- PO should be agile @ heart. If she is not agile, then the team cannot be one
Scrum Master (SM)
- Ideally SM doesn't have other responsibilities like coding or testing. I have noticed dilution of original responsibilities when SM is pinned with dev/testing activities
- SM has an intellectual understanding of agile.
- SM tries all the time to upgrade herself into an agile coach.
- SM just facilitates the team members to innovate , execute and improve.
- Resolves disputes, protects the team from external influences
- Makes the team responsible for its output and help them take pride in whatever they accomplished
Developer (Dev)
- Dev interacts with the PO, stakeholders, testers and other cross functional experts to better understand the requirements
- Dev is very transparent, announces the correct status always, openly discusses the difficulties faced either to get help or to educate others
- Dev understands the bigger picture though she works on the current iteration
- Dev mercilessly refactors her code as and when requirements and the design matures.
- Dev writes simple, dull, non-surprising code. She understands simple design or simple code is the most difficult job
- Dev doesn't do any magic, just writes readable, maintainable and very well documented code
- Dev uses re-usable components and frameworks. Doesn't write any code that's already available.
- Dev simulates the real life objects and problem domains in her code
- Dev minimizes the risks by identifying and using design patterns, uses tried and tested solutions
- Dev doesn't say 'DONE' unless and until the unit tests are done
- Dev releases on time to enable the testers to complete their job.
- Dev demonstrates the working application to the PO and gets her feedback directly, doesn't allow anyone to demonstrate her code
Tester (TR)
- TR stands-by for the PO in her absence. Team consults her on the requirements when the PO is inaccessible
- TR is the guardian of requirements and customer needs. She understands the customer's business domain
- TR takes care of the builds and releases. Advises the PO and SM on the real quality level of the software
- TR writes test cases, automates them and more importantly uses them
- TR shares the test cases with the devs. Ensures that the test cases are covered by the dev before accepting the code for testing
- TR knows that catching the bugs in the dev's work station or very near to the place where the code is produced, is the most efficient and cost effective testing
- TR refuses to test if unit testing is not done or not properly done
- TR knows that her job is not only to catch bugs/entering in the bug tracker, but to improve the quality of the software and increase the returns to the customer
- TR, apart from testing, uses the software just like a customer does. Evaluates if she would pay for the software if she were to be the real user
- TR sits with the customer, sees how the customer perceives and uses the software
- TR is more technical than the devs. Doesn't shy away from writing a tool that just tests the software.
