When I was at high school I had a weekend job washing dishes at a busy local restaurant. The job involved a number of responsibilities
- operating the dishwashers for the crockery
- Keeping the kithchen stocked with crockery to ensure orders could go out
- Manually supporting the chefs in washing pans and cookware to meet demand
- Operatng the glass washer and keeping the bar stocked with glasses to meet demand
I also, when required, could step in for others to help with their tasks
- serve behind the bar (barman)
- serve food (server)
- clear tables (server)
- make desserts (server)
- cook starters (sous chef)
The restaurant could have adopted the approach of not having a washer-upper. The work would still have needed doing, but could have been fulfilled by other members of the team (e.g. every server washing all trays he/she cleared, all chefs washing their own pans). I was, however, very good at washing up. I knew what needed to be done to meet the needs of the rest of the team and how often. I knew the environment and had optimised my approach within it to the extent that it took 3 servers to cover when I was called off to other jobs. Given that someone was constantly required to be washing up, it made sense to have an individual devoted to that job who was better at it than the other team members.
The multi-skilled team
I think this example is a great case of a multi-skilled team of what Scott W Ambler calls Generalising Specialists or as Jurgen Appelo calls them T-shaped people. For low workload situations the number of individuals is reduced and the coverage of roles distributed across them. For more intensive workloads the benefits of having generalising specialists become apparent. Each individual has a key area of responsibility, however has the knowledge to step in and cover other roles as the pressures and bottlenecks ebb-and flow through the course of an iteration (sitting).
The benefits of devoted attention
Much as the many aspects of the washer-upper's position, the banner of Software Tester for the purposes of discussions such as the recent one on the Yahoo Agile Testing group, can be viewed as a matrix of roles and responibilities (which I feel is growing, not shrinking, but that's another topic). Some teams will operate by sharing these roles and responsibilities across the team without individuals assigned to the testing position, and will be successful. The testing roles, however, will still be present and need to be filled.
The question posted recently was whether TDD or ATDD/BDD will render the traditional testing role redundant. I don't think so. If a job as simple as the washer-upper can demonstrate the benefits of having skilled individuals concentrating on maximising effectiveness in an area of responsibility, then this benefit is only going to be amplified as the difficulty and complexity of the role increases. Having individuals with specific testing expertise whose primary concern is on this subject area has certainly payed dividends in my organisation, where the effectiveness and scale of testing performed (and consequentially knowledge and confidence) are far greater now than were experienced when reliance was far more on developer led testing.
As to whether it is sufficient for a tester to have only testing skills and responsibilities, that is another question for another post.
Copyright (c) Adam Knight 2009-2010