I've been thinking about this post for a while, and was inspired to complete it after just returning from a local tester group meeting discussing the difficulties of finding good testers. Hopefully my story will help out, at least from one perspective.
I graduated with a computer science degree from Campbell University. Like most CS graduates, I expected to be a software developer when I graduated, and my major classes were in programming and theory. A career as a tester was never discussed, and there were no classes in testing.
Due to a scheduling error my last semester I was only taking one class at night, so I took my first career job doing telephone tech support for a large personal computer company. I learned a lot about the way people think (or don't, in many cases!) and how to translate technical speak for the average user. I was also doing a lot of testing. Forget black box, this was troubleshooting a computer I couldn't even see via a phone conversation with a non technical user! It was frequently frustrating, and I looked forward to escaping to a real programming job when I graduated. Like many such experiences, I didn't appreciate some of the skills I was learning until after I left.
Once I got my degree I happily took my first job writing code for a large telecom company, back when the industry was booming. My job was writing software fixes that would be deployed via patches to communications switches. The actual coding was a relatively small part of the job, most of it involved reproducing the problem, configuring test environments, and testing the fix to ensure the problem was gone. I enjoyed the coding and the thrill of making something work that was broken before, but the actual testing was often challenging and interesting to me also.
A few years later I moved to a position working on a similar product, but where I got to do a few pure development projects. It was satisfying at times, but difficult, and didn't really seem like a good fit for me. I did OK and managed to finish my projects in time, but I was uncomfortable with my job and performance level. It was about this time that the industry tanked and layoffs finally caught up with me. Having seen them coming, I had already been taking a good look at my skill set and what I really wanted to do. I realized that throughout my career, breaking things (and to a lesser extent fixing them) had always been more easy and satisfying for me than creating them from scratch. I was a better tester than a developer!
Armed with this newfound realization, my job search got a lot easier. I was able to find lots of ways in which my previous positions had involved testing and supporting skill sets like reporting and communication with end users. I was also able to easily look outside of the telecom industry for jobs, a challenging problem for development positions as the languages and platforms I had worked on were very industry specific.
Through a family connection I found a small company that would take me on to fill a tester position, a job which they didn't even have at the time.
It was interesting interviewing for an opportunity to create a new role in a completely different company and industry. While my testing experience at various projects was useful, I emphasized my interest in learning. Perhaps more importantly from an attitude perspective, I distilled all the customer facing experiences I had during my career to talk about my focus on customer quality, and being able to represent the customer's interests.
It also helped that I had taken the time to research the company as much as possible, and think in advance about how I could work on their product.
I was hired, and it turned out to be a great fit: While learning the product and industry I had time to find out what was necessary to MAKE the position. I found and read the testing blogs and periodicals, and got involved with the local testing group for support. I researched and implemented an automated testing tool the 'right' way, with a data driven framework that was easy to maintain, reviewed and optimized their defect workflow, and performed a lot of exploratory testing. As you can imagine this all took a couple of years to get running smoothly, especially with the learning curve of a new industry and product.
Do I miss the development world? Not a bit. Writing and maintaining the automated test suite and supporting scripts satisfies my coding urge and keeps my skills up, and occasionally I use my free time to tinker with other automation tools and languages. A steady stream of new functionality and fielding defects and questions from the customer base gives me enough challenge to keep my manual testing skills up to snuff, as well as spec reviews and critical thinking.
I'm part of the development group, so I can still 'tech talk' with the developers and do a little white box testing now and then.
Would I go back to being a developer? Not me, I've had enough experience to know that testing is my passion and strength. I do know others who have gone back and forth between the two positions, but in my experience it's not that common. I think that there is enough of a difference in the 'fix it' versus 'break it' mindset that most people have a preference and aptitude one way or the other.
Whether you're a developer or a tester, or one of the rare folks who enjoy both, the important thing is to know yourself. Even if you're fresh out of college, think about your experiences with people and technology, in terms of what you enjoyed and what you were good at (be honest). It may change over time. But if you find your passion it's a lot more enjoyable to go to work on Monday morning!