March 10, 2015

Learning Java

These past couple of months while I was searching for my next software testing gig, I strangely found myself with too little hands-on programming experience. Normally, my degrees and knowledge of the software development industry would be enough... but I found out when I was interviewing that no longer could I as a Software Quality Assurance Engineer get away with simply documenting test cases in MS Word or MS Excel. Executing all the test cases by hand just like the end user of our web or mobile app was not enough. Nowadays, it seems, a QA Engineer is expected to know how to write automated tests in Selenium with Java or Python.


A QA Engineer was expected to know how to code?... This, for me, was scary! 


As a manual QA Engineer, in spite of being in the software testing industry for the past fifteen years, my programming portfolio has been a bit thin. Even though I have an educational background in programming and software development, programming hasn’t ever been part of my day-to-day activities. 


In my career, I have tinkered around a bit. I had used an automated testing tool called RSW’s E-Test Suite, a record-and-playback tool, using Visual Basic to modify the scripts it produces. I once had an unpaid summer internship as a web developer writing SQL stored procedures when I first entered grad school. I have five years of experience writing SQL queries, checking that the data being entered in the web app on the front end is stored correctly on the back-end database. And I have taken more than a few online courses... 

But besides SQL queries, I hadn't done coded on daily basis since 2008. How the heck could I meet the new industry standard?

Knowing how to code was like the half-remembered Spanish I took in 8th grade. I did very well at the time, but as the years went by, it became something foreign to me. Only the basics were there. And when I last studied Java daily, Java 7 and Java 8 hadn't been around yet.

This may seem utterly obvious, but the only way I have found out how to code is to actually to code.

There have been roadblocks for me trying to learn how to code. Sometimes I have been so worked up that I don't remember enough information about programming from my college days, I get trapped passively listening to a lecture on YouTube. Instead, what I should be doing is typing up the example code by hand on my own machine at the same time the instructor in the lecture is typing out an example.

Sometimes, I read other people's code samples without trying to type the code on my own machine and see if I can get it to run. I find that if I copy-and-paste other people's modules, it just doesn't stick in my head. Only by typing all of the code out by hand and playing around with it do I seem to really understand it.

Sometimes I have been so afraid of writing bad code that doesn't work when I should be telling myself, no, I haven't done this in a while, of course I am going to write bad code that doesn't work. With practice, I might write bad code that works. Then maybe okay code that works sub-optimally.

The only way to get good at anything isn't just doing the research. It's practice, practice, practice.  

Before anyone attempts trying to learn automation in Selenium / Java, I would recommend that QA Engineers who may not have any programming experience take a course in Java covering the basics. Or maybe even a regimented online CS-101 Introduction to Computer Programming course using Java. If they don’t, by the end of any Selenium,/ Java course they take, the QA Engineer may be able to get an automated test in Selenium up-and-running, but they might not really understand what is going on behind the scenes.

There are plenty of free resources out there in Java that have given me a greater understanding of the language. Here are a few resources I have used: 
  • EdX https://www.edx.org/ has online Computer Science classes you can audit for free. They periodically offer online classes offered by MIT, Harvard, and Berkeley. 
  • A skill that developers have picked up -- and one I am trying to learn myself -- is how to train yourself from online documentation.  The latest information isn't in a book. It's in the online documentation that is always updating. Luckily for trying to learn developing in Java, we have  Oracle’s Java Tutorials. http://docs.oracle.com/javase/tutorial/ . They have different “trails” a beginner can follow: How to get started, learning the language, and reviewing what the Java team believes is essential. 
  • Alan Richardson has a new book out on Amazon.com called Java for Testershttp://www.amazon.com/Java-Testers-Learn-fundamentals-fast-ebook/dp/B00U618KNC … I first heard about Alan from discovering and taking his online Selenium / Java class that is offered at Udemy.com and his website Compendium Developments http://courses.compendiumdev.co.uk/courses/selenium-2-webdriver-with-java … although the course was $299, I found it to be worthwhile since it was so extensive. Alan pulled information from his Selenium / Java course into a package called "The Selenium Clinic" which won “Best Tutorial” when Alan and Simon Stewart — the creator of Selenium WebDriver — presented it at Eurostar 2012. I purchased the Kindle Version of Java for Testers and am still working through the book now. 

Hopefully, that is enough to get you going! It seems to have worked for me ... so far. 

Once you get a handle on the basics, you can jump into programming in Selenium with Java. Even though I have a Bachelors in Computer Science and a Masters of Software Engineering, when I jumped into courses with Selenium / Java without knocking the rust off my coding skills with a Java course, I found myself needing to take a step back to focus on the basics, too. 

Happy testing! 


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