Monday, June 6, 2011

Community Service


I've stumbled across a familiar problem. I've started to write about several subjects. I've been writing with pure joy, from the heart, but when it comes to the the actual professional stuff, the boring stuff, the joy stopped. And so did the writing. According to Belbin Team Inventory assessment, I have very strong tendency towards Resource Investigator and Plant, with a hint of other roles, but no Completer/Finisher. Not even a single bit. Ok, Wikipedia puts Completers/Finishers to be quite anal characters, but it see them as people who get things done, which is an admirable quality. And I lack that, dammit!

And there I go again with the jibberjabber! To dodge this issue, instead of sticking with the original plan, starting with the basics of testing, I'll just write about this happening I participated and how it grew thoughts in my mind...

So. I live on an island. In a part of Helsinki called Lauttasaari, to be exact. We “larulaiset” (Lauttasaari people) are friendly and helpful folk, known to take care of our environment. Even the children are grown into this, which is marvellous. So every year this happening is organized, where us good people of Lauttasaari spread across our beautiful island and clean it from trash. The happening is actually the biggest self-supporting one in Finland, and we’re mighty proud of it.

As I roamed through Lauttasaari and picked up the trash I found, I started to reflect my doings to software testing, and found it relevant. Trash just happens, as do software bugs. And for numerous reasons. We might have control over a lot of things, we might have all these tools to prevent bad things from happening, but still the uncontrollable is always present, producing the unwanted. And there we are, finding it, picking it up and making it to go away.

               Be proactive!              
When it comes to finding trash/bugs, knowing where they usually are is a big plus. At first I just wondered randomly in this nearby forest, finding cigarette butts, candy paper, condom wrappings (go someone!), etc. Just small stuff, nothing that would fill up my trash bag. I was also following other people’s trail so there was very little to be found in the first place. Change of plan was needed. I started to think where would the trash be. If I was a trash, where would I hide? Well people produce trash so it makes sense that where is people, there is trash. Of course now people were cleaning up the place, so it wouldn’t help to go to places where people are now. But to go to places where people usually are, or where are they passing by? Roads and sidewalks! And parks! Things started to improve. I found newspapers, cardboard boxes, even a piece of skateboard. But still there was room for improvement as my bag didn’t quite fill up. Time for developed thinking; Are there places that would gather trash? Trash bins would be cheating and wouldn’t support the cause so I tried bushes and hedgerows. You would be amazed how much they hold trash in them! I found all kinds of food wrappings, phone books, even bags filled with trash. At this point I started to wonder why is it so; Why people throw trash into bushes? And why people don’t go into bushes to clean them, even those who are paid to clean them? As a software tester I would apply root cause analysis, seek out who are doing this, why are they doing this and make sure that they wouldn’t do it again. But as a mere trash picker, I just filled my bag a continued. Shame.

Then it hit me! Our sead-side location! The shore! In terms of software testing, when I was picking up the trash from forest, from the side of roads/sidewalks, bushes and hedgerows, I was just system testing. I was inspecting an environment that's not under the influence of other environments. But the shore is like a big integration, bringing up all kinds of trash to our environment. And boy was it dirty! It was low-tide (see: state-based testing) so all the nooks and crannies were filled with all kinds of trash; styrofoam, rubber tubes, even car parts! The jackpot! I was with my better half Malin and we basically cleaned the whole southern part of Lauttasaari shore by ourselves. I came to think why were we alone there? There were hundreds of people cleaning the island, but no one thought to go to the shore? Unlikely, so I developed another theory... Cleaning up the shore was by far the dirties task even though it produced the best results. We crawled in the mud and picked up all kind of... well... shit that turned our stomach. And that's not for everyone. An analoque can be made to software testing; To find the worst of bugs may require you to get your hands dirty. Digging code, databases, networks, going deep into the technical stuff... It might take days to find that one good bug, but it might be worth it.

I often use this kind of reasoning when I'm doing exploratory testing. James Bach put it the best:
"To the extent that the next test we do is influenced by the result of the last test we did, we are doing exploratory testing."
Ok, more about the people picking up trash/finding bugs. A lot of people just don't find them. That's completely natural and can be fixed through experience and training. "Mistakes are a part of being human", someone said. But as I said, some won't get their hands dirty. There are those who'll hunt the most important ones, which are often the most visible ones to get on that professional's throne. Some hunt only the familiar ones to prevent them from falling from that same sweet spot. These people intentionally leave a lot of problems for others to clean and I've experienced them to be one of the most dangerous people in software industry: Elitists. Often at the time of finding a problem, there's no knowledge of how serious the problem is or how ofter would it show itself. A small typo which directs monetary transactions to competitor's account... A small amount of poisonous substance near groundwater source... Of course experience and close collaboration with business/end users helps to interpret the situation, but it's usually wise not to overlook any findings, bugs or trash. Developers are often taught to not to produce "over quality", but like testers they are not entitled to make that decision. That's buyer's job. 

Quality is the buyer's opinion! I'll write more about this in my upcoming post The Quality. Stay tuned!

Nethack, a masterpiece of volunteerism!
Ok, everything we did while cleaning Lauttasaari was more or less ad hoc. More systematic approach could have been applied; Strict cleaning grids, smart dividation of resources and tasks, management, bureaucracy... But does more systematic approach help in this kind of concept? Would we find more trash? Most likely not. We good people of Lauttasaari volunteered to clean our beautiful island. Together we roamed in the forests, crawled in the bushes, waded in the muddy shores to find trash, to make our home cleaner. And we had fun doing it. And the reward was more than enough; A bowl of fish soup and an ice cream. Volunteerism once again showed it's power as it has so many times before (see the giants like WWF). In software development many companies, especially in the video game industry, release their software to open or closed beta tests that produce tons of findings development never stumbled on, by people who volunteered to help. There are free courses and get-togethers where people join and break some poor software, all without material compensation. Often at work too people find bugs that no test case covers (about 80% of the findings I've made are found outside of test cases...) And why? Because they want to. They volunteerily try to make findings, driven by their natural curiosity and moral that prevents bad things from happening.

The final words I Googled...
"Those who can, do. Those who can do more, volunteer."
Yours truly,

Sami "Treehugger" Söderblom

PS: Next time no more jibberjabber. I promise. :)

No comments:

Post a Comment