If you had an equal skill set to be either a developer or a tester, for the same pay and career opportunities, would you rather be a developer or a tester?
This is a question I have been thinking about over the past few days, as later today (at the time of publishing this blog post) I will be involved in a session for my Testing Community of Practice “Psychology” of a tester: Why do we split the function of testing and development? (see my last post for further details).
So if you had to pick being either a developer or a tester, which would it be and why?
Where I work, and likely for the vast majority of those involved in software development and testing, the skills and job titles differ between developers and testers, although it is getting more blurry due to roles such as SDET, and TDD being looked at as a development method. But why? And should it still be?
Now, you may be thinking and wanting to comment that developers do test with unit testing their code. To that, I would certainly hope so, though I doubt any tester working long enough hasn’t had code for them to test where they wonder if it has been unit tested… But, the scale of testing is different when compared to testing a business process, or other testing such as load, performance or security testing.
One key difference I see between the two roles, and why they separated, is mindset. Developers are Builders, whilst testers are Breakers.
A developers has something tangible when they are done, some form of code that performs a function of some kind, whether it be a fancy looking web page for using from the front end, or code that lives behind the scenes that no-one will ever see but keeps the cogs turning.
Meanwhile all a tester can do is try and break whatever the developer has made, until it stops breaking and a robust product is left behind.
As I type this, the tale of the three little pigs comes to mind, with the pigs having progressively better houses until the wolf fails to blow it down. Now instead of houses it is software code.
The first pig makes their code and is happy with it, meeting the requirements they were given. But when the wolf comes along, he breaks the code.
The second pig, seeing where the first pig went wrong, builds better, more robust code. But once again, the wolf breaks the code.
The third pig makes further improvements to the code, and hands it over to the wolf, where no matter how hard they try, they can’t break it.
The first two pigs built something they were happy with, and met what they were asked to do, but until someone came along to try and break it, they never realised how frail their creation was.
But in the story, the wolf isn’t the hero, helping the pigs out. The wolf saved the first two pigs. If i lived in a house, only to find out it would fall apart when it got windy and crush me to death, I wouldn’t be happy at all!
Can people easily switch the mindset between breaking and building something, or will we always need to have people with distinct attitudes, and thus keep development and test apart?
And to answer my own question from the start, I would rather break than build, and thus I test.