ATDD: A Whole Team Approach to Collaborative Software Development

I realize I go on incessantly about what a revelation Elisabeth Hendrickson’s “Introduction to Acceptance Test Driven Development” class was for me. I wanted to write about areas where I’ve seen opportunities to benefit from implement it. But first I’d like to give some background of what I learned from this course.

In a nutshell ATDD (Acceptance Test Driven Development) involves bringing every team member that will touch a user story together at the beginning of a sprint to discuss the story to outline acceptance criteria and attain a shared understanding of the stakeholder’s vision.

There is a lot more to ATDD to discuss however for the sake of brevity I’d like to focus on the aspect that excited me the most, story workshops.

In a story workshop every team member who will touch the user story is gathered to discuss details of the story. One person facilitates the discussion, and after the story is described, testers and programmers ask questions and share concerns with the stakeholder. The end goal is to have shared understanding through examples of the stakeholder’s expectations. Programmers might ask if an implementation strategy is acceptable, testers almost certainly will discover areas of risk in the story’s description.

For the purposes of this class Elisabeth ran us through a few mock story workshops during which Dan Snell volunteered to play the part of the stakeholder. This was a brilliant way to teach by doing. We uncovered many interesting aspects of the story workshop that were best illustrated by allowing the group to collaborate on this mock story.

Some of the things we uncovered may seem rudimentary and obvious. When defining acceptance criteria it’s important not to take these important details for granted. Other things were less predictable. As testers in the room began to come up with test cases Elisabeth wrote them down on her flip chart. Some test cases were too deep to merit being included in basic acceptance. But mostly the test cases were simple. It may seem like a small thing to stand up and say “If the user inputs a date which occurs in the past, and it still posts a listing, this story fails acceptance.” until this seemingly obvious assumption is immediately shot down by the stakeholder in the room. She might say “I never thought to write that case into the story, but now that you mention it, I want it to post outdated listings.”

Maybe adding this feature is so involved that the engineer in the room pipes up and says “If you want me to code something that will allow an expired listing to be created it will conflict with existing code and require a significant refactor.” Maybe the stakeholder demands this feature. She can most certainly have it, but the effort to create and test it will drive it well out of scope for the story. In this case a new story is born and we move on to wrapping up the story in question.

One of the testers in the front row actually exclaimed in mock-frustration “I don’t care it’s your product!”

This simple story resulted in a lot of discussion. Elisabeth was flipping that flip chart and taping paper to the wall as quickly as we were defining criteria. In the end we felt like we had achieved a shared understanding of what the stakeholder wanted to get from the story. Every boundary we could think of at the time was addressed and accepted or rejected by the stakeholder. This didn’t mean the story was chiseled in stone, but I believe by having the story workshop we significantly reduced the odds that changes would be needed. Or if changes were needed it would not be due to a lack of communication. I would imagine that this understanding would reduce the amount of discussion necessary later when changes are needed.

During sprints I see a need for this kind of shared understanding. I find issues when testing that are not bugs but might be areas that might confuse a user.
I always take these concerns to the stakeholder and sometimes they tell me they are perfectly happy with the story the way it is. But sometimes they decide to accept my suggestion and make a change. When that happens the dev has to double his effort. He now has to remove what he did and replace it with the change. I think this is where a team pays the cost of not having story workshops.

Alternatively a programmer while trying to implement something defined in a wire frame or a user story might discover something unforeseen that requires diverting from the defined criteria. I see this sometimes in story notes (e.g. “This story is ready to be tested, as per my discussion with (the programmer) these changes to the user story were made.”

Of course it’s hard to quantify that cost. Story workshops are definitely expensive. A complex story workshop can take hours to wrap up. Lean/agile methodologies abhor rigorous documentation and heavy process. This can make story workshops a tough sell. How does one explain that we’re not proposing to create a tome of specifications for each story. We’re not trying to revert to a waterfall process. We’re not slowing the process down with this story workshop, ultimately we’re trying to speed it up. Much like test driven development it seems like a lot of overhead at the start of the project but I suspect, like TDD, the end result can be increased throughput and improved quality.

There is a lot more to ATDD than the story workshop I’ve described here and as I learn more about those aspects I’ll share them in this blog. In 10 days or so I’ll be taking what I’ve learned and holding my first mock story workshop with my product and development teams. Hopefully, despite having taken her class way back in October, I do Elisabeth justice. I am eager to hear other people’s experiences with this process and thoughts about this post. Please comment and discuss, as I still only have an academic understanding of ATDD. I am very eager to hear others’ real world experiences.

Posted in Agile, ATDD | 1 Comment

And we’re back… (General update/First speaking engagement: QASIG)

This guy, I aint.
This guy, I aint.

Okay so long time no blog.

I’ve been pretty slammed with having a baby and family coming to visit so I’ve been slow to get back on the horse.

Also once you stop blogging it’s hard to start back up. Excuses aside I have many topics for which I am working on blog posts for so please bear with me.

:-)

A few months back Jon Bach graciously offered me an opportunity to speak at the March meeting of QASIG .

He felt I had something worthwhile to say about my current project at Volunteermatch with regard to defect reporting as being potentially harmful to a project.

I wanted to write up a quick experience report about that in order to share my point of view as a speaker.

The weeks leading up to the talk evaporated like an ounce of spilled alcohol in the Kalahari desert. I could detail the unbelievable series of events that led me to write a simple bullet list that would become the first slide deck I ever presented professionally the night before and morning of the talk, but I’ll leave it at that.

The folks at Quardev were all very accommodating and Jon Bach was extremely helpful to what little preparation I was able to muster amid the chaos. I arrived with a plan to discuss my project at Volunteermatch and the unique scenario in which filing defects can be detrimental to the improvement of a product.

I envisioned that there would be a lot of, possibly heated, discussion and at worst we’d all learn something. Hopefully a room full of folks would not have learned that I have no idea what I’m talking about.

The talk could have gone worse. I hadn’t anticipated lacking a clock and losing complete track of time. I had planned on using my phone to remotely control my laptop for the slides and therefore an excuse to watch the clock on my phone, but there was a system in place when I arrived which foiled that plan for me. Quardev was well equipped and prepared, I should have assumed as much.

I ended with a discussion that, if I had it to do over again, would have been nearer the beginning of my talk. I’d have introduced myself, and Volunteermatch, given a 10 minute description of why I was asked not to seek out defects and then have a discussion with the audience about these kinds of real-world dilemmas in testing. As it turned out, I spoke about Volunteermatch, discussed at, length the specific challenges of being a sole tester in a newly agile methodology while being a remote employee before starting the discussion about the morality of defect tracking before we ended kind of unceremoniously with me asking if we had a text message question from Jon , realizing time had run out long ago, and being asked if we were done, by a polite and engaging audience. The end was so ill-managed by myself that I honestly wondered what that noise was when people applauded. :-)

Shortly after my talk I was approached by the facilitator and told “James would like you to call him.” I had no idea James Bach would be tuning in, and fully expected a heap of much deserved criticism. Much to my amazement he was highly complimentary and spot on with specific and constructive suggestions. After I got off the phone with him I was energized and eager to turn around and go back inside and start over.

I have so far kind of hoped this talk would shuffle on down my google search results but I realize everybody has to start somewhere. I think rather than hope this talk shuffles into the ether, I should post a link to it on this blog and own my performance. I will use this blog to expose my ignorance at every possible juncture in the hopes that I learn as much as possible from my mistakes.

I really enjoyed meeting and discussing testing with the people who came to my talk. They were all very pleasant and engaged and for that, as well as Quardev’s invitation I am exceedingly grateful. I am especially grateful to Lanette Creamer for taking time to come see me and participate in the discussion. I came away excited about my other upcoming speaking engagement at CAST and with a strong desire to return to Quardev and speak on another topic in hopes of showing folks what I’ve learned.

March QASIG Video Link

Posted in QASIG, Speaking Engagements, Testing | 1 Comment

Bold Boast Book Club #1: Agile Testing Part 3

I should likely have posted this on Wednesday but this week has been hectic as I predicted in my previous post.

I panicked a little over the weekend that I was in danger of failing to complete my first ever “Bold Boast Book Club” by the deadline. So I made time to fit in more sessions, mostly by trading sleep for reading time. I didn’t want to ignore comprehension or distractions by plowing through extra long sessions, so I confined my sessions to 1 hour (unless I was so engaged that I lost track of time.) If I was distracted in less than an hour I’d stop, as well.

I managed to finish reading “Agile Testing” on Wednesday morning before I went to work, way ahead of my 15.34 day estimate.

Anyway, in short I really enjoyed Agile Testing. There are some great concepts and ideas within it’s pages. I also was pleased to see how much of the book I already knew. I will be writing some more detailed posts about the book in the days to come.

I realized that I was missing the 2nd most important part of this deadline this morning. Bold Boast Book Club is half reading motivation, and half blogging motivation. Had I failed to blog by today my status (win or lose) then I would have missed half of the challenge.

Perhaps people could comment on what my next “Bold Boast Book Club” challenge should be?

Posted in Uncategorized | 2 Comments

Bold Boast Book Club #1: Agile Testing Part 2.

A brief post to check in.

Little did I know when I made this boast how effective it would be to keeping me on track with my reading. Sadly I also had not predicted that time to blog the experience would be so hard to come by.

At present I am 330 pages in at the start of day 10. I hope to hit 400 today because last week life got in the way of me staying on track. I now have a 4 hour birthing class on Thursday nights that is a complete waste of time but I’ve committed to it, a baby shower in Portland next weekend and sprint 5 is ramping up mightily. Add to that I have my wedding to arrange, my wife’s murder to plan and Gilder to frame for it, I’m swamped!

In short, I have been greatly enjoying this book. I’ve run into a few roadblocks when trying to implement the “whole team approach” which is understandable in my team’s current context but the testing quadrant and the many excellent lessons I am enjoying about test automation are energizing. I can’t wait to get this next sprint tested so I can resume work on my Cucumber automation project and framing my exploratory testing process.

I strongly doubt that I’ll be handing this book off after I’ve finished it as there will be much useful reference to be had within its pages in the years to come.

I said I’d keep it brief and that’s what I’ve done.

I will write again after this crazy week/coming weekend is over and I have reached my goal of finishing this book by the 14th.

Posted in Uncategorized | Leave a comment

Bold Boast Book Club #1: Agile Testing

One of the techniques that resonated with me from “The Secrets of a Buccaneer Scholar” was that of making “Bold Boasts.”

“A bold boast is a trick I use to get myself going on a project. It’s basically a promise to accomplish some feat, such as to write an article or teach a class. I make the boast that I can teach something, and then my mind gets serious about solving the problems that need to be solved.

-James Bach

Along those lines, I decided to use this blog to help me focus my efforts around achieving goals.

I am currently working remotely from Seattle as an “Army of one” tester implementing testing process to a small non-profit in San Francisco. I am super keen on the agile methodology so this opportunity to build a testing infrastructure from the ground up is extremely appealing.

I’m approaching the end of my 90 day contract period and hoping to become a full time employee with this organization this month. I have spent much of the past 70 days becoming acquainted with the product and the team. I’ve tested new stories using ET and SBTM, built up a simple process for handling escalations, and researched test automation.

These last 70 days have given me an opportunity to identify a lot of strengths in the team and uncover some weaknesses in the implementation of agile methods. Being new to this process, product and team, I have been building a backlog of concerns from our early iterations. On my 2nd day on the job my boss was kind enough to allow me to take the day off so that I could attend an all day ATDD seminar being taught by Elizabeth Hendrickson . In fact he was excited about the prospect because he would like me to eventually teach and implement ATDD.

The course was awesome, I’ll blog about it in another entry, but it introduced me to a lot of smart concepts and taught me a lot about what was missing in past failed agile teams with which I’ve worked.

I realized as my backlog of concerns was growing and I continued to glean everything I could from the internet and the amazing community of testers that have been gracious enough to offer their thoughts and help on twitter and Skype, that I needed more data. I needed to learn some new skills to tackle this project and start getting some answers to these questions.

Elizabeth Hendrickson mentioned “Agile Testing” by Lisa Crispin and Janet Gregory, during the ATDD class and since then I had been corresponding with Lisa Crispin over twitter. I have found Lisa to be an awesome person who has been very generous with her thoughts and time. I realized that what I needed was to have Lisa go over all of my backlog of questions and sit next to me while I come up with a plan to mitigate the learning curve. I would never ask Lisa to take time away from her busy life to actually do that, but I realized that her thoughts were available in “Agile Testing”.

I ordered “Agile Testing”. and it arrived 4 days ago. 3 days ago, I tore into it, rabid for the information contained within. I was a bit intimidated by the ~500 pages of what, at first, seemed like quite small text. I have not read a technical book cover to cover since summer of 1998 when I decided that I would change my life and break into high tech by moving to Portland, read a huge book on Windows 98 cover to cover and apply for an entry level tech support position.

I did not want Lisa’s book to end up collecting dust on my bookshelf, so I decided to measure my velocity. I sat down on the couch before work the morning after unwrapping the book and set a timer on my phone for 30 minutes. At the end of the 30 minutes I had read roughly 16 pages. I realized after another 30 minutes that my brain starts to wander and my comprehension wanes. So I had established that I could read for an hour while remaining focused on the material, and in that hour I could digest 32 pages of content. Having done some simple math, I have devised a plan to finish reading this book in 15.34 days.

This is my “Bold Boast”. I am going to regularly blog my progress as I approach my January 14th deadline. At present I am at page 107, right on track for day 3. The first 107 pages of this book have been fantastic. I started attempting to take notes today, with limited success, but the ideas are definitely taking root. As with The Secrets of a Buccaneer Scholar, the main challenge with this book for me has been not getting distracted when my mind wants to run off and try this stuff. I have 2 weeks left on my current 3 week iteration, which will definitely be very busy. I want to devote time to drafting a plan using the precepts learned from this book so that by the next iteration I can get started pitching a plan to experiment with some process adjustments.

Since I am evidently incapable of getting to the point in less than a thousand words, I’ll leave it at that. My “Bold Boast” is that I will finish this book by the 14th of January. I will update this blog regularly over the next couple of weeks with my take on the content and how I hope to apply these lessons to my work.

I will endeavor to be more brief in those posts.

Posted in Uncategorized | 3 Comments

Quality Advocate: My philosophy.

Recently I ran into an issue where I was testing a new unfinished feature. The stories were still in progress, but my goal was to get testing started earlier in the sprint than we had in the past.

My exploration started by following a user flowchart diagram. I quickly noticed that the 2nd step in the flowchart mentioned a check box that did not exist. I felt confident this was not an oversight so I decided to ask the developer about it. He told me they’re still working on that bit and I should see the check box in the next week or so. I informed him that I was starting to explore main paths through this functionality and asked him if he minded answering the occasional question as I progressed. He graciously said “no problem” and I set to testing the features.

While testing I realized that I wanted to do something using this interface and it was impossible. I asked him if he was working on this as well. He informed me that no such story existed.

We had a discussion about whether or not this feature should exist at all. After all, it’s just a few more steps for the client to perform. I felt that in the context of creating a consolidated management console that allows clients to easily manage their accounts, we might want to cover some basic functions. They can add and edit records but they can’t remove them without going to a totally different interface.

My belief was that by making it easier for the client to quickly add a record, we increased the risk that a record will be added in error. If that happened, and the client wanted to remove that record they would have to leave the nifty easy management console and dig through the old interface to remove it.

The dev informed me that we had a usability team to make these decisions. The usability team had been a welcome relief from the old way of having to endure long meetings debating usability features. A debate that can often be hard to resolve due to the subjectivity of user experience.

I thanked the dev for his thoughts, and told him I would ping product about my concern. It was not a catastrophic product failure. I could certainly move on to further testing.

Later that night I tweeted about my interaction with the dev over this issue. For the 2nd time in my brief tweeting career I got a very mixed response. Some testers I respect a great deal asked me why I was taking on the mantle of the product owner. Others applauded my advocacy.

Specifically this tweet from Michael Bolton got my attention:

“@AdamYuret To be blunt: who died such that you’re now the project manager?”

Being a self-taught tester, I often wonder if I know what I’m doing. When people I respect tell me I am doing something wrong, or my approach is flawed, I listen. When I get 4 answers from 4 people I respect who disagree with one another completely, I get confused. I do more research and try to get more points of view.

In October I took an phenomenal all day ATDD course from Elizabeth Hendrickson. There I learned about requirements meetings where everybody who touches the story is in attendance. Dev, Product and Test all in one room hashing out specific requirements with concrete examples. Had I been in a room with those folks, I might have said “What about deleting?” and one of two possible things would have happened. The product owner would have said “that’s ridiculous, no client is ever going to want to delete.” and I would move on, or the product owner would have said “Oh yeah, delete, good idea.” and a story would be born.

I do not aspire to become the product owner. However, I don’t see my role as being limited to pushing buttons and checking what’s been coded works as designed. I see myself as an advocate for the client. If I am testing a feature and something irritates me, I think to myself “Is this annoying because I’m testing it, or would this be annoying for a client who has to use this every day as part of their job?”

If the answer is yes to the former, I move on. If it’s yes to the latter, I start asking questions. Obviously the developer is not the right person to ask about these issues. They don’t make these decisions, but in the context of asking if something missing is on the way, I think asking the dev was totally appropriate.

That said, I believe that diplomacy is important. Having relationships with your team and setting expectations that you’re going to sometimes ask foolish questions that seem like a waste of time. I try to approach this issue of diplomacy from a place of learning. I don’t think something wrong has been done, I just want to know why something else has seemingly been left out.

I post this not because I wish to defend myself but because I wish to open myself up for attack. If you think I’m nuts and should keep my nose out of the product owner’s business, please say so. If you think I am doing the right thing by stepping up to be a vocal advocate for the client, your comments are also welcome.

I know of no better way to learn new things than my exposing my ignorance publicly and observing the debate.

Posted in Uncategorized | 8 Comments

Secrets of a Buccaneer Scholar: Why my weaknesses might actually be strengths.

Yet again, I find myself posting a blog about something current rather than writing my chronological stories about moving to Seattle and my subsequent self-discovery as a tester.

Last night, I finished reading “The Secrets of a Buccaneer Scholar” by James Marcus Bach. I have never been a big reader. I’ve read maybe 20 books in my entire life. The reason I tell you that I haven’t read many books is because I want you to understand that my attention span is not well suited for finishing books. I’m not saying I’ve never started a book, I’ve started  many books, but I’ve only finished around 20.

Reading the early chapters of this book I found myself entertained by the parallels it had with my life. James was not successful in school due in large part to his rebellion against being treated like an inmate in the factory system of public education. I felt the same way in school. Throughout my school career I consistently scored straight F’s. I aced all my tests but earned F’s because I didn’t understand why I should waste my time doing homework. If I could give a lecture to the class or otherwise prove that I’ve learned the material, why must I then go home and scrawl repetitive examples on paper 200 times like some kid who’s being punished with a chalkboard in detention? Furthermore, why did the majority of my grade score my ability to perform menial repetitive tasks on paper? Why did my comprehension of the material only constitute 40% of my grade? If coming to class, learning the material, and then sitting there while the same tedium is repeated over and over again to help the remedial kids learn, resulted in a failing grade, why did I go to class at all?

I will probably write more detail about the specifics of my educational background in subsequent blog posts. I will write about being placed in special ed, with the juvenile delinquents because the only two pigeon holes available were “LD” (learning disorder) or “BD” (behavioral disorder). I’ll write about how I respected Wayne Wagner my high school communications teacher so much that I explicitly told him so despite the fact that he never permitted me to participate and gave me an historically low 18% in his class.

This post is about “The Secrets of a Buccaneer Scholar”. For me, the middle of this book was difficult to read. Not because it was poorly written, it wasn’t, but because it spoke to my natural lack of attention span. It spoke about allowing the mind to wander on tangents. All the times I failed to finish reading books had not been a reflection of my laziness or stupidity. It was because my mind wanted to go do something else, and whatever that book had taught me, was not powerful enough to merit returning to it. I read how James, while procrastinating on his writing, went for a walk through the tide flats discovering that clams spew water into the air. Which set him on a path of learning that resulted in personal growth as well as progress having been made on the book.

Reading this reminded me of one of my favorite TV shows as a kid. It was called “The Day the Universe Changed” and was hosted by James Burke. In the shows, James Burke would recount historic events while connecting scientific discoveries to the social impacts those discoveries would ultimately lead to and how that social impact led to other scientific discoveries.

James Burke would masterfully connect the Nuclear bomb to the battle of Hastings, to the invention of the loom and onward to the invention of the radio and wind up at the giant SETI radio telescope in Arecibo Puerto Rico. Ordinarily, I would have ignored my brain’s tangent and pressed on. But in this case I felt like this part of the book was almost giving me permission to put it down and find out where I can find old episodes of James Burke’s shows (Connections, Connections 2, Connections 3 and The Day the Universe Changed) by the end of the day I was watching episode 3 of the original Connections series. I thought to myself “If the whole book is like this, I’ll never finish it!”

Later that night my mind was buzzing and I couldn’t sleep. I thought I’d take another stab at this book. I could not have chosen a worse book to put my mind to sleep with. I am glad I had no clock in my bedroom because I didn’t want to know what time it was hours later when my brain wouldn’t let me go to sleep because it was thinking about how to apply these principles to my current challenges. Maybe I should stop being frustrated that every time I try to learn to program, I fail. Maybe I should focus instead on trying to learn why I fail to program. Maybe studying the cause of my failures can lead to success. Perhaps I need to figure out why I want to learn to program.

The following night I plowed through what was left of the book. I was totally riveted and came away energized and ready to tackle my personal and professional challenges. I had read many of my own personal methods some I’d been doing for years spelled out and fresh approaches to dealing mentally processing them. I had learned new ways to address my frustrations while educating myself.  I had rediscovered some anger at a school system that taught me that I was a failure. I was lazy because I could not force myself to pay attention. I was not as smart as the kids who did their homework.

I now saw another point of view. One that compels me to embrace change, to seek out past failures and analyze them until I either defeat them, or figure out why I never needed to in the first place.

Secrets of a Buccaneer Scholar hit home for me in a way no other books have. It may become the first book I ever read twice.

Posted in Uncategorized | 3 Comments