On the term “Community” (or: Software Testing Fundamentals)

Yesterday I wrote this on twitter:

I've been asked to write some foundational software testing pieces lately, and I'm becoming convinced that if you don't read @DrCemKaner and @jamesmarcusbach you are likely to repeat the same mistakes and re-invent their work using different words. Wish it were more accessible.

The chain that followed generated a fair bit of conversation. Some of the replies generated replies; it can be difficult to follow the entire thread as twitter seems to only pick children. Eventually Danny Faught, James Bach and I got into a bit of a jam session. Part of that jam session was discussing different software communities.

This term, community, meant enough to me that I did a long reply with twitlonger. I’ve decided to reproduce it here.

On Community

If you read Little House on the Prairie, you see the community as the people who lived in the area. Most were leaving inhospitable situations somewhere else for a better life. Immigrants, people with different religions or lifestyles. And, when it snowed or you needed to dig a well, all you had was your community. The community was the people around you, and they were different, and you needed to learn to get along.

Thanks to the internet, if you have a strange belief or affliction, you can probably find five like-minded people and make a facebook group. This has some advantages. My brother has tinnitus and has gotten a fair bit of support he could not have in the 1990s. Yet I fear we are losing something. In some groups, it is possible to create an echo chamber. Just self-select for people that agree with you.

At the worst, this can become mild bullying behavior. A leader can say “My community believes X”, and instead of a disagreement, you are suddenly out of the group — or else change your position. As C.S. Lewis wrote in his essay “The Inner Ring”:

“… at that moment, when the cup was so near your lips, you cannot bear to be thrust back again into the cold outer world. It would be so terrible to see the other man’s face—that genial, confidential, delightfully sophisticated face—turn suddenly cold and contemptuous, to know that you had been tried for the Inner Ring and rejected.”

When I hear “MY community”, my brain things “division.” As an agreeable person, i’m not a big fan. I do think it is worth exploring our differences, and that there are some reasonable limits. For example, an astrologer won’t get very far at an astronomy convention.

When someone rejects testing vs. checking, I don’t think that is a fair comparison to them practicing not-science. I suspect it is much more like they want to use the mercator projection of the world, and we advocate for a variety of projections, each of which minimize distortions in different ways. The CDT ideas may be more precise, but they require more distinctions and are more complex. For many people, the mercator projection is close enough enough of the time and “works for me.”

If you want to use different language, I suspect you’ll still wrestle with the same thing, this idea that computers are good at following defined algorithms, and a great deal of testing is creating, changing, and evaluating those algorithms, along with other things computers are not good at. So you need to figure out how to balance what a computer does and what a human does. You might give that a different name, or think about it in a different way, but if you are thinking, you’ll rediscover the distinction for yourself.

Personally, I want to move the conversation forward. One way to do that is to push the basics down so people start the conversation further ahead. That is, these are the things we mostly think are not worth questioning anymore in pursuit of new questions. I do think the people who self-identify as CDT have done a little of that, for example, testing vs checking came out of RST and I think we eventually embraced it.

In sum: I’m not wild about out-grouping behavior. I do want us to wrestle with ideas. And If I could, I’d add a little Richard Feynman to the list of foundational things. 🙂

Conclusions

About a decade ago I started work on a contributed book called “The Best Writing in Software Testing.” The idea was to create a collection of essays that provided this point of view I had learned by spending the decade before reading, going to conferences, and hanging out with people. That would build a sort of foundation to a way of thinking about risk and quality.

Then in 2011 my job at Socialtext disappeared in a layoff. Suddenly I was an independent consultant, a sole breadwinner with a mortgage and family who needed to focus more on immediate revenue. There was also a fair bit of schedule problems with contributors who wanted to revise their older work and make it better, which was a fair thing to do. I shelved the project and made Excelon Development work.

A lot happened in ten years.

Crossing the Chasm

Image Credit: Ben Farahmand

Unit testing went from Early Adoptor to Late Majority. Microservices filling in the content with CSS/JavaScript/HTML for the front end became the way to deliver web applications. Native Mobile applications became an entire industry. Frameworks rose and fell. The conversation changed from test-ers to test-ing. Continuous Integration became the new minimum, the new table stakes, to be a serious at software, along with multiple deploy points and builds for web applications.

And that’s just all stuff I made up and typed in the past five minutes. I am sure I am missing things.

Along the way I got ten more years of experience.

Writing up that tweetstorm, I realize I’ve never written up my thoughts on testing as science, on how we know what we know, that includes if we should be able to release the software and why

It may be time for me to take a swing at writing something on foundations of how I think about testing. I expect, like most of these projects are, the first attempt will look like a mess, like a doodle written on the back of a napkin. Some of my friends in software know that I have been drawing these doodles for years, and have gotten pretty good at it.

I don’t know how I would find the time, or where I would publish, or how to take the blob that I will inevitably crank out and refine it into what it has potential to be. And, of course, it is possible large groups within software don’t like it, which is fine.

I have a project. I believe I have the perspective to make something broadly applicable and current. I’m going to try to be part of the solution.

Let me know if you’d like to be involved.

 

Leave a Reply

Your email address will not be published. Required fields are marked *