Skip navigation.

Tester-developer/developer-tester... transitional like ye-olde analyst-programmer

agile | people issues

Cross-functional teams are growing in popularity, influenced in no small part by the growth in adoption of agile values and the methodologies that support them.

Whether it's a side effect of getting developers and testers working more closely or due to the undulating skills demands from iteration to iteration, each team-member is increasingly expected to have more diverse skills. Furthermore, Test Driven Development increases the need for developers to know more about testing; automated acceptance tests as part of Acceptance Test Driven Development written in the same language as the product increases the need for testers to know about programming.

On teams like this, each distinct discipline-specialist learns more about the other disciplines over time. The resulting multi-skilled team-members, as I described yesterday, allows the team to better cope with undulating skills demands from one iteration to the next.

Once someone is considered a tester-developer or developer-tester... then what? I believe that, more and more, this will become the norm... as it did in the 1990s with the term analyst-programmer... The term analyst-programmer came about as more and more programmers were expected to also do systems analysis... I.e. they were expected to develop the skills to dynamically switch between the two roles... Eventually, the fact that they were switching roles was simply considered to be a part of development... replacing the title analyst-programmer with "developer".

This is what I think is happening again... the developer-tester/tester-developer (whatever you want to call it) is basically an analyst-programmer-tester. Someone who is expected to have the skills to dynamically switch between roles.... like the special forces scenario from yesterday's post:

When special forces perform dynamic entry into a hostage situation, there are several roles... Point-man, Method-of-Entry (MOE), Team-lead, support. These roles shift around dynamically based on who gets to which position that role can be best performed from. As one room is cleared, they may not be in the same position on the next door they have to breach... so each person just instantly switches roles. Yes, they might have one person who is a specialist in methods of entry or another who is a crack-shot and is the ideal point-man... but they can all do each others jobs, albeit to varying degrees of competency. Despite these variations in levels competency - they are all competent in each others speciality. They don't have time to shuffle around to get into the position that the job title dictates... time is of the essence... they can afford absolutely no waste in the process... and eliminating waste is a corner-stone of agile development.

As more and more companies move towards agile methods, and more and more teams start to see testing as part-and-parcel to development as they see analysis and programming... the need to distinguish between the two will simply reduce over time... we will all be expected to be competent in all three. The term developer-tester will simply fade away and be replaced with... you guessed it... 'developer'... as did ye olde analyst-programmer.