Learning

Get outside your comfort zone

The testing community is awesome. There are so many friendly faces. So many people reading things, discussing things, watching things, and developing their ideas. As the communities grow stronger the people you spend most of your time with are likely to be similar to yourself. Maybe you all belong to a similar school of thought. Maybe you’ve worked on projects together before, or attended training courses or conferences together.

It’s great.

Or is it?

The problem is these people are likely to be very similar to you. They share your ideals, and your ideas. You start to think that you’re in the majority whereas is many cases you’re not.

When was the last time you read something you disagreed with? Or attended a conference that wasn’t solely about your craft? Now I’m not saying that you have to go out there and engage everyone in debate. You’re not looking to convert these people, or even to change your own opinions. Broadening your view might simply give you something to measure your ideas against.

If you’re an agile advocate do you really understand why not everyone is into it? Do you know why testers are often excluded from projects? Have you asked a developer why they haven’t attended a test conference? Have you asked yourself why you haven’t attended a design conference?

We all work in development and yet we all hold these independent, and often incompatible views. Look up and see the world that your work fits in to. It might just make you a better tester.

 

Are you an Independent Tester?

March, the time of TestBash Brighton. As always it was a pleasure to return to Brighton and catch up with some of the smartest, friendliest, and most inspirational testers.

The final talk of the day was from Nicola Owen. Her story was about moving from being a tester in a large organisation to being the only tester in a company. She talked of the challenges and benefits that came from being a sole tester.

Nicola’s talk made me ponder the role of a tester. Often we struggle to gain recognition in teams and companies. Testers are frequently the ones who get forgotten about when teams are thanked, or team lunches are organised. Is that really because we’re so forgettable? Does the sheer number of developers make testers invisible?

I believe that testers can, and should, be seen as a beacon of expertise throughout the company. Testers have so much knowledge about the product, the users, and the project risks. Every tester should know exactly when the project deadline is, who the customer is, and what the project goals are. Hopefully they also know the technology stack being used, the experience-level of the developers, and have a deep understanding of every step of the development and release process.

Knowledge is power. Testers don’t have to be technical. The ability to write code doesn’t have to be a measure of how good a tester you are. If you work with good developers then it probably doesn’t matter if you know how to configure a web server, or submit a binary to Google. What does matter is being able to initiate, and contribute to important conversations.

Talking about a problem out loud triggers your brain to think about things in a different way. For this reason many developers use the “Rubber duck debugging” technique to find issues in their code. Talking things through, even with just a rubber duck, can make you realise that you’re missing something, or spot an obvious problem in the design. If a rubber duck can bring this much value to a developer just imagine what a creative, and knowledgeable tester can bring to the conversation.

Whether you work in a small team or a large team you should take responsibility for your own role. A bigger team doesn’t mean you get to take less responsibility.

Behave as you would if you were the only tester around. Ask questions, and make notes, connect the information people give you and turn it into knowledge. If you come across a casual group conversation then get involved. Kitchens are a great place to spend time. Tell people your ideas and ask for their input. Not only will you learn some interesting, and possibly useful things, but you’ll also meet some new people. Don’t under-estimate the power of being well-connected within a company.

Your own experience is worth more than a thousand books. Reflect, search, and understand how your actions impact the team. At the same time read widely, watch talks, and engage with people outside of your organisation. Compare your experiences with others. What can you learn?

Always have an opinion about everything – even if you don’t always share it. Learning to question things, to spot the areas that could have been better will help you become better. Do this with your own work and with others’. When you read an article, or a book, question what it is telling you. How does your own experience differ?

Independent testers are resilient and self-supporting. They have the knowledge and skills to be able to excel as a sole tester in a company but they also have the knowledge and skills to make a larger test team a powerhouse. So don’t look around you and use your team size as a measure of how good a tester you need to be. Look around you and see the opportunities that are open to you. Now grab them.

The TestBash videos are now available over at The Dojo.

An efficient tester

Are you efficient? Do you work in a well-organised and competent way? I think most of us aspire to be effortlessly organised, to be in control of our lives. Some people raise children, run businesses, and still manage to find time to file their papers. The rest of us go around in a haze of hastily bought birthday cards, missed appointments, and mental to-do lists.

Unfortunately efficiency isn’t something that turns up in your life to sort things out like a benevolent fairy godmother. Efficient people have systems and techniques to help them organise their life.

To-do lists are a great way to keep track of tasks but if yours looks anything like mine they they can get overwhelming. Spending time at the beginning of each day choosing the most important tasks, the things that really, really, must happen today, can help. Once you’ve chosen the ‘must do’ tasks you simply hide everything else away for another day.

Batching tasks can also be a great way of saving time. If you have three bank transfers to make then doing them all at the same time will save you two online account log ins. Bulk buying birthday cards will save you multiple trips to the card shop. Grouping meetings together keeps useful chunks of the day available for hands on work.

Tools like Evernote, Feedly, and Instapaper help save important, or interesting things. I find the volume of interesting articles shared on Twitter to be overwhelming. Setting up an IFTTT channel to save starred items to my Evernote account has been a huge help. Now instead of trying to read or categorise links as they come up I save them away and deal with them all in one go.

Automation can be another way to remove waste. A simple automated script to create test users, or set the system under test into a desired state can save considerable time and effort. However, as with all automation, there are creation and maintenance costs associated with getting the script running, and keeping it running as the system develops.

Recently the fantastic Danny Dainton reminded me how important it is to automate small tasks as well as big ones. Removing a couple of mouse clicks a day might not seem like much, but over time those seconds will add up to big time savings.

One of my favourite tiny tasks to automate is editing URLs. When I’m testing I frequently switch between test environments and production ones. It only takes a second or two to highlight and change the necessary part of the URL but over an entire day these few seconds start to add up. A simple JavaScript bookmarklet takes this tiny task and makes it a simple button click.

As I go through my working week I look for monotonous, or repetitive tasks. Are there ways to batch these tasks? Can I use Boomerang to schedule emails in advance? Maybe I can find, or create, a tool to do this task for me. Each time I save time, I’m creating an opportunity to do something better, to become a more efficient tester.

How do you make yourself more efficient? Do you have a favourite tool or script to help you?

Should that link open a new window?

If you test software that allows users to navigate using hyperlinks you need to think about new windows. It sounds simple enough, links send the user off to a different place, but context should determine whether the link opens in a new window, or tab, or re-uses the existing one.

During an E-commerce checkout you expect the “Buy now” button, or link, to open in the window or tab you’re using. The same thing with “Sign Up” flows, they are part of the main journey and so should be re-using the main window. It would be pretty strange to end up with multiple tabs each displaying part of a “Sign Up” journey.

What about “FAQ” or “Terms of Service” pages? Well it depends. If you click one of these links in the main site footer then it makes sense for the window to be re-used. If however I click a “Terms of Service” link from a checkout or payment page then I really hope it opens in a new window or tab to avoid interrupting my purchase.

Resuming journeys
Have you ever tried to purchase something from a website only to be sent off into a “Sign Up” flow? If you were lucky you completed the “Sign Up” and were gracefully returned to the page you were originally on. Sadly this isn’t always the case. As a user it is hugely frustrating when websites make you repeat actions just because they wanted you to do something else first. Make this easy. Return users to the page they were originally on.

Indicating behaviour
Links to external websites or services should open new windows as the default behaviour. In addition, external links, and mailtos, should be labeled with the standard icon to indicate that they will take you away from the current site. Have a look around a service such as Spotify to see these icons in action.

Interaction between tabs
More complex tab thinking leads to considering the interaction between tabs. I often search for items on Amazon and open several tabs to compare different items. After I’ve compared the items I might add one or two to my basket. I expect my session to exist across all the tabs. That means that I am logged in on all the tabs, and my basket is gathering items from all the tabs. Checking out on any one of the tabs should show me a basket containing all of my selected items.

Application
Following these guidelines will help make your website intuitive to use. However the question of context must still be answered. What happens on your website when you open a new tab and log in? Are both tabs now showing the correct state? Is that correct for your service? How about if you log out? Or purchase something? Think about the standard behaviour but always do what is right in your context.

Step away from the book

Do you ever feel like you’re overwhelmed by all the things that you need to learn? Everyday you hear of a great new technique or receive a new book recommendation. What do you mean you haven’t read “Thinking Fast, Thinking Slow”? Next you’ll be saying you haven’t read Milton, or Proust.

Years ago most people were taught by rote. The system appeared to work well, certainly at least some people did come away with a broad bed of knowledge. More recently it seems that a shift has taken place. Some, but probably not enough, kids are learning for themselves. This approach isn’t entirely new, in 1907 the first Montessori school opened, allowing children to learn through play. More recently unschooling has gained popularity, allowing kids to have the space to think for themselves and guide their own learning. These kids are likely to be far better equipped for the world around them because they are curious and used to working out what the answer is, and why.

Now consider your own education. Why do you read all those books? Are you genuinely interested in what they have to say? Do they provide a particular answer that you have been seeking? Or are you reading them simply because you feel you should? If it’s the latter then step away from the book. Learn because you are genuinely curious and you will remember the lesson for far longer than if you plug away at a book just to be able to say you’ve read it.

James Bach does a great job of explaining how he learns in his book “The Secrets of a Buccaneer Scholar“. Actively seeking connections between your knowledge can be an effective way to build understanding, and seems to be a method that ties in with this article which explores the physical side of how we learn. Successful learners are people who find a passion and then chase it. Don’t allow yourself to be overwhelmed, or constrained by what other people are saying and doing.

Ask your own questions and seek your own answers.