A lot of testers begin life as software test engineers. That is, they execute tests but don’t do any (or much) programming. The dream of many testers is to become a test developer or a developer. Reciprocally, the dream of many test managers is to grow their testers into test developers. Is this a realistic dream? It can be, but probably isn’t in most cases.
It’s very hard to become a self-taught developer. When we look out at the computer landscape we see plenty of self-taught programmers so it looks easy. However, for each one that succeeds, many more fail. Why is that? Two reasons I suspect. First is that some people are just not cut out to be programmers. Second, and perhaps more important, is that it is really hard. Becoming a good programmer* requires a lot of knowledge. That means a lot of reading (online or books) and a lot of practice. It turns out that it is a lot easier to desire to be a programmer than to put in the work to become one.
I covered the first point in my post entitled You Can’t Teach Height. Studies show that a good number of people, even those interested in programming, cannot grok it. My suspicion is that this has to do with the abstract nature of programming. This isn’t to say that they can’t program at all but they can’t program well and as the difficulty goes up, more and more drop off.
The second reason is the one that gets a lot of people. I’ve seen many try to make the leap and only a few succeed. Those that did had to put in a lot of work on their own time. Those that didn’t often weren’t willing to put in time outside of work. Anyone desiring to go from tester to test dev with just the time they spend on the job is probably going to be disappointed. It takes a whole lot of effort to become a competent programmer. I laid out my recommendations in one of my earliest posts. I call for learning not just the syntax but also the essentials of computer science. You can program without these but if you don’t pick them up you’ll never be great. Learning them, however, takes a lot of time and effort.
Most of the time employers won’t give you that time. They want you to be productive and anyone learning to program is not productive. The simplest things take a long time. There is almost always a more competent programmer on the team somewhere and if work needs to be done, it will be given to him. It’s not that most managers discourage learning to program. They’d like it to happen. They just won’t often budget enough of your time to actually do it.
Now that I’ve said how hard it is, are there things that testers can do to increase their odds? What about test managers? I’ll cover the issue from both perspectives in future posts.
* It is important to note what I’m talking about here. It’s not too hard for someone to teach themselves enough C# to write an ASP.Net page or enough perl to parse some log files. That, however, is a far cry from being able to write a test harness, analyze performance, or automate the testing of a COM object.