Category: Responsibility

Refusing to do bad work…

I talked at TestBash about context-driven testing in agile. I my talk I said that I refuse to do bad work. Adam Knight wrote a great blog post “Knuckling Down” about this: “One of the messages that came up in more than one of the talks during the day, most strongly in Huib Schoots talk on Context Driven in Agile, was the need to stick to the principle of refusing to do bad work. The consequential suggestion was that a tester should leave any position where you are asked to compromise this principle.

Adam also writes: “What was missing for me in the sentiments presented at TestBash was any suggestion that testers should attempt to tackle the challenges faced on a poor or misguided project before leaving. In the examples I noted from the day there was no suggestion of any effort to resolve the situation, or alter the approach being taken. There was no implication of leaving only ‘if all else fails’. I’d like to see an attitude more around attempting to tackle a bad situation head on rather than looking at moving on as the only option. Of course we should consider moving if a situation in untenable, but I’d like to think that this decision be made only after knuckling down and putting your best effort in to make the best of a bad lot.

Interesting because I think I said exactly that: “if anything else fails, leave!” But maybe I only thought that and forgot to speak it out loud, I am not sure. Let’s wait for the video that will give us the answer. But in the meanwhile: of course Adam is right and I am happy that he wrote his blog post. Because if I was too firm or too distinct, he gave me a chance to explain. Because looking back, I have done many projects where, if I hadn’t tried to change stuff, I would have left many of them in the first couple of days. There is a lot of bad testing around. So what did I try to say?

Ethics again.

This topic touches very closely to ethics in your work! Refusing to do bad work is an ethical statement. Ethics are very important for me and I hope more testers will recognize that only being ethical will change our craft. Ethics help us decide what is right and what is wrong. Have a look at the ethics James Bach summed up in this blog post “Thoughts Toward The Ethics of Testing“. Nathalie pointed to an article she wrote on ethics in a reply to my last post.

Ethics and integrity go hand in hand. Ethics are the external “rules and laws” and integrity is your internal system of principles that guides your behaviour. Integrity is a choice rather than an obligation and will help you do what is right even if no one is watching.

I refuse to do bad work!

Bad work is any work that is deliberately bad. I think along the lines of restrictions in a context, demands placed on them that they don’t know how to handle. Or even worse: intentionally doing stuff you know can be done better, but it is faster, easier or because others ask you to do it like that. Of course there are novices in the field and they do work that can be done better. I do not call that bad work since they are still learning. Still there is a limit to that as well. If you have been tester for several years and you still do not know how to do more than 3 test techniques without having to look them up, I will call that bad work as well. I expect continuing professional development from everybody in the field. Simply because working in IT (but in any profession) we need to develop ourselves to become better.

ethicsLying is always bad work. And I have seen many people lie in their work. Lying to managers to get off the hook, making messages sound just a little better by leaving out essential stuff. Also telling people what they what to hear to make them happy is bad work. What do you do when your project manager asks you to change your test report because it will harm his reputation? Or what do you tell the hiring manager in a job interview when he asks you if you are willing to learn? Many people tell that they are very willing to learn, but are they really?

Bad work is claiming things you can’t accomplish: like assuring quality or testing everything. It is also bad work when you do not admit your mistakes and hide them from your colleagues. Bad work is accepting an assignment when you know you do not have the right skills or the right knowledge. In secondment assignments this is an issue sometimes. I have taken on a project once where the customer wanted something I couldn’t deliver but because my boss wanted me on the position I accepted. That was wrong and the assignment didn’t work out. I felt very bad about it: not because I failed, but because I knew upfront I would fail! I won’t do that again, ever.

So how do I handle this?

I push back! Of course I do not run away from a project when I see or smell bad work. I do try to tackle the challenges I am faced with. I use three important ways trying to change the situation: my courage, asking questions and my ethics. Some examples: when a managers start telling me what I should do and explicitly tell me how I should do that, I often ask how much testing experience the manager has. When given the answer I friendly tell him that I am very willing to help him achieve his goals, but that I think I am the expert and I will decide on how I do my work. Surely there is more to it and I need to be able to explain why I want it to be done differently.

I also ask a lot of questions that start with “why”. Why do you want me to write test cases? What problem will that solve? I found out that often people ask for things like test cases or metrics because it is “common practice” or folklore not because it will serve a certain purpose. Also when I know the reasons behind the requests, it makes it easier to discuss them and to push back. A great example of this is the last blog post “Variable Testers” by James Bach.

Adam talks about changing peoples minds: “One of the most difficult skills I’ve found to learn as a tester is the ability to justify your approach and your reasons for taking it, and being able to argue your case to someone else who has a misguided perspective on what testing does or should involve. Having these discussions, and changing peoples minds, is a big part of what good testing is.

I fully agree. In my last on blog post “heuristics for recognizing professional testers” my first heuristic was: “They have a paradigm of what testing is and they can explain their approach in any given situation. Professional testers can explain what testing is, what value they add and how they would test in a specific situation.” To become better as testers and to advance our craft, we should train the skills Adam mentions: justify approach and being able to argue our case.

It will make you better and happier!

Jerry Weinberg listed his set of principles in a blog post “A Code of Work Rules for Consultants“. In this blog post he says: “Over the years, I’ve found that people who ask these questions and set those conditions don’t wind up in jobs that make them miserable. Sometimes, when they ask them honestly they leave their present position for something else that makes them happier, even at a lower fee scale. Sometimes, a client manager is outraged at one of these conditions, which is a sure indication of trouble later, if not sooner.

It will make you a happier person when you know what your limits are and you are able to clearly remind people you work with. It will prevent you from getting into situations that make you miserable. “That’s the way things are” doesn’t exist in my professional vocabulary. There is always something you can do about it. And if the situation you end up in, after you tried the best you can, isn’t satisfying to you: leave! Believe me, it will make you feel good. I have got the t-shirt! And… being clear about your values also will make you better in your work. Maybe not directly, but indirectly it will.

Daniel Pink speaks about the self-determination theory in his book “Drive“. The three keywords in his book are: Autonomy, Mastery and purpose: “human beings have an innate drive to be autonomous, self-determined and connected to one another, and that when that drive is liberated, people achieve more and live richer lives” (source: http://checkside.wordpress.com)

But but but….

Of course I know there is the mortgage and the family to support. Maybe it is easy for me to refuse bad work. Maybe I am lucky to be in the position I am. But think again… Are you really sure you can’t change anything? And if your ethics are violated every day do you resign yourself? Your ethics will act as heuristics signalling you that there is a problem and you need to do something. I didn’t say you have to leave immediately and if you are more patient than I am, maybe you do not have to leave at all… But remember: for people who are good in what they do, who are confident in what they will and will not do and speak up for themselves, there will always be a place to work.

Now you!

Have you even thought about integrity? What are your guiding principles, values or ethics? What would you call bad work? And what will you do next time when somebody asks you something that conflicts with your ethics?

 


 

While reading stuff online about (refusing) bad work I ran into this blog post by Cal Newport about being bad at work: “Knowledge Workers are Bad at Working (and Here’s What to Do About It…)“Interesting enough Cal Newport wrote a book called “So Good They Can’t Ignore You: Why Skills Trump Passion in the Quest for Work You Love” about the passion hypothesis in which he questions the validity of the hypothesis that occupational happiness has to match per-existing passion. In several recent talks and blog posts I did I talk about passion. Also in the talk discussed in this blog post I claim that passion is very important and I show a fragment of the Stanford 2005 commencement speech by Steve Jobs. Exactly the passage I showed in my talk, Cal uses in the first chapter of his book. “You’ve got to find what you love. And that is as true for your work as it is for your lovers. Your work is going to fill a large part of your life, and the only way to be truly satisfied is to do what you believe is great work. And the only way to do great work is to love what you do. If you haven’t found it yet, keep looking. Don’t settle. As with all matters of the heart, you’ll know when you find it. And, like any great relationship, it just gets better and better as the years roll on. So keep looking until you find it. Don’t settle.” Anyway. Interesting stuff to be researched. I bought the book and started reading it. To be continued…

 

 

 

The final exit of the test manager?

Last week I attended the autumn event by TestNet. This was an awesome event (as always!) where Leon Bosma did a interesting talk on the role of the test manager in the future with the title “Test Manager: the final exit”. His slides can be found here (in dutch).

In his presentation, he focused on the question what makes a manager? He used the model of Quinn as the basis for all tasks/roles of a manager. Then he compares these tasks to the testing activities according to TMap. In this part of his talk he covers the role description, tasks in testing and its importance to the tester. Then he talked about the developments in the testing profession covering developments in approach, the testing craft itself and the systems under test. The latter coincided with the theme of this event “The Cloud”. In the last part of his talk Leon gives his view on the impact of these developments on the role of a test manager. I have summarized them in the table below.

Role From To
Director He determines what I should do I’ll decide what to do in consultation
Producer He makes sure I can do my job The team make sure we can our job
Innovator He comes up with new solutions We come up with new solutions
Broker He makes the stakeholders happy The actors make each other happy
Facilitator He inspires the team We inspire and build the team
Mentor He teaches me the craft I learn from other specialists
Coordinator He decides what to do when I decide in coorperation the team what to do when
Monitor He sees to it that I do the right things The team ensures that I do what is needed

So, is the test manager a dying breed or not? I think they are! With developments like agile it is obvious that the team will be more responsible to do planning, coordination and determine the test strategy. For that we no longer need test managers. I never really understood the role of a test manager in many projects. Why should we divide the role of the tester in test executer, test analyst and test manager? We don’t do this in the other disciplines in IT, do we?

I think it has to do two major reasons:
1. The immaturity of the testers and therefore the (wrong?) interpretation of the role tester
2. The career path in many organizations

Immaturity
A good tester IMHO “deals” with all aspects of his job, maybe in consultation with the project manager. The tester controls the entire process from writing test plans containing an appropriate strategy to the reporting to the Steering Committee. I know many testers who find it scary to facilitate a workshop (for example, product risk mapping) or to give a presentation (e.g. reporting to the steering committee). The unfamiliarity of the testing craft by other IT professionals makes it worse. Testing is a difficult discipline but most people in IT do not recognize that. A project manager is often unable to make a good estimate of the testing activites is his project. Let alone that he is capable of creating a proper test strategy. Acceptance criteria are very difficult to determine and test managers are often asked to take care of this.

Good testing is quite difficult. Traditionally, business analysts and developers have a relatively easy job. The analyst has only a few dependencies: he talks with stakeholders and writes that down. The developer only needs a development environment and he can do his work. Testing is often much harder: always at the end, started too late with fixed deadlines, organizing various test environments, the many procedures your organization has to prepare acceptance environments, different user groups who should be involved in testin, etc. A lot of arranging and organizing to do! Hiring a test manager is an easy thing to do. Especially if there are people you think the testing itself is not as interesting. Or even worse: if you are not so good at your craft… It is easy to grow (read: flee) towards coordination.

The interpretation of the test role
In a situation where dedicated testers are present, test managers are often needless. Some time ago I worked as a test manager at a customer. In that organization a group test managers were the only “testers”. Most of the actual testing was done by the functional application managers and the users. The test managers did the coordination, wrote test plans, made sure that the testing went as smoothly as possible and were supposted to coach the users. In my opinion this organization of testing is terrible. Sure, users are involved, but testing is a profession and that cannot be delegated to untrained users. Writing requirements or programming is also done by professionals! The users in this situation had a short training. Enough to do proper testing, right?

Test carreers
But who did invent the test managers role? And why? I do not know where the test manager role came from, but I have a suspicion. Testing in many places is still a role that “used” as a stepping stone to another role in IT (WRONG!). Because everybody can test and testers do not need a lot of training (WRONG AGAIN!) so he can focus on the next steps in his carreer. The knowledge and experience of the the systems he gains along the way may well be used in the rest of his career…

Of course a tester grows and his role will be different over the years. I see many junior testers who are doing far less than a senior tester. I often wonder why. The junior needs to learn the craft and he can learn it by just doing it! So let the junior tester do everything himself. Maybe under the guidance of a senior tester as coach. Learning is making mistakes and evaluating them with your (senior) colleagues.

There is only one role: Tester! Test coordinators are in my opinion just senior testers (foremen) responsible for a certain part of the project. One tester is happy to coordinate, the other likes the content. Ultimately, a good tester has mastered his craft in every aspect!

Imagine that after ten years you still want to grow as a tester. What do you do? This is very difficult in many organizations. The salary scales of a tester will not let you. Test manager is a common role in which testers grow. This is a curse for our profession: it makes people want to make money and grow quickly by leaving the role of “ordinary” tester and become test manager. Without focusing to become a great tester they are busy becoming managers. Too bad!

So, will the role of test manager disappear soon? I think not! The test manager is still needed in many places to fill the gaps created by bad testers not in control of their own job!

Preparing a talk: so you think you can test?

I am asked to do a talk at a test consultancy company. To prepare for this talk I want to share my thoughts with you. Hope you can challenge me to rethink or sharpen them.

As a test consultant I have worked for numerous companies and have met or worked with hundreds of testers. A lot of them claim that they are great testers. But are they? I think a lot of testers maybe aren’t that great…

Being a great tester takes a lot of practice. I like this “Becoming a Software Testing Expert” talk by James Bach a lot. The video by the way can be found here. And I see a lot of testers do not study their craft or read books about it. They do not learn or experiment at all. As a matter of fact they claim that they improved by doing their job: after years of doing my job I have a lot of experience! But as James says in his slides: “Don’t confuse experience with expertise”

In this post I like to address three topics what I have experienced that could be helpful become a better tester:
1) Adapt to the context
2) Collaborate
3) Learn & practice!

Everthing is context, context is everything!
Testers in the Netherlands are often trained with the V-Model and methodologies like TMap, TestFrame or ISTQB. Although I do not agree with everything they claim, there is “nothing” wrong with these test methodologies. Not if you don’t take them literally and see them as a practice. We need to become more “agile” in using these methodologies. Since the value of any practice depends on its context. Testers should to be able to adapt to changing situations. Doing so they are able to provide the most value to their stakeholders. Testers should focus on their skills instead of focus on procedures and processes.

Collaborate
Being passionate is contagious! By being passionate you will get your team test infected. Showing your testing skills can help the others in your team. My experience is that even developers will participate in testing if you can show them your skills. They love to build handy test tools and automated scripts which can help the team being more effective in testing! Start using your testing skills and teach others to do better testing. Testers should teach their team members how to test better! I like the way Gojko Adzic descibes it in his presentation “Sleeping with the enemy“: our role in teams will change: from testing everything ourselves, we will also be advisers in our projects. Ensuring that the team does the testing right. Our value is getting the testing right. Of course we’ll still be testing ourselves, the critical, complex testing will always be our job. In exploratory testing or paired testing we can demonstrate our testing skills. Good software testing is a challenging intellectual process.

Times are changing and so is the way we do projects. Collaboration is the key in becoming more effective and efficient in testing. Software development is a team sport: people, working together, are the most important part of any project’s context. So why do we introduce lots of test levels and quality gates? Separate the different disciplines in our projects? Create bulky test plans individually which no one will read?

Learn & Practice
Have you ever seen TV series like Benelux’ next top model or X-factor? People battle to become the best model or singer and win the show. Of course testing is not about beating your colleagues in a match. But this might be the only difference… In the TV shows the models and singers need to show their quality in different areas, every week they are trained in boot camps or by very experienced gurus. These coaches come from different disciplines. To be the best you need to learn all aspects of your job. How do we testers learn?

We need to practice continuous learning. Become skilled in various ways of testing. Practical tips to become a top tester:

  • Take testing classes: Rapid Software Testing or BBST are good examples.
  • Learn and gather ideas from reading books, online magazines and blogs
  • Learn by visiting conferences, participate in online conferences or watch the video’s that have been put online
  • Practice in Testing Dojo’s, weekend testing, software testing clubs, or organize it yourself in your organisation or team.
  • Meet with enthusiastic colleagues and discuss your experiences: peer mentoring, intervison, peer conferences, SIG’s, workgroups, etc.
  • Collaborate, learn from other disciplines: writing/reviewing requirements, coding scripts, using tools, etc.
  • Try different (open source) tools
  • Start writing and presenting about your work and thoughts, get feedback and discuss your thought to improve and discover new ideas.
  • Coach and get coached! Even professional tennis players or soccer players have coaches and trainer to get better and stay on the top.
  • Evaluate often! Make sure you get feedback from your colleagues but also keep evaluating your own work: your processes and your products. Always keep asking yourself the question: how can I do better next time??

Markus Gärtner has written a great article about this stuff called Alternative Paths for Self Education in Software Testing in the July issue of Testing Planet.

Update: slides of the talk can be found in the download section or here.

The quality? Oh, we test it in! (part 2)

Who is actually responsible for the quality? To answer that question, I ask myself two questions: what is quality? And what is responsible?

Quality is a difficult concept. In training on software testing I often ask the question: “is the coffee any good?” I get the most diverse answers. Some answer: “for coffee from a machine, it is doable”. If someone says, “horrible!” my response would be: “Why do you drink the coffee anyway?”. A nice discussion about the concept of quality. Quality is value to someone (who matters), at a given time. So the coffee, even if it is not really good, can still have value: for example, to wake up/stay awake! So the coffee has some quality for someone who wants to stay awake.

The other topic is responsibility. Who is responsible for the software? Anyone who ever worked with a RACI matrix, knows that there are different “types” of responsibility. Responsible and Accountable, which in Dutch both can be transleted in “verantwoordelijk” (responsible). In this context, I look at the question: who is responsible for the quality? The project (or project board) for its production. But what about the rest of the team?

Andreas says: “A nurse in hospital is still partly responsible for welfare of patients? Not just the doctor. An inspection department at Unilever is responsible aren’t they? Not only the people behind the machines?”. The example of the doctor and nurse is a good example. Of course the nurse has responsibilities. To nurse the patient as directed by the doctor who suggests a diagnosis and treatment. Each profession has task and are jointly accountable. Not responsible for the health of the patient! They should do the best possible in their profession. But if a patient decides to leave the hospital during treatment, it is his choice! Similar to: if the customer decides to ship the software. In spite or because of the results of testing.

I totally agree with Jan Jaap saying: “many testers are limited ….” and “testers of all companies: broaden your horizons!”. Testing is definitely not just a plan, case writing, execution, reporting. It can and should be much more. Only the purpose of testing, I would like to formulate it differently. Not “contribute to the project objectives with a focus on quality“. I’d rather go for the definition of Cem Kaner, “Software testing is a technical investigation for the purpose of revealing the quality of a software product on behalf of stakeholders.” or the shorter definition of Jerry Weinberg: “Testing is gathering information with the intention of informing a decision”. The goal is to provide information! And thus helps the tester actually contribute to the project goal.

In early quality measures, I also recognise quality reviews, inspections, etc. But here is much more than just working on documentation. I think of: pair programming, help unit testing (improvement), improve testability by asking for logging, acceptance criteria drawn up by acceptance tests (even before fully written requirements and specifications). And there’s so much more testers can do.

The quality? Oh, we test it in!

Friday I saw a tweet by Andreas Prins. Since they are in Dutch, I will translate them here.

His tweet: Question: is this statement correct? # The quality? We will #test that in!

My reaction: Can I have a bucket? RT @ andreasprins: Question: is this statement correct? # The quality? We will #test that in!

After replying, I saw that Jan Jaap Cannegieter also replied with this tweet: @andreasprins statement: “quality, we will test it in” is true, it’s just awfully expensive and time consuming.

I couldn’t believe my eyes. So I replied: @jjcannegieter @AndreasPrins No, never true …. You can’t test quality in, you /build/ it in!

After a while Andreas replied: @huibschoots @jeroenro Thanks clear responses, I share your opinion, you’re really together responsible, but how do you do that?

I replied: By working together! Testers help developers to improve quality. Too long for a tweet. Want a blog?

Andreas asked his questions because he was preparing a column for TestNieuws, a Dutch website on testing. In his post he sums up the reactions and he concludes:

Having thought about this, we can conclude the following:
– The quality of testing afterwards is not possible because the product is there already
– Early involvement can prevent deterioration
– We need a new way of thinking where we not only feel responsible for providing insight into the quality but we also feel responsible for the quality itself. The moment we as testers also feel responsible for the quality, and we are a team, so testers are actually responsible for the quality, then we will also be asked to work to together to achieve this quality.

No, no and no again! Testers can test as much they want, the /tester/ will not improve the quality. The developer does, to the software, at least. Perhaps a semantic discussion as Jan Jaap calls it, but still very interesting! Because the statement is fundamentally wrong! And with these statements perceptions and fallacies are born. The perception of the organization is often that testers will test the quality in. Or even worse: the regression test will find the major bugs, so why test early?

Making testers responsible for quality is also fundamentally wrong. Even as part of a team, testers are still not responsible for quality. Testers are there to help others, with their service of testing. Which is a sapient activity, questioning the product. Helping the team (or our client) to make informed decisions about software by critical thinking (see: RST by James Bach and Michael Bolton).
To be continued!