Android-eBook-CTA-938x181

Why Not Train Testers Early with Software Testing Degrees?

AA014176

Let’s play a game. Imagine that you’re development manager and you have a choice between the following two candidates:

  • Candidate #1: Graduated from M.I.T. with a Computer Science degree. For my senior project, I collaborated on a smartphone app to find and reserve parking spaces on campus. Skilled in the following languages and tools: LAMP, Python, Ruby, Java, Gerrit, .Net
  • Candidate #2: Graduated from Harvard with a Journalism degree. For my senior project, I wrote a thesis about best practices in software development. I am a self-taught Python enthusiast and have a familiarity with other technologies. I have great analytic and organizational skills and am very willing and able to learn.

Which do you bring in for an interview? If you said the candidate #2, you’re lying to yourself.

But this is what we do every day for junior software testers. We hire journalists and art historians then put them in the awkward position of having to learn their technical skills on the job, in the middle of a technical team. I’ve been in many discussions recently about how transferable the skills are –the investigative nature of all of those disciplines, the inquisitiveness, the ability to organize information… but I’m calling BS on all of it right now. Those are, of course, excellent skills for any professional to have, no matter what their profession. But how does it really help you run SQL queries against a database to look for data anomalies? Will it help you decipher logs and run analysis tools so you can pinpoint the source of the error?

Earlier this month I spent ta couple of days with my colleagues at the STAREast conference, listening to presenters explain to a roomful of testers about modeling workflows and data transitions, managing test environments in the cloud, writing automation scripts for regression tests, best methods for exploratory testing, running mobile test lab. As I looked around the room at the raw intelligence of the people who are not only absorbing that information but probing deeper into it during the Q&A sessions, I had to wonder how much easier each of their careers could have been if they had been allowed to major in software testing in college.

I applaud testers and their ability to rise to where they are in technical knowledge. I also cringe at talks that teach them how to use their journalism skills to be a better tester. As we demand more of our software testing, from tools to methodologies, and as the software development world becomes more complicated with mobile and regulated industries, testers are asked to become ever more fluent in a variety of technologies. The technical demands on them are as hard as their development counterparts…and yet, we still rely on them learning on the job or getting a variety of certifications to prove they have training.

It’s time.

It’s time to create a college curriculum that gives students a chance to choose testing as their major and career – as opposed to tripping into it because there are no jobs in art history. It’s time to give employers a testing workforce that is competitive and trained so they can stand toe-to-toe with the development team. Imagine the power of being able to hire a recent college graduate who has been taught how to develop system diagrams, build complex SQL, run log analysis, set up a cloud test environment, and write automation scripts.

No more crossing your fingers that this eager young face in front of you can really pick up those skills, and no more investing so much time and money in training them on the job. We ask no less from technical writing and development. Why do we have such different expectations for one of the most important functions on the team? I’m practically drooling as I write this and picture the brute force of a QA team full of software testing majors.

If we solve this problem, we solve many other problems at the same time: the inefficiency of a testing team that has to learn as they go, the constant muddling around about where testing belongs in the cycle and who should do it, and the salary inequity between testers and developers.

Best of all would be to put to rest the question of whether we need testers at all. I think the only people who pose that question seriously are those who haven’t worked with deeply skilled testers and thus haven’t seen the value those testers can bring to an organization and a product.

See also:

Comments

  1. AlanPage says:

    A University is not a vocational school. If you want to “train” a tester, there are many courses (and certificate programs) one could take regardless of background.
    A computer science degree is not training on how to be a programmer. A CS program provides theory and breadth around computers and software that, if one is able to pragmatically apply to software development, may help them get a job.
    I’m not entirely against a software testing degree (although a minor, or a specialization seems more realistic) – I just find it ludicrous to assume that the purpose of universities is to provide job training.

    • Lorinda Brandon says:

      Hi Alan,

      point taken. I never meant to imply that a university would provide job training. I would hope that a Software Testing degree would do the same as a CS degree would – there is just as much methodology, philosophy and technique in software testing and, in my opinion, a degree program (either major or minor) would not only provide that same breadth and theory you refer to but also would expose software testing as a career opportunity for software professionals.

    • weethomas says:

      By that argument, we shouldn’t immediately hire CS grads to do software development until they go through a vocational school specifically for that purpose.

    • BrianWilkins29 says:

      For a number of years, the universities role was to produce professional jobs. Doctors, lawyers, etc all learn theory but the university provided vocational training. People go to school to learn a profession to make money.

  2. Dude Abides says:

    A Degree in software testing…I could see this a course in a program but not a full degree. The skills that need to be developed in this field are far too reaching for a limited scope program. Example: Courses like Chemistry help you learn pricipals like the scientific method which knowing helps me immensily in my career and Critical Thinking (Philosophy) help me understand false arguments coworkers and superiors often put on you when a problem is difficult or not understood. Chances are this is not the path a Software Testing Degree would have you go on.

  3. Anonymous says:

    Honestly, you say point #2 is “lying to yourself” but after working at some major corporations: Warner Bros., Yahoo, eHarmony, NBC Universal… I’ve helped hire and not hire many candidates.

    I have to say I don’t really care what school a candidate comes from. We’ve hired many graduates with great looking resumes and lots of seeming potential, only to see lazy, worthless candidates step through the door… Padded resume’s are all too common. There have been several resumes land on my desk to review… and I see “Software Engineering major” who is well versed in “Java, C++, TDD, BDD…” all the catches… all those nice things we’re looking for… only to find out in a phone interview their depth is lacking everywhere.

    Conversely, I’ve brought on candidates with no college background, who have hit home runs – write automation suites, learned languages on the job (without any help from developers). I personally don’t know a Manager or Director who really cares about the college background anymore. What I look for is not just knowledge but eagerness to learn, drive and dedication. Which usually is found in a self taught tester. That self taught tester could have gone to MIT, or never stepped foot on a college campus. But if a tester can answer some questions on a phone interview that show me they not only know about technology (SQL, nosql, automation, etc.) but have a drive to improve and grow… and that what they have done is self taught – because… in this industry we all become self taught. Agile companies will not train people. People have to learn on their own. What you learn in school is already outdates in a Agile company. So the candidate must show signs of self teaching, for me to be willing to look at them.

    In fact, a case in point – I worked one job where we brought on Software Engineers in Test (SDET’s). The goal being they would first come on as testers writing code, and then transition to software development. These SDET’s were from well known colleges that they came from. These candidates were smart, but lacking in real world experience. Whether they studied a sub major in software testing, honestly wouldn’t impress me as much as someone doing it on their own and showing me the work they’ve accomplished (prototypes.)

    When I used to interview, I’d first prototype an automation of the companies website… walk in the door and run it for them… then answer their tech questions. I think that speaks louder the the college background. That’s what I look for in bringing on QA. That attitude. Not the “well we learned XYZ” but rather “I went out and learned this… and I’m willing to learn more.”

    • weethomas says:

      The point is, given a choice of only calling one of those graduates for an interview, you’d call the Computer Science grad, not the Journalism grad. You may not have noticed, the schools were MIT and Harvard – so the point there was that you could assume that both candidates were well educated in their respective fields. So given a choice between bringing in a CS grad and a journalism grad who both have impeccable credentials in their respective fields for a testing job, you’re likely going to pick the CS grad even though the journalism grad has “programming” experience and is well versed at “investigative” techniques.

  4. Sean Toner says:

    I tend to disagree that a separate degree is needed to be a Software Test Engineer. One of my favorite epigrams from Alan Perlis is #7:

    “It is easier to write an incorrect program than understand a correct one.”

    This implies that it is actually _harder_ to be a software tester (at least a white box one) than a developer. I have spent about equal time as a developer (currently a linux driver developer) and as a FW Test Engineer. Admittedly, I was mostly a white box and integration test engineer, but you had to know how to both read and write code. And in fact, I wrote orders of magnitude more code as a Test Engineer than as a developer.

    I analogized to my boss why you can’t just write a script in a day or two. I explained it like this, “Does it make any sense for a teacher to give a test to a student, but before handing out the test asks, ‘Can you tell me what the answers to this question are before I hand out the test?’.” But that is what many test organizations do…they allow the developer to tell testers if a test case was successful or not. That is the proverbial fox guarding the hen house.

    The reply I get back is, “well, you should have a spec that gives you the answer. You shouldn’t even have to know how the code works to tell if the test was successful or not”. To which I reply that is often not the case at all. Firstly, even if you have a spec, specs are human written languages. They are not formal languages like a computer language is. Ever seen a “should” or “may” or “undefined” in a spec before? They are all over the place.

    So this goes to my second favorite quote from Richard Feynman:

    “What I can not build, I do not understand”.

    And how can you test something you don’t understand? Black box testers withstanding, other testers should understand how a product works in order to test it. How will they know where the weak points in the product are (the corner cases)? How will they know if code paths are ever getting tested? How will they decipher odd messages in logs? How will they know how to automate tests unless they understand the protocol of the product?

    In other words…testers ARE developers. They just write software to test and understand other software. I do not work in the database/web programming world, and testers in the hardware world do not have pre-built tools like Selenium or GUI macro recorders to do the testing for us. Very often we had to write the low-level tools that interfaced with the hardware in order to test it. One criticism I have shared with developers is that Test Engineers often throw a defect over the wall and say “hey developer, you deal with it”. The trouble is there is little to no triaging done. When I was testing SAS controllers, maybe it was the firmware, or the driver, or even the C shared library we used to make ioctls to the driver. I imagine the same is true in the “software” world; was it a front end javascript problem, a SQL query that hung up a server, or maybe some Java back end code in the Tomcat servlet container? When a Test engineer just frivolously assigns a defect to a developer because he has no idea how the code works, it wastes the developers time if it goes to the wrong developer for him to troubleshoot (and developers spend more time debugging and fixing than writing new code for new projects…so any time saved here is very important)

    As I mentioned, I wrote literally orders of magnitude more code as a Test Engineer than as a developer (though admittedly, most of it was in higher level languages like python or Java, but I did still write more C++ code than I have C code as a driver developer). It’s unfortunate that Test Engineers are thought of as inferior or less capable than “real” developers. But have a separate major for Test Engineering? Nah…I don’t think so. I don’t see Civil Test Engineering or Mechanical Test Engineering or Electrical Test Engineering.

Speak Your Mind

*