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.

Ye-oldie tester...

I have seen this working in small, low risk areas where the teams have matured into the role, understand the system well and the system is "not too big". In larger, more technical projects, the role of the architect/analyst is still highly relevant and not a common skill amongst all developers. Likewise, good testing skills are not easy to gain either.

The adage that comes to mind is "Jack of all trades, master of none." This is borne out of people trying to do too many different roles and actually cannot specialise in one. There is too much to know and learn about producing good code, that to expect people to be specialist testers and analyst is perhaps unreal?

The final point is that, would you want to have the same people doing all the roles. Rather why not go for the benefit of have experts in each field that can also diversify into other areas. This brings a strength to a team that provides a number of different perspectives and hence enhances the overall robustness of the product.

Stevan Zivanovic

I agree with your comments,

I agree with your comments, the gap is closing. But does that mean it's better to be a developer or a tester going forward? Will we merge, or will developers pickup the skills required to replace testers?

For graduates starting out, does it matter which approach they take as they will end up at the same spot?

Comment viewing options

Select your preferred way to display the comments and click 'Save settings' to activate your changes.