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?
So you want to learn Python?
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.
So you want to learn C#?
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.
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.
So you want to learn Ruby?
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.