Testing is some value to someone who matters

Concern

I have a concern. We online testers have one thing in common: we care enough about our craft to take the time and read these blogs. That’s all very fine. However most testers, and this is based on my perception not research, most testers do not read blogs, or articles, or books or go to conferences, to workshops or follow a course. Well some of those testers do, but only when they think their (future) employer wants them to. And when they do they go out for a certificate that proofs they did so.

Becoming a tester

Regardless of where we start our carreer, be it in software engineering, on the business side or somewhere else, most testers start out with some kind of introductory test training. In the Netherlands, where I live, most of the time that means you’re getting a TMap, or sometimes an ISTQB training. And my presumption is that you get a similar message on what testing is everywhere:

  • Establishing or updating a test plan
  • Writing test cases (design; procedures; scripts; situation-action-expected result)
  • Define test conditions (functions; features; quality attributes; elements)
  • Define exit criteria (generic and specific conditions, agreed with stakeholders, to know when to stop testing)
  • Test execution (running a test to produce actual result; test log; defect administration)

But there are likely to be exceptions. For instance at the Florida Institute of Technology where Cem Kaner teaches testing.

Granted neither TMap nor ISTQB limit testing solely to this. For instance TMap starts of by defining testing as: “Activities to determine one or more attributes of a product, process or service” and up to here all goes well, but then they add “according to a specified procedure”. And there is where things start to go wrong. In essence the TMaps of the world hold the key to start you testing software seriously.  But instead of handing you down the knowledge and guide you to gather your own experiences they supply you with fixed roadmaps, procedures, process steps and artifacts. All of which are obviously easy to use for reproduction in a certification exam. And even this still could still be, as these methods so often promote, a good starting point to move on and develop your skills. Unfortunately for most newbies all support and coaching stops once they passed the exam. Sometimes even facing discouragement to look beyond what they have learned.

Non-testers

To make matters worse the continuing stance to make testing a serious profession has brought line managers, project managers, other team roles and customers the message that these procedures, processes and artifacts not only matter, but they are what testing is about. These items (supposedly) show the progress, result and quality of testing being undertaken. Line and process managers find it easy to accept these procedures, processes and artifacts as measurement items as they are similar to what they use themselves according to their standards. So if the measurements show that progress is being made and that all artifacts have been delivered they are pleased with the knowledge that testing is completed. Customers or end users go along in this but face limits in their belief of these measurements as they actually experience the end product. Like testers they are more aware that testing is never really ended and about the actual information about the product and not about testing artifacts.

So?!

New methods and approaches such as agile testing have brought the development roles closer together and have created a better understanding for the need and content of testing to both the team and the stakeholders. Other approaches, like context driven testing, focus more on enhancing the intellectually based craftsmanship of testing, emphasizing the need for effective and efficient communication, the influence of context on all of this and that software development is aimed at solving something. And thus the aim of testing is shifting from checking and finding defects to supplying information about the product. Regardless of this however and inspite of how much I adhere to these approaches I think they have a similar flaw as the traditional approaches. Like TMap or ISTQB neither of them go outside of their testing container enough to change the management and customer perception. They still let management measure testing by the same old standards of counting artifacts and looking at the calendar.

Challenge

I think we as a profession should seek ways of changing the value of testing to our stakeholders. To make them understand that testing is not about the process or procedure by which it is executed nor about its artifacts, but about the information and value to achieve business goals it supplies.

I myself cannot give you a pret-a-porter solution so I challenge you, my peers, to discuss with me if you agree on this vision and if you do to form a new approach for this together. I will gladly facilitate such a discussion and deliver its (intermediate) results to a workshop or conference at some point.

#AgileTD (2)

Agile Testing Days

From 14 to 17 November 2011 The Agile Testing Days took place in Potsdam (D). Here is my second impression of my visit there.

Preparation

I am an advocate of being well prepared when going to a conference. This enables me to  make informed choices of which tracks I really want to follow or not. This time I added two additional things to my preparation. First I did a poll on Twitter and LinkedIn. I wanted to know who else would be going to the conference and at what time they would arrive in Potsdam. I myself would be arriving on Sunday and wanted to meet other conference attendees. It always surprises my how well this works. On Sunday I met with Lisa Crispin and went out to have dinner with her and eight other testers, of which four were conference speakers. The second part of the preparation was more pragmatic. I wrote a number of blog posts an agile basics, gave a tutorial and a workshop at TestNet.

Surprise & Tutorial

Monday started with a quick breakfast and registration for the conference at which I got a bag with conference information, some tourist information (incl. a bottle of local beer) and also the program for Testing & Finance. A few months earlier I had entered a proposal for that conference and since I hadn’t gotten a reaction I was curious to see who, if not me, were on the program. To my surprise I found myself having a track at the end of day 1. A brief check learned that they had tried to reach me the day before at my home e-mail address that had not checked since I left home.

The rest of the Monday was filled with a one-day version of Jurgen Appelo’s Management 3.0 course. This course I can only wholeheartedly recommend to both managers and testers alike. Besides the necessary theory, the course also is punctuated with reading tips and practical exercises. My personal take-away from this tutorial is the use of complexity theory and the notion that, despite of the fact that all models are fallible, several weaker models can be as effective and as a strong model, and certainly no better model. I will dig into that at some time soon and combine that with Jerry Weinberg’s books on Systems Thinking.

Some of the highlights of the track days

Keynote by Johanna Rothman – “Agile Testers and test managers”
In the keynote, the changing roles of testers and test managers were discussed. For example, testers will need to cooperate more intensively with developers. Test managers should be leaders in the organization and pursue the following key activities: Monitoring of the project portfolio; Removing organizational obstructions, Create confidential relationships, Leading the hiring process, Increasing the capacity of the organization and finally the Start up communities of practice. I liked the keynote enough to be following her tutorial at the Belgium Testing Days in March 2012.

Track by David Evans – “What testers and developers can learn from each other”
This track showed that testers and developers, while working on the same product, see this with a different perspective. Testers often seem more capable of changing perspective. By being able to do so testers can learn developers that there are different kinds of tests. A good model for showing this is the “Agile Testing Quadrants” as defined by Crispin and Gregory from the book Agile Testing. But I a will keep further description short as you can see the whole presentation on YouTube at, http://skillsmatter.com/podcast/agile-scrum/what-testers-and-developers-can-learn-from-each-other

Track by Rob Lambert – “Do agile testers have wider awareness fields”
This track went in to the need to be aware of your context and to use this awareness to your benefit as a tester. Perhaps it is the process or maybe it is the people? Or is the awareness field of agile testers is not wider at all? Agile testers however seem to display a higher ability to feel, to perceive, to know and to be aware of themselves and the world around them. Traditional testers often seem to have a more limited consciousness in terms of testing, and development roles. Even if it is wider, it is often less versatile than in an agile environment. There is however a distinction between social (situational) awareness and personal awareness. One reason for the difference in perspective among other things, is that the focus of testing in a traditional development environment is narrower than the focus of testing in an agile environment. A greater awareness and a broader focus, often leads to an increase in choices. This allows you to choose one of the possible paths instead of chosing a prescribed path. A greater awareness is also a first step on the path of change. However you can not follow all paths. It is necessary to have sufficient self-knowledge and to know your limits. More on this in this prezo.

Track by Huib Schoots – “So you think you can test”
Huib actually wasn’t on the initial program of the Agile Testing Days. But a few of the presenters were ill and since Huib happened to have his laptop with this presentation on it at the venue he offered to pitch in. The organization graciously  accepted his offer and Huib made his first appearance at an international conference. As the title suggests his talk was on what makes a good tester and how to become one. I really enjoyed his talk but rather than to describe it here I am going to point out a series of columns on this Huib is writing.

Keynote by Liz Keogh – “Haiku, Hypnosis and Discovery: How the mind makes models”
Liz put an extraordinary exercise into her keynote. She let the audience pair up to create Haiku’s. Together with Johanna Rothman and I came up with the following sentences that we combined to the following Haiku:

Foggy breath
An agile journey
Bright blue burst over the rocks

Or a more famous one from Matsuo Basho:
Furuike ya                  Old pond
Kawazu Tobikomu     Frog jumps in
Mizu no oto                The sound of water

Liz continued with a hypnosis session to explain that concentrated and focussed attention on positive experiences can bring a state of mind that widens perception and activates the ability to see patterns and models. Huib Schoots volunteered to go on stage and be hypnotized. It was impressive to see how more than half of the audience participate and was elevated by the experience.

Keynote van Gojko Adzic – “5 key challenges for agile testers tomorrow”
Gojko concluded the track days with an inspiring keynote talk on five challenges agile testers are facing:

#1 Shorter delivery phases
#2 Agile is now main stream
#3 Faster feedback
#4 Large “enterprise” projects
#5 Validating business, not software

His final message was to adopt principles, adapt practices, teach each other how to test, help business to define and validate actionable metrics, visualize risk value areas and to draw up contexts to inform testing. This definitively struck a chord with me. As I am working at a large enterprise transitioning to agile. I can fully understand that the energetic and all present Gojko won the MIATPP Award 2011 as “The most influential Agile Testing Professional Person 2011″

Final day

The final day was a series of parallel sessions with Open Space, Coding Dojo, Testing Dojo and last but certainly not least TestLab. To be honest I was both to actively involved and tired after the previous days to take sufficient notes. But what I can share with you that these possibilities to actively use what you have learned, to spar with your peers and to be coached by the organizers and speakers that are there makes this part of the conference potentially the most valuable part.

A journey to #agiletd (1)

Agile Testing Days 2011 – Potsdam

In October I started a series of posts on agile. For me there were three reasons to start writing those posts. First, I worked in an agile environment, second, I felt there had to be more to agile than its most commonly mentioned method SCRUM and third it was a way of preparing myself to go to the Agile Testing Days. Now that I have returned from the conference I would like to share my experiences with you in several posts. I am going to use the discussion  with Huib Schoots about going to conferences as a starting point to describe the social aspect of going to a conference. Other posts will go deeper into the content when I have digested the information bombardment.

Why should testers attend conferences?
My argument at the time  was: “Conferences typically are the place where you can learn the latest developments and opinions, submerge yourself into the testing mindset, confer with your peers, refresh your ideas and expand your network”.

Well at the Agile Testing Days this was absolutely true. But, and this is something I will have to be adamant about, this does not happen automatically. There are a few conditions to consider. Preparation You need to prepare yourself; for instance by knowing who the speakers are and what their subjects are. And not only to determine to which talks you want to go but also to ask yourself if it would be interesting to talk and discuss with them about it. Being Approachable Most of the speakers and delegates, as I have experienced, are very approachable and like to talk to you about almost anything. A conference can be so much better if you are open to this yourself and are courageous enough to step up to others and start a conversation. Look beyond the program Conferences, typically those that host different nationalities of speakers and delegates, do not stop when the talks are finished. Get together with the people you meet. Go out and have dinner with them, or get a drink at the bar. Why would you lock yourself up in your hotel room. A conference is not like a class room where you enter at a scheduled time and leave once class is over. Enjoy Go and talk about what you have on your mind. It does not even have to be about anything from the conference or testing even. There is great stuff to learn, great people to meet and lots of fun to have. And even if you think you have nothing to talk about there is a lot to gain by listening and watching the interaction. But I am pretty sure once you are there conversations will happen.

So what did I do?

Having said all of the above you might question how I fared myself. Well I started with inquiring who else, other than my colleagues (Frank Pellens, Huib Schoots, George Stevens and Robert Copoolse), was going to go the Agile Testing Days by sending out a few tweets on this matter. As it turned out there was a division between either the Agile Testing Days and with EuroSTAR within my followers. After some conversation Lisa Crispin and I agreed to meet on the Sunday evening before the conference. Now having set a date others would be able to join in. We ended up having a very enjoyable and entertaining dinner at Petite Pauline with Tamara Taxis, Liz Keogh  (Picture: Liz folding origami animals from Euro bills), David Evans, Stephan Kämper, Huib Schoots, Bob and Lisa Crispin and myself. Back at the hotel we went for another drink at the bar and found that several people that we as a group knew, like Michael Bolton, were to be found there also. So even before the conference had started I was meeting new people, talking to them and started a rolling snowball that would keep on growing during the rest of the conference.

Now that I had made contact and kept an open spirit I found myself getting to know lots of new and interesting people during the conference. Additionally I reconnected with people who I had met before and all of them added to my story of these Agile Testing Days. A story that enriched me and let me have much more content, context, depth and interactivity during the conference than when I had only gone there to listen.

PaTS

One of the other highlights was something Huib Schoots and I organized. Having heard about lightning talks and rebel alliances at other conferences we kind of felt the Agile Testing Days should have something similar. And if it were to happen we wanted to be part of it. So what better way to ensure that than to organise one ourselves. We contacted the guys from Diaz-Hilterscheid and after some explanation we were allowed to rent a room at the venue. Shortly after we made an initial selection of people we would like to meet and that we knew were coming to the Agile Testing Days. In that mail we called our gathering the Potsdam agile Testers Session or PaTS. We planned to start with the people who reacted positively on our mail and would see who else would like to join us whilst in Potsdam. On the third day of the conference we (Rob Lambert; Rob van Steenbergen; Daniel Lang; Janet Gregory; Simon Morley; Brett L. Schuchert; James Lyndsay; Stevan Zivanovic; Jim Holmes; Bart Knaack; Lisa Crispin; Olaf Lewitz; Mike Scot; Jurgen Appelo; Thomas PonnetCecile Davis; Michael Bolton; Huib Schoots and myself)  got together in the TestLab, ordered some beer and pizza and started talking.

We started by making up a prioritized list of subjects of which we did the following:

    • What makes a good tester (Nice post on this by Olaf Lewitz); Quote by Michael Bolton: “To see complexity in apparent simple things And to see simplicity in apparent complex things.”
    • Manage / lead testers to become great; Qoute by Michael Bolton: “Learning does not stick if it does not sting a little bit.”
    • DEWT / Peer groups (DEWT = Dutch Exploratory Workshop on Test)
    • Acceptable level of risk

My following posts will be go deeper into the content or the conference and PaTS, but for now there is the following post by Jean Claude Grosjean; “Agile Testing Days 2011: Day 1 – What a fabulous day

Exercising agility

Sprint 0 – The idea

While getting in the mood for the Agile Testing Days 2011 in Potsdam I remembered  seeing a XP exercise sometime before. Essence of the exercise was to use the agile manifesto, its principles and to link them to development practices. This really felt as a great practical extension to my previous two posts on agile. Only trouble was that it had forgotten who wrote it so the exact steps were unknown to me. Also I remembered that it originally targeted an XP development audience and  that I felt that it needed some adjustment to be useful for (non-coding) testers.

At the same time I was getting ready to participate in the TestNet workgroup theme night with the Agile Testing workgroup. While e-mailing with the workgroup chair, Cecile Davis, I offered to use a recreation of the exercise suitable for testers and to translate the manifesto and principles into Dutch along the way.

Sprint 1 – Proof of Concept

At the following meet the other workgroup members liked my idea and draft version of the exercise. So at the TestNet workgroup night on November 8 I have presented and executed the exercise in front of some 30 people.

All in all the execution of the exercise was a success and I received positive feedback. Several participants were interested in doing the exercise with their team. But personally to be honest I quickly saw after the introduction that in spite of the good idea the six exercise steps I had written were not going to work with such a large group. So the exercise was saved by improvising, getting some goodwill and by offering additional explanation during and after the execution. Also I discovered that trying to keep it inside the period of an hour was a real challenge.

In good agile tradition I concluded the evening with a retrospective. Combining feedback from the participants with my own feedback I put new items on the (virtual) backlog. First one was to write this post, second to do a re-write of the exercise in general and thirdly to make an adaptation of the exercise steps in order to make them suitable both for smaller and larger groups. Both the content and the ‘new’ exercise steps of the exercise will be part of the following sections. The Dutch version, containing I believe the first complete translation of both the agile manifesto and the principles, will be placed on the TestNet ‘Agile Testen’ workgroup page [TBD].

Sprint 2 – The exercise (published version)

Preparation:

  • Large separately printed sheets of the agile manifesto and the twelve principles
  • As many  A4 / Letter print outs with the practices on them as you have participants
  • Post-its or similar
  • Markers
  • Introductory presentation about the agile manifesto, the principles and the practices
  • Know what you’re talking about
  • A room with possibility to form groups, walk around, and hang the print outs on to the wall.

Step 1:
Give a (short) presentation on the Agile Manifesto and its principles.
Depending on the agile experience of your audience this can be shorter or longer. Check my previous two posts for to get additional information or inspiration.

Step 1B (small groups):
Group members discuss what the principles mean to them and how they map to the Agile Manifesto.
Depending on the time you have and on the familiarity of your audience with the Agile Manifesto you can spent longer or shorter amounts of time on this. In larger groups this tends to take a lot of time and is probably best added into the step 1 presentation or left out all together.

Step 2:
Present the practices and handout a hardcopy version of them to all participants.
Depending on the experience of your audience (and the time you have) you can provide information about all of the practices (takes a lot of time), or let the audience indicate which ones need to be elaborated or skip explanation al together.

Step 3:
Have the group go up to all of the principles and have them discuss  and map the practices that they think fitting to the principle. Mapping should be visualised by writing the practice on to a post-it and sticking it to the top of the sheet if it is a good fit, to the bottom of the sheet if it only fits partially.
The group should form a consensus on the which practices fit and to what extend. The aim here is to learn by actively linking practices to agile principles by discussion and argumentation. When necessary the facilitator should provide additional information and elaboration about the practices. 

Step 3B (Large groups):
Divide the audience into smaller groups of no more than 6-8 people. Then execute step 3 by letting them go by all principles from a different starting point.
To aid the visual result you can hang multiple versions of each principle (as many as you create groups) next to each other and differentiate the groups choices in this way.

Step 4 (Large groups only):
Have each group pick one or two of the principles and let them explain why they chose those practices and why they placed them higher of lower on the sheet. The other groups should be able to ask questions.
This step is more about sharing information and reasoning then that it is about argumentation and justification. A single group will have done this automatically during the exercise.

Final step:
Have all members evaluate what they have learned and taken away from this exercise. One of the take aways should be to pick one or more practices that they are going to actively work on during the next period. Then execute a (quick) retrospective on the execution of the exercise.
Depending on the group size and time you have left this can be down by letting each member express this to the group or to let them do this individually later.

The agile manifesto, the principles and the practices

To conclude this is what it is all about. Starting of with the practices:

Practices

A practice is something that has proven to be valuable in a certain context and offer insight into solutions that may or may not work in your situation.

You can do this with the list below for a start. But preferably create you own shorter, longer or more suitable list. Basically you can do this with any kind of practices not just test related practices.

  • Manage risk
  • Execute your project in iterations
  • Embrace and manage change
  • Measure progress objectively and understandably
  • Test your own test cases
  • Leverage test automation
  • Team change management
  • Everyone can test (and owns quality)
  • Understand the domain
  • Describe test cases from the user perspective
  • Manage versions
  • Co-locate
  • Leverage patterns
  • Actively promote re-use
  • Rightsize your process
  • Continuously reevaluate what you do
  • Test Driven Development
  • Concurrent Testing
  • Pair Testing
  • Specification by example
  • Acceptance Test Driven Development
  • Plan sustainably
  • Stand-up meeting
  • Plan in relative units
  • Configuration management
  • Learn by doing
  • Whole team approach
  • Shared Vision
  • Use Case Driven Development
  • Risk Based Testing
  • Evolutionary (Test) Design
  • …..

The agile manifesto

We are uncovering better way of developing software by doing it and helping others do it. Through this work we have come to value:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

The principles:

  • Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  • Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
  • Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  • Business people and developers must work together daily throughout the project.
  • Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  • The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  • Working software is the primary measure of progress.
  • Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  • Simplicity–the art of maximizing the amount of work not done–is essential.
  • Continuous attention to technical excellence and good design enhances agility.
  • The best architectures, requirements, and designs emerge from self-organizing teams.
  • At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Remembered who the original exercise was from: David A. Koontz

A journey to agile basics (part 2)

In part 1 of my journey to agile basics I travelled back to the Agile Manifesto and its twelve principles. In this second part I will make a small tour to each of the seventeen attendees of the original meeting.

Kent Beck
Mike Beedle
Arie van Bennekum
Alistair Cockburn
Ward Cunningham
Martin Fowler
James Grenning
Jim Highsmith
Andrew Hunt
Ron
Jeffries
Jon Kern
Brian Marick
Robert C. Martin
Steve Mellor
Ken Schwaber
Jeff
Sutherland
Dave Thomas

How and why they met is briefly explained at the Manifesto itself, so I will not go into that further at this point. A few of the authors have written a recap of events at the manifesto meeting and where ever I have encountered them I have added them here too.

Some of the authors I had heard about at conferences, read work written by them or have seen them mentioned by others. But for quiet a few of them it started of as a journey into the unknown. As I travelled further I found that for some of them their work obviously spoke louder to me then their name. I might not have heard of recalled their name, their products or ideas I did recognize, appreciate and use nonetheless.

My approach to the overview of authors is that I present them in alphabetical order. I tell something about what the are doing  and for what they could / should be known. If possible I will provide links to those particular items providing possibilities for you to dig in deeper yourself.

Although the trip proofed to be taking a bit longer than anticipated I really enjoyed myself and I can only encourage you to have a go at the material yourself and treat this blog as a starting point for your own journey.

The authors

Kent Beck

Kent Beck is a software engineer. He is the founder and director of Three Rivers Institute. He is the creator of Extreme Programming (XP, 1996) and has rediscovered Test Driven Development (TDD).

Kent Beck typically is not known to be a tester. Most of his work is oriented on organizing development processes and teams. His ideas on this have had a visible impact on how agile teams are seen today. He has emphasized embracing change, stressing customer satisfaction, customer participation and the use of feedback. Testing is as such is recognized but limited to what I would call development testing (or checking). In short he sees testing as:

  • All code must have Unit tests
  • All code must pass all Unit tests before it can be released.
  • When a Bug is found tests are created before the bug is addressed (a bug is not an error in logic, it is a test you forgot to write)
  • Acceptance tests are run often and the results are published

Mike Beedle

Mike Beedle is Founder and CEO at New Governance and e-Archtitect. He also is, together with Ken Schwaber, the co-author of the first Scrum book, Agile Software Development with Scrum. Scrum has probably become the most popular agile method. Over the years Scrum has gotten many supporting organizations, training facilities and lately even certification has come available.

Arie van Bennekum

Arie van Bennekum joint the conference as a member of the DSDM consortium. Arie van Bennekum started with working on RAD, followed by DSDM and is currently more involved in Atern. He provides a nice introduction to Atern on his website (in Dutch).

Alistair Cockburn

One of the authors I had not heard or read about outside of the manifesto, kind of rang a bell and turned out to be quiet interesting. Alistair Cockburn was an advocate of the use of use cases. Later on Alistair Cockburn joint an initiative similar to the manifesto: “The declaration of interdependence for modern management”. Which declares the following:

“We …

  • increase return on investment by — making continuous flow of value our focus.
  • deliver reliable results by — engaging customers in frequent interactions and shared ownership.
  • expect uncertainty and manage for it through — iterations, anticipation and adaptation.
  • unleash creativity and innovation by — recognizing that individuals are the ultimate source of value, and creating an environment where they can make a difference.
  • boost performance through — group accountability for results and shared responsibility for team effectiveness.
  • improve effectiveness and reliability through — situationally specific strategies, processes and practices.”

Finally Alistair Cockburn has described a group of lightweight methodologies in the Crystal family.

Ward Cunningham

Ward Cunningham is known for contributing to OO, Paterns and Extreme Programming (together with Kent Beck and Ron Jeffries). Ward Cunningham is however best known for his invention of WikiWikiWeb, better known and used as Wiki. Testing wise Ward Cunningham is known for his invention of the Framework for Integrated Test, a.k.a. Fit, an automated, open-source, tool for user tests. Fit is often used with a third-party front-end Fitnesse.

Martin Fowler

Martin Fowler focusses on understanding how to design software systems ( Patterns, Refactoring, Domain Specific Languages) and on promoting agile approaches. On his website he has a fairly nice recollection of the meeting in Snowbird in which the Agile Manifesto came to life.

James Grenning

James Grenning is a name I actually did not recall from before writing this post. But he was the first on which the initial (alphabetical) search results turned something about software testing: “Test is not about finding bugs“. James Grenning applies agile development to the embedded world. He is an XP coach, but his biggest contribution to agile is the invention of Planning Poker. Personally I find his blog, after reading several posts very entertaining.

Jim Highsmith

Jim Highsmith is the creator of Adaptive Software Development embodying the principle that continuous adaptation of the process to the work at hand is the normal state of affairs. On contrast to the other authors (so far) Jim Highsmith is more about project management and team work than strictly programming. Together with Martin Fowlers he works at Thoughtworks Inc. and was co-author of the earlier mentioned Declaration of Interdependence.

Andrew Hunt

Andrew Hunt co-authored the The Pragmatic Programmer and together with Dave Thomas founded the Pragmatic Bookshelf providing a series of books on software development amongst were books about the Ruby programming language. In one of his blogs I found the following rules, derived from Improv:

Rule one, agree.  Don’t reject current agile practices, but don’t accept them as written in stone either. What constitutes your current set of agile practices isn’t “done”: it’s not finished, it’s not established as canon, and it never will be. 
Rule two, add your piece.  It’s up to you and the rest of your team to evolve your agile practice, to keep it alive and keep it moving.

Ron Jeffries

Ron Jeffries is together with Kent Beck and Ward Cunningham one of the founders of Extreme Programming. His website is very informative on XP and its core practices. (Do not be fooled by the shortness of this item and visit the XP website!!)

John Kern

There is not a lot of typical information on John Kern. I suppose a good introduction is supplied by his recollection of the Snowbird meeting. In addition his blog provides a nice introduction to Ruby.

Brian Marick

Over time Brian Marick has gradually shifted from software testing to a more on general development oriented approach and is currently focussing on Ruby. He was at the time of the Agile Manifesto one of the (few) software testers present.

Brian Marick has an old and a new blog that are both worth visiting. The old blog did have slightly more focus on testing whereas the new blog is more about agile development with a focus on how testing fits in. The old blog also has a good introduction on agile testing with a series of links to interesting blog posts. Most noteworthy, to me, is the test matrix that Brian Marick developed that later on also was successfully used by Lisa Crispin and Janet Gregory in their book Agile Testing.

Robert C. Martin

Robert C. Martin also known as Uncle Bob Martin is a software consultant and author. Robert C. Martin is well-known for his books on agile software development, e.g. Clean Coder, and as a leading member of the software craftmanship approach that produced the following manifesto as an extension to the Agile Manifesto:

As aspiring Software Craftsmen we are raising the bar of professional
software development by practicing it and helping others learn the
craft.  Through this work we have come to value:

Not only working software, but also well-crafted software
Not only responding to change, but also steadily adding value
Not only individuals and interactions, but also a community of professionals
Not only customer collaboration, but also productive partnerships

That is, in pursuit of the items on the left we have found the items on the right to be indispensable.

A nice anecdote the at a keynote for the Agile 2008 conference Robert C. Martin added a fifth value to the Agile Manifesto; “Craftsmanship over Crap” which he later changed to “Craftsmanship over Execution”.

Steve Mellor

Stephen J. Mellor is known for his books on Essential Modeling Techniques and Executable and Translatable UML that was derived from Schlaer-Mellor method.

Ken Schwaber

Together with Jeff Sutherland Ken Schwaber formulated the initial versions of the Scrum development process and are authors of the definitive Scrum Guide, of which recently an update version became available. He is a founder of the Agile Alliance, and he is responsible for founding the Scrum Alliance and creating the Certified Scrum Master programs and its derivatives. Follow Ken on his blog to see what his opinions on the development of Scrum are.

Jeff Sutherland

As mentioned previously Jeff Sutherland works closely with Ken Schwaber. Ken and Jeff formalised the Scrum development process at OOPSLA’95 in the Scrum Paper of which an updated, 224 pages, version is available. Additionally this article is available on his blog and explains where the idea came from. Jeff is very active in providing training and you have ample change to meet him in this capacity.

Dave Thomas

As mentioned before Dave Thomas co-founded the pragmatic bookshelf and wrote the “The Pragmatic Programmer” together with Andrew Hunt. They also went on to write about the Ruby programming language in the book Programming Ruby and Agile Web Development with Rails, a book on Ruby on Rails which also touches on Ajax and the Ruby programming language. Dave has also coined the phrase ‘Code Kata‘.

This concludes my visit to the authors of the Agile Manifesto. In part three of the blog I will visit some of the other authors / persons that I have found noteworthy since I have gotten interested in agile.

A return to agile basics (part 1)

This post is, as the title suggests, about agile. More specifically it’s about a journey I made to rediscover what agile actually means to me. My need for rediscovery started while I was co-presenting a four-hour tutorial on Agile Testing at the TestNet autumn event recently. As one of my co-presenters was opening with an explanation of agile I felt the following smoldering unease creeping up inside of me.

“We’re talking about agile sure enough, but why is it I mostly hear Scrum, Lean and Kanban content passing by. How agile is that? And if it is not how bad is that?”

This post will therefore take you along the route I took to rediscover agile. It will contain some information on agile, and is a sort of personal recap. It is not intended as a complete and detailed overview of the agile approach and all of its derived methods and practices. Where ever I mention them however I will try to add a link to guide you to more information or interesting blogs. So feel free to use it, if nothing else, as your (re) introduction to agile if you like.

My original journey to agile started in 2007 and I will start once more at what was then my starting point. One of my colleagues came back from EuroSTAR 2007 and was enthusiastically talking about this new thing: Agile! I had heard about it before but had never really dug into it before. So like then I will go to where agile had taken off: the declaration of the Agile Manifesto in 2001. Seventeen people came together in a ski lodge and drew up a manifesto with the four following lines and guideline:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

This probably still is the best known part of agile there is. No self-respecting course will bypass these lines and not show them and declare them the essence of agile. Personally I think the manifesto, once read, makes sense to almost everybody who has been in IT for more than a couple of years. Their strength lies in stating something people sense but not always come to formulate themselves.

A lot of courses on agile do not go beyond this and do not also show the additional: “Principles behind the Agile Manifesto”. They jump straight to one of the methods and often enough without mentioning the principles at all. In my opinion this does not do justice to the manifesto as a whole. Therefore let’s have a look at these twelve principles. The seventeen authors of the manifest, who are also hardly ever mentioned, are part of the second part of this small series of post on agile. The third part will be on other prominent authors, like Lisa Crispin, and popular methodologies.

The Principles

    • Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
The three elements of this principle, customer satisfaction, early continuous delivery and valuable software seem key to agile. But other software development approaches are known to strive for these elements also. So the difference will have to be in the way agile goes about achieving these elements. Lets travel further.
    • Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.

As many of us have probably experienced, changes in requirements during development and even late in development is not new to software development. To accept and embrace these changes is certainly less common. This is one of the items that differentiates agile from other approaches. Other (more traditional) approaches either deny the existence of such possibilities, are unable to cope with them or try their utmost to abolish them.

  • Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

All software projects aim to deliver working software. The difference here is that agile projects aim to deliver more than once and to do so within a (far) shorter time span.

  • Business people and developers must work together daily throughout the project.

Two elements in this principle provide direction into how business people and developers should work together. Those are to do it daily and to do it throughout the project. This combination I believe is typical to good software development in any approach. A lot of the other approaches have formalized so much however that to do so amounts in a breach of process, plan or protocol.

  • Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

In management theories this concept has been around for decades. For some reason however the application of these theories seems not so common place in the software development world. In this respect this principle sets the right mindset in creating self steering, responsible and trusted teams.

  • The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

This is a radical break to what is, or I rather would hope, was considered standard in software development. Still a lot of developers, testers and even more so managers and stakeholders consider it impossible to do without upfront and approved documentation. “How else would you know what to do.” Reality is that documentation hardly ever completely describes what the customer wants. Let alone that it completely describes how to build it. I can personally not think of a faster way to retrieve or confirm information then by asking the informant directly. And if anything needs to be recorded you can do that while talking together, in the code or on paper later.

  • Working software is the primary measure of progress.

There is beauty in this principles simplicity. As a tester however I think it’s a bit to simple. What does that mean “working software”? Does the code run, does it pass all checks or is it tested also and do the customers find the value in product that they were looking for. The intent of this principle is good, but it needs enhancement on the concept of what working means in your context and to whom.

  • Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

I can only adhere to and promote this. I do realize however that it often is not on the mind of project managers. PM’s regularly still steer their projects on cost, time and scope using unfounded estimates that still have to be kept even when pushes personnel to their limits and over.

  • Continuous attention to technical excellence and good design enhances agility.

I suppose this applies as an enhancement to all software development and therefore also to agile. If it actually enhances agility I am not so sure. The need for short sprints, iterations, cycles, or what you call them seems to work counterproductive here. (At least for the developers and architects I know.)

  • Simplicity–the art of maximizing the amount of work not done–is essential.

In order to deliver the right content swiftly you should refrain from adding self thought up features or so-called enhancements. Unless the stakeholders or users are informed before and see them as adding additional value. Otherwise these items are likely to go in unnoticed, undocumented and untested. With all the risks that come with that. As to minimizing the work on agreed upon requirements I applaud the intent, but I think most developers start of to do their best and refactor when they see possibilities. In that sense it is wisely mentioned but if it really brings benefits in practice I have doubts about. (But I will get to this when I go into Lean later.)

  • The best architectures, requirements, and designs emerge from self-organizing teams.

I totally agree with the idea behind this principle. Self-organizing teams are a good breeding ground for this. It should however not limit them to seek and accept expert input if this brings even better results.

  • At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

The best way to handle your faults, or any experience, is to reflect and learn. This applies to teams as much as to individuals.

This concludes the first part in which I have travelled along the Manifesto and its twelve principles. I will continue (next week) with some info about the authors. Which is actually new to me as well, so that will be a journey into largely undiscovered country.

Donkeys Bridge

Ezelsbruggetje

Something intended to assist the memory, as a verse, acronym or formula.
“Ezelsbruggetje” is a Dutch word that roughly translates to Donkeys Bridge.
Its meaning however is similar to Mnemonic

Up until the Rapid Software Testing class in early June I was not really actively using mnemonics for testing. Come to think of it I am not even sure if , being a non-native English speaker,  I actually connected mnemonics to its equivalent Dutch word “ezelsbruggetje”. During Rapid Software Testing I got intrigued with the concept of using it for testing and after some intensified practical use I am growing more and more fond of the use of mnemonics. So much so that a week ago I came up with one myself.

It started when I was driving home after an Intervision session that I had organized at work and was kind of contemplating on how my testing skills are evolving in and outside of work. Eventually I concluded that the best things, for me, only come together if I work within a team-spirited group of people. I do not use the word team here on purpose, because I do not mean to talk about formally organized teams but any group of people coming together with a mutual and positive sense of  purpose and interests.

My Mnemonic

The next day I introduced my mnemonic to a colleague and besides the grin it produced he explained that he thought the idea was pretty good and the acronym would make sure it stuck. So now a another couple of days have passed and since I couldn’t find any similar mnemonic for teams I thought of sharing it with you.

Pirosmani-Donkey Bridge-The State Museum of Fine Arts of Georgia, Tbilisi

Pirosmani-Donkey Bridge-The State Museum of Fine Arts of Georgia, Tbilisi

Skill – The ability to function within a group

For some people acting within a group comes natural but the rest of us can sharpen their skills by following courses, reading books or training. Following a training on effective communication or group dynamics can be very helpful here.

Experience – The amount of time actively spent as a member of a variety of groups

Skill can get you a long way, but in my opinion there is no substitute to actual use of your ideas and abilities in practice. Participation in different groups with different contexts is a good way to gain experience.

Knowledge – All facts, truths, descriptions or information that adds value to a specific group at a specific time

Different contexts requires different knowledge as the value of that  knowledge depends on its usefulness in that specific context. Understanding, or if it is not so obvious asking about the context in which you are in helps you to choose which knowledge you have adds value to the performance of your group. Off course having an extensive knowledge base is what can give you an advantage. Recently several good blog posts were published on education that can help you:

Service orientation – Willingness to use and share skill, experience and knowledge with others

Say you gained insight in effective communication, have been a member of dozens of teams and have learned your trade to the best of your ability. This all only benefits you and your team members if you are willing (and able) to use and share this with your team.

To do so there are two major hurdles to be taken. The first one is that you must want to share. I can think of a number of contexts where if you are any good in  the first three attributes this can give you a sort of informal power. If this is the case you will have to either overcome the fear of losing power or be able to see that this power is hollow and easily surpassed with the esteem you can get by sharing.

The second hurdle is of  a more personal nature. From personal experience I know that to use and share, or to help others do this, often sounds easier in theory than it is in practice. To do so you need to get out of your, figurative, cubicle, expose yourself and lose the fear of making mistakes in front of a group. So this takes guts and is more difficult for some than it is for others.

As a note it is probably wise to assure that, before you jump the hurdles,  your team is what I call a team spirited group and not only a group of people assigned to each other  by function, project or location with no other reference to each other

So if your context is open for it, the next time you apply or hire for a job think of my team mnemonic.

Skill
Experience
Knowledge
Service Orientation