One of the topics that always pops up in conversation with Testers is whether or not we need to know how to code.
I think a lot of this depends on your context and your career goals and aims, but really it pays to at least understand how the code is hanging together and to get a sense of what it’s doing. It would undoubtedly be useful to code at a basic level to help build tools and programs to help you and also to crack Test Automation (i.e. not relying on Record and Playback as your strategy).
I often hear the excuse that there isn’t time to learn, but I don’t think this is true. I think we could all snaffle 10 minutes a day to work on some code. The time argument depends greatly on the importance you place on learning to code. There are lunch times and after work and weekends too.
One of the things we’ve got set up within our team is two 30 minute sessions each week where the whole test team sit together and work through coding katas with our tech tester and programmer. It works really well but still needs each Tester to spend a little extra time each week re-enforcing the learning.
I thought I would collate together some resources that might help and inspire you. Oh yeah, and deciding which language to learn is often the hardest decision. I can’t offer any guidance on that really, it’s what works best for your environment, your product, your goals and your interest in each language.
So here are a few resources I’m finding helpful:
So you want to learn programming basics?
There are loads of resources for learning basic programming (try a Google search for it) but the one that stands out from the crowd is Code Academy. It’s a great interactive tutorial teaching you the basics using JavaScript as it’s main language. The lessons are short and the guidance is awesome.
Python is a really powerful scripting language and you would be surprised at how many of your favourite sites are running on it on the web.
There are a number of great resources available on Python but one of my favourites is this very straight forward guide called “The Programming Historian“. The lessons are kept simple and you’ll be writing Python to manipulate files and text in no time.
If you’re in a .Net environment then IronPython might be the way to go.
There is a pretty good course here at Programmer’s Heaven on C# basics.
CSharp-station also has some good tutorials.
So you want to learn Java?
By far the most relevant and intuitive book on Java for Testing is Alan Richardson’s “Selenium Simplified“. The guide is very straight forward and in no time you’ll have some tests running on your web site. It’s obviously aimed at getting you started with Selenium but Alan introduces you to Java as part of the journey.
Update – Alan has also now released
. Head over to the site and check it out.
Here is an introduction to Object Orientated Programming in Java.
Learn Java Programming with Green Foot. This is a really great program for learning about Java and Object Orientated Programming. You get to build a world where Wombats eat leaves. Great fun.
I would recommend to you dive straight in to Brian Marick’s excellent book “everyday scripting with Ruby“. It’s partly aimed at Tester’s so it’s a great read.
Ruby for Kids is very cool also. Don’t be put off by the title. The lessons are great and the basics can be learned very quickly indeed.
Why’s Poignant’s Guide to Ruby is a cult classic in the Ruby domain. It’s a crazy story that introduces Ruby and general programming ideas. I actually enjoyed reading this. It’s a PDF –> http://www.rubyinside.com/media/poignant-guide.pdf
Ruby in Twenty Minutes offers snippets of learning. A good resource for getting started and getting it all installed etc.
If you’re in a .net environment but still want to use Ruby then check out IronRuby.
Each of these languages is typically coded in an IDE (Integrated Development Environment) although you could also use something low tech like Notepad. A good list of IDEs is here on Wikipedia.
There are also other languages I’ve not covered here like PERL, PHP, C++ and many others.
Any other sources I might have missed? Let me know in the comments.
For Ruby I’d add “Try Ruby” at http://www.codeschool.com/courses/try-ruby by the Code School folks. Funny in _why_the_lucky_stiff’s entertaining way.
Yeah – nice suggested. thanks
W3C Schools is unbelieveably useful. Add it to your favourites today 🙂
Yeah – completely missed that one. Thanks Vernon.
That’s _Why’s Poignant Guide to Ruby, I believe.
—Michael B.
Updated 🙂 Thanks Michael.
Hi Rob, didn’t you forget PowerShell?
This is almost so allmighty as compiled Framework languages (can be compiled too, but it’s not common practice) , on the other hand, PowerShell shortens the code testers need to write, thus eliminating bugs in test code.
There are several frameworks, and the number is growing. What’s more, all the testing automation frameworks for .NET can be used as it’s a .NET language (and an inclusion of C# code, for example) is also possible.
As far as I know, for now PowerShell is already the best choice for several test teams.
Hi Rob,
I know its an old post, and thanks for including Selenium Simplified in the list of Java books. I’ve now released ‘Java For Testers’ which specifically concentrates on teaching Java with more focused coverage and a wider range of examples and exercises.
Thanks, Alan
http://JavaForTesters.com
Thanks Alan – Consider it updated 🙂
Rob