One of my goals with my kids is to watch them ultimately surpass me. I dream of the days when my kids will be able to leave me in the dust when we go ride, and I’ll have to be the one to play the catch up game. We are not there yet, and each time we go up, I realize that there is certain precedence to getting the skill to ride well. For them at their young ages, there’s a lot to remember and process; I take this for granted at times because I’ve been snowboarding for the better part of two decades and used skis for almost fifteen years prior to that time. When you are first getting your bearings and learning how to get everything to work together, there’s a lot one has to keep their focus on. I’m sure my daughter got very tired of me telling her the same things over and over; “look down the hill towards where you are going”, “keep your hands in front of you where you can see them”… and the phrase I’m sure she wishes she could expunge from her memory because she hears me say it so often… “ride like a boxer”, which means to hold your hands in fists and assume a pugilist's stance; it helps with balance and making sure that your center of gravity is over the balls of your feet as you execute turns. With time and effort, all of these started to come together for her, and by the end of the day, she was turning like a champ.
I mention this because the last few years, due to my kids getting older and having so many other things that compete with their time, and the challenge of corralling three kids to go snowboarding at the same time, it’s required my use of a divide and conquer method, where each kid gets designated days where I ride with them and help them get better. Multiply this out by three kids, and I really only get two days a season with each kid, which means a lot of retreading on basic principles happens each year.
So what does this have to do with testing? It dawned on me that, as I have been working on automation projects, or more to the point, trying to work on automation projects, I have the same challenges my kids have when they snowboard. First, automation is a nice addition to my job, but at this time, I’m not really being paid to automate, I’m being paid to test. To expand my kids’ snowboarding metaphor, they don’t necessarily appreciate the fact that there’s a technique to getting down the mountain, they just want to get down the mountain and have fun while doing it. I of course try to encourage their technique because it will give them more pleasure to ride with confidence. They aren’t there yet. When it comes to me and automation testing, likewise, automating will provide a lot of benefit to certain projects, but really, I need to get the testing done (read: get down the hill, by whatever means necessary). For me, I came to realize many years ago that, in my pursuit of snowboarding, I had two choices, ride free but face awkward situations where I’d have difficulty getting down the steep parts, or spend some precious time practicing, learning, and practicing some more until those motions became automatic.
Likewise, automation requires time, and in the early stages, a significant portion of it. There are core techniques we need to learn, such as setting up frameworks, making our tests specific, but not too specific, and starting out small and working our way up. My dreams have proven too big for my abilities more times than I care to admit, so I need to remind myself that there are some basic details that must be addressed first. The tools are only as good as those who use them (back to snowboarding, I can have the most fabulous boards, boots and bindings made anywhere, but my riding skill will not appreciate one bit until I put some training time into mastering them). In testing, I can have the greatest testing tools ever developed (and yeah, I think TestComplete, Selenium, twill, WatiN, Visual Studio and NUnit are some pretty sweet tools), but I will not be effective until I spend the required time getting the technique down. Otherwise, to torture my snowboard metaphor a bit more, I’m just a guy on an expensive rig heel sliding down a steep trail. I’m getting down, but it’s nowhere near as fun as if I use the full technique and skill required (and it’s a lot more tiring, too).
As I take more steps towards that wonderful reality that I hope to see which is meaningful test automation, I have to remind myself of my daughter this weekend, to get truly good at it and to cover meaningful ground, one must train on the basics, one must practice regularly, and one needs to start small and work up to bigger and better performance. It’s not fair to ask my kids to perform at the level of their dad who’s had more than 30 years of active experience on the snow. Likewise, it’s an unfair expectation to think that I’m going to be a master of tools I don’t spend enough time working with to master. It’s my hope in these coming months I will use this weekend’s reminder from my daughter to “focus on the basics” and make sure I have a good handle of those as I work my way forward… now if I can only find the coding and testing equivalent of “ride like a boxer”, I’ll be in good shape!