April 20, 2015

How to Switch Careers in the Software Industry

Trying to switch careers in the software industry, such as moving from software testing to something more in development? In this blog post I will be outlining how I made the transition from a position as manual QA engineer -- where, although I had a technical position, I was doing next to no actual coding -- to an automated testing position, where I am programming in Selenium and Java daily.

This transition didn't come overnight. It took years to lay the groundwork for the career shift to take place. Because this transition was so difficult for me, I wanted to share some pointers with anyone who may be in a similar situation to possibly make their career shift easier.

Make the commitment

The first step for me shifting from a manual testing position to one in automated testing was deciding to fully make the commitment. I have written in my blog about the new Agile Software Development Methodology, and with it there have been shifts in the software testing industry. The role of a traditional Software Quality Assurance Engineer who emulates operating on a web or mobile app in the same way as the end-user -- with keyboard, mouse, or fingers on a touchscreen -- was disappearing. Tools like Selenium WebDriver were forcing manual testers to learn how to code. I knew that if I were to continue in the software testing industry I would have to learn how to code, something that actually scared the heck out of me. I had spent fifteen years becoming well-versed in software testing. Why the heck would I want to be a novice again? Couldn't I just keep on finding jobs that tested software in the same old way I already knew?

The problem was that it was becoming harder and harder for me to find positions where I was qualified. I'd make it through a few phone screens and a few rounds of face-to-face interviews only to be told that although the position was originally supposed to be "no previous programming experience necessary" they decided that the job requirements had evolved with the needs of the company.

To stay in the software testing industry, I decided that I was going to have to really make a major time commitment to train myself in the new tools and technology. For months, I would have to spend evenings and weekends locked away in front of the computer doing research and training. Instead of bouncing around Boston with my wife, or going to whatever spur-of-the-moment fun and nerdy activity my friends were doing, I would have to be sifting through technical manuals and researching on the computer about automated testing. In order to make this transition, I had to be serious about it. It called for serious time and effort, and I had to use my entire support network of family and friends to help motivate me to do it.

Recognize that earning the degrees are just the first step

I had spent so much time and effort earning a BSCS back in 1998 and a Masters of Software Engineering in 2008 that it was baffling to me that the degrees I earned were not enough. What I did not understand was that earning the degrees was only the first step in making a transition to a career in development. Software companies were already spending a lot of time and effort attempting to transition their own software testing departments. Hands-on current experience mattered more than technologies that were studied almost ten years ago. Java had jumped from version 6 to version 8. It wasn't just the software testing industry. Even the programming language had changed beyond my previous classwork. I had to do some serious catch up work.
Practice like crazy

I discovered Alan Richardson's online course, Selenium 2: WebDriver Basics with Java during my Christmas vacation of 2013. Although the course was $299, I found it was well worth the money. Alan had a knack for explaining complex problems simply, breaking things down step-by-step. The short lectures covered not just the basics, but also included all the intermediate and advanced material you could ever want, walking the student through installing Selenium WebDriver, Java, and IntelliJ, the Integrated Development Environment (IDE) Alan prefers to use to write Java code.

My problem was that I wasn't writing any code. I found myself listening to the lectures for weeks everywhere I went, but because I was not typing out the exercises side-by-side with the instructor, playing with and figuring out the code, nothing was really sticking. I became frustrated and gave up after a few months of work. It wasn't until I started re-developing good programming habits with Zed Shaw's Learning Python the Hard Way a year later that it became easier for me. In order to learn to code, I had to actually code, and not simply listen to someone describe their code. When I got stuck before with Alan's lessons, I would think that if I just spent another hour listening to the lessons, I could get myself unstuck.

Writers don't learn how to write by only reading Strunk & White's The Elements of Style. They learn by writing papers, essays, and articles, and they practice writing daily with journals. Coders learn to code by going beyond the classroom, experimenting on their own with writing programs and apps. Automated testers do the same with random sites on the web: How would I test this web page and what would I code to write the tests?

I've gotten in the habit of spending at least an hour a day coding, either in Python, Java, or Selenium with Java. The bad stuff remains buried on my hard drive. The okay stuff, I post in my programming portfolio on GitHub. I haven't written anything fantastic yet. Right now, I am just plugging along, but you know what? That's enough.

Network like crazy

When I first heard of Meetup.com, it was a way for like-minded individuals to get together to share political views, remnants of Howard Dean's presidential campaign. When I first became active in Meetup, groups such as Nerd Fun - Boston brought the site back to Meetup's original goal of using technology to foster a sense of community in the real world. Nowadays, all you need to do is go to the site and type in search keywords like "WebDriver", "software", and "Java" to find lectures, training sessions, and technological networking events in your local area. It is easy to forget if you have been at the same job for a while that technology is always changing. Meetups aren't just a good way to keep abreast with what's happening with the software industry. It's also a good way to meet people who are also trying to keep up with industry trends. I have been going to one or two technology Meetups a month.

For networking, LinkedIn.com has also helped me. It's a good way to keep in touch with your contacts: Alumni from your alma mater, your friends, your current and former co-workers, and your former supervisors. It has allowed me to keep track of friends from former workplaces, see what projects they are working on now, and stay connected with them. It also allows me to review the background of anyone who has granted me an interview. When I have a job interview, even though I may not get the position, if the interviewer and I had a great conversation they might become a potential contact.

Recognize Opportunities When You See Them

When I auditioned for my current position at Fitbit - Boston back in January, it was pitched to me by their in-house recruiter as a manual testing position. They needed someone to help build out their QA department, and create policy and procedure for the department. They did have an automated testing department, but they didn't have any immediate openings at that time. My main focus would be their immediate need of manual testing, but I could get a bit of experience in automation from the automation lead. Would I still be interested? If so, they would set up a phone interview.

I had to think about it for a bit. I knew that I needed to figure out automated testing in order to continue my career. I researched Fitbit online and discovered that it was a great company to work for. I mentioned to the recruiter that I was looking for exposure to automated testing. Would it be possible to have maybe 20% of the job involve getting exposure to automated testing? She passed the information along to the hiring manager.

With all the work I had done, during the job interview I was able to speak intelligently about automation. I was able to talk about what automation is and is not good for. And I had sample programs I could demonstrate on my GitHub account. After the interview process another candidate was hired for building out the manual QA position, and I was brought on board to develop automation.

Fitbit is a great company, and I am really lucky to be here. I am now being trained in how Fitbit does automation, exactly what I was looking for. But if I hadn't performed all of the prep-work -- making the commitment, going beyond what was learned in the classroom, practicing automated testing a little each day, networking, and being open-minded about opportunities -- I never would have been close to being hired.

If you are in the software testing field and are trying to make the switch from a manual testing role to something in automation, don't give up! It is going to take a lot of time and effort, but it will be well worth it, giving you a fresh new look at the field you enjoy.

-T.J. Maher
 Sr. QA Engineer, Fitbit
 Boston, MA

// Automated tester for [ 1 ] month and counting!

Please note: 'Adventures in Automation' is a personal blog about automated testing. It is not an official blog of Fitbit.com

No comments: