I currently work for a great company, I started here about 10 months ago and I am loving it. One of the things that makes it great is that we are building a real public facing website that should have some serious business benefits. It’s got a lot of interesting parts to it, and it makes for a very challenging test environment, and when launched will be a real tangible system being used by real people. (after many years developing/testing middleware, I was so far removed from real users it was difficult to feel connected to producing quality software.)
I, and my team are what I would call developers in test. I found a great article from Steve Rowe at Microsoft from 2005 that explains rather nicely. As he puts it, the test-developer role is a specialization of the dev-developer role. We write code, and our code has to be extremely robust, since by definition it runs against a system we expect to not work in unexpected ways. Also we can’t rely on a team of test-developers to help us get our code right…
We need a good understanding of a much broader system view, how the network configurtion fits in, which systems need to talk to each other, how to handle async processes that can take some time without just waiting (if it’s broken you could wait forever) but also not assuming things are broken when they’re merely slow. And a myriad of other concerns that relate to an entire system under test.
We have to test the UI, and the backend services, and the administrative API’s, and be able to build and run test scenarios that by definition need to perform better than the product to be able to measure the product in a useful way. Not to mention that we always seek ways to make our tests run faster, and scale better to reduce the time it takes to get a measure of product quality. That means parallel execution, locking, logging understandable output form multiple concurrent threads, understanding the effect of increased load, etc etc.
We also need to work with the business team right from the first draft of a specification, to make sure that what they’re asking for is testable, that they quantify their requirements in such a way that it is possible for us to demonstrate whether the dev-developers have delivered that or not.
In my role I get a great deal of opportunity to develop different kinds of things, using different technologies. In the last few months I’ve written a custom nunit runner, a failure analysis tool (a post processing step that aggregates failure information into a summary report to help me spot common problems effecting many tests), a simulation engine (model) that validates the behavior of core pieces of the product, a service that deploys with the product in dev/test that allows me to manipulate what time the system thinks it is (to allow my simulation to happen over arbitrary time periods), and much more. These are varied, projects with some real coding challenges and they deliver immediately visible benefits to the project. There are also many more that need doing.
The thing is, I currently have two vacancies I’m trying to fill on my team, but I’m finding it hard to locate the right candidates. Many people that have ‘test’ experience are limited to the kind of testing which is write a test case document, wait for code, run the steps through manually and report issues. I just don’t think that approach to test scales. Sure there are *some* things that really require a manual step (checking things ‘look’ right etc) but I need people who can code complex systems to automate testing that will deliver real long standing value.
However, many people that would consider themselves a ‘developer’ run a mile at the idea of being a ‘tester’. Mostly I suspect because their experience of test is of manual testers, not test-developers. Or have some misguided belief that testing is in some ways a lesser goal (perhaps they’re just aware that it’s much harder to do well)
So how to attract test-developers? I know there are many out there, and I suspect that the really good ones have pretty good jobs already. However if you are a test-developer, or even a developer that would like a challenge, a change of direction and a great new place to work, I have job vacancies! Our company has offices in London, Vancouver & Bermuda. Primarily I’d like people to join me in the London office, however if you happen to be in Vancouver of Bermuda don’t be shy!
We have a great team, we work hard:
and we get some very shiny toystools to do help us get the job done:
Also the company shows it’s appreciation for our hard work in lots of nice little ways. (Free drinks/fruit/biscuits in the lounge for one)
If you’re interested in a job, would like to find out more, or know someone that might might be interested:
You can contact us at: firstname.lastname@example.org