Thursday, 24 August 2017

The pricing model for my book

I have encountered mixed opinion about whether I should continue to offer my book for free, along with curiosity as to whether I am earning any money by doing so. In this post I share some information about purchases of my book, rationale for my current pricing model, and my argument for why you should invest in a copy.

What do people pay?

At the time of writing this blog, my book has 1,719 readers.

On average, 1 in 5 people have chosen to pay for my book. Of those who pay, 53% pay the recommended price, 10% pay more, and 37% pay less.

Based on a rough estimate of the number of hours that I spent writing and revising the book, I calculate that my current revenue gives an income of $8 an hour.

I incurred minimal cost in the writing process: the LeanPub subscription, gifts for my reviewers and graphic designer, and a celebratory dinner after I published. If I subtract these expenses, my income drops to $5 an hour.

The minimum wage in New Zealand is $15.75 per hour. This means that based on current sales, I would have been better paid by working in a fast food outlet than in writing my book. I don't think that's a particularly surprising outcome for a creative pursuit.

Why offer it for free?

I wrote the book to collate ideas and experiences about testing in DevOps into a single place. I wanted to encourage people to develop their understanding of an emerging area of our industry. My primary motivation was to share information and to do that I think it needs to be accessible.

I have been told that offering something for free creates a perception that it is not valuable. That people are likely to download the book, but not to read it, as they haven't invested in the purchase. That people won't trust the quality of a book that a writer is willing to offer for nothing.

I weigh these arguments against someone being unable to access the information because they cannot afford it, or someone who is unwilling to enter their payment details online, or someone using cost as an excuse to avoid learning. These reasons make me continue to offer free download as an option.

I recognise that being able to set a minimum price of zero is a privilege. If I was writing for a living, then this would not be an option available to me. I do worry that my actions impact those writers who would be unable to do the same.

Why pay?

If my book is available for free, then why should you pay for a copy?

I believe that I have written a useful resource, but every writer is likely to feel that way about their book! Rather than just taking my word for it, I have collected reader testimonials from around the world including the USA, Netherlands, UK, India, Pakistan, Ecuador, and New Zealand.

The testimonials endorse the practical content, industry examples, and the breadth of my research in my book. They compliment my writing style as being clear and easy-to-read. They state that there is a wide audience for the book - anyone who holds a role in a software development team.

Alongside their opinions, you can preview a sample chapter and the table of contents prior to purchase. I hope that all of this information creates a persuasive case for the value contained within the book itself.

If you believe that the book will be useful to you, then I believe that the recommended price is fair.

A Practical Guide to Testing in DevOps is now available on LeanPub.

Tuesday, 15 August 2017

Encouraging testers to share testing

In theory, agile development teams will work together with a cross-functional, collaborative approach to allow work to flow smoothly. In practice, I see many teams with a delivery output that is limited by the amount of work that their testers can get through.

If testers are the only people who test, they can throttle their team. This can happen because the developers and business people who are part of the team are unwilling to perform testing activities. It can also be the tester who is unwilling to allow other people to be involved in their work. I have experienced both.

There is a lot of material to support non-testers in test activities. I feel that there is less to support the tester so that they feel happy to allow others to help them. I'd like to explore three things that could prevent a tester from engaging other people to help with test activities.

Trust

Do you trust your team? I hope that most of you will work in a team where your instinct is to answer that question with 'yes'. What if I were to ask, do you trust your team to test?

In the past, I have been reluctant to hand testing activities to my colleagues for fear that they will miss something that I would have caught. I worried that they would let bugs escape. I trusted them in general, but not specifically with testing.

On reflection, I think my doubt centered on their mindset.

In exploratory testing, often a non-tester will take a confirmatory approach. This means that if the product behaves correctly against the requirements, it passes testing. It is easy for anyone, regardless of their testing experience, to fall into a habit of checking off criteria rather than interrogating the product for the ways in which it might fail.

In test automation, it is usually the developer who has the skill to assist. My observation is that developers will generally write elegant test automation. They can also fall into the trap of approaching the task from a confirmatory perspective. Automation often offers an opportunity to quickly try a variety of inputs, but developers don't always look at it from this perspective.

If you share these doubts, or have others that prevent you from trusting your team to test, how could you change your approach to allow others to help you?

One thing that I have done, and seen others do, is to have short handovers at either end of a testing task. If a non-tester is going to pick up a test activity, they first spend ten minutes with the tester to understand the test plan and scope. When the non-tester feels that they have finished testing, they spend a final ten minutes with the tester to share their coverage and results.

These short handovers can start to build trust as they pass the testing mindset to other people in the team. As time passes, the tester should find that their input in these exchanges decreases to a point where the handovers become almost unnecessary.

Identity

If your role in the team is a tester, this identity can be tightly coupled to test activities. What will you do if you don't test? If other people can test, then why are you there at all?

I particularly struggled with this as a consultant. I would be placed into an agile development team as a tester, but often the most value that I could deliver would be in encouraging other people to test. This felt a bit like cheating the system by getting other people to do my role. I believe that a lot of people write about the evolving tester role because of this dissonance.

The clearest way that I have to challenge the tester identity in a constructive way is the concept of elastic role boundaries that I co-developed with Chris Priest. This concept highlights the difference between tasks and enduring commitments. We can be flexible in taking ownership of small activities while still retaining a specialist identity in a particular area of the team.

In simpler terms, a colleague helping with a single testing activity does not make them a tester. I do not see a threat to our role in sharing test activities. I believe that a tester retains their identity and standing in the team as a specialist even when they share testing work.

Vulnerability

The third barrier that I see is that testers are unwilling to ask for help. This isn't an attribute that is unique to testers, many people are unwilling to ask for help. In an agile team, failing to pull your colleagues to help with testing may limit your ability to deliver.

Even when you think that it is clear that you need help, don't assume that your colleagues understand when you are under pressure. In my experience, people are often blissfully unaware of the workload of others in the team. Even when the day begins with a stand-up meeting, it can be difficult to determine how much work sits behind each task that a person has in progress. Make it clear that you would welcome assistance.

You may be reluctant to ask for help because you see it as a sign of weakness. It might feel like everyone else in the team can maintain a certain pace while you are always the person who needs a hand. In my experience, asking for help is rarely perceived as weakness by others. More often, I have seen teams respond with praise for bravery, eagerness to alleviate stress, and relief that they have been given permission to help.

It can also be difficult to share testing when you work in a wider structure alongside other agile teams that have the same composition as your team. You might believe that your team is the only one where the testers cannot handle testing themselves. In this situation, remember the ratio myth. There are a lot of variables in determining the ratio of testers to the rest of the team. Sometimes a little bit of development can spin off a lot of testing, or vice versa. Test your assumptions about how other teams are operating.

If you are vulnerable, you encourage others to behave in the same way. A tester sharing testing can encourage others to seek the help that they need too. If you're unwilling to ask someone for help directly, start by making it clear to your team what your workload is and extend a general invitation for people to volunteer to assist.

***

If you work in an agile development team and feel reluctant to share test activities with your colleagues, you might be creating unnecessary pressure on both yourself and your team by limiting the pace of delivery. I'd encourage you to reflect on what is preventing you from inviting assistance.

If you doubt that your colleagues will perform testing to your standard, try a handover. If you worry about the necessity of your role if you share testing, perhaps elastic role boundaries will explain how specialists can share day-to-day tasks and retain their own discipline. If you are reluctant to ask for help directly, start by making your workload clear so that your team have the opportunity to offer.

I encourage you to reflect on these themes and how they influence the way that you work, to get more testers to share testing.