TrainingConferencesAbout UsContact UsAdvertiseSQE.comRSS Feed

StickyMinds.com: brain food for building better software

Log In
 Clarify Your Search Criteria

Tips on Using Our Search Feature(s)
 
StickyMinds.com Home
ResourcesTopicsCommunityPowerPassBlogs
Home  >  Detail: Makers and Breakers


Viewing Item 1 of 510


A StickyMinds.com Original
Article Picture
Makers and Breakers

By Harry Robinson

Send This Content to a FriendGet a Short Link to This ContentPrint This ContentSee User Comments About This Content

Summary: The industry is full of software makers and software breakers--which are you? Are you a developer or a tester at heart? Not what job do you hold at the moment, but what do you love to do? This week, Harry Robinson offers up a small personality test that might just give you some insight on the question.


Telerik
Breaking the Rules 
In the early 1900s, a mathematician named Gottlob Frege was putting the finishing touches on Volume 2 of his Basic Laws of Arithmetic. He had spent years writing his definitive work on set theory, the part of mathematics that deals with memberships. 
 
Frege had painstakingly compiled impressive results based on the simple notion that any item was either a member of a set or it was not. For instance:
    The number 2 is a member of the set of counting numbers (1, 2, 3, 4 …).  
    The color purple is not a member of the set of colors typically found on a traffic light (red, yellow, green).
On June 16, 1902, while Frege's book was at the printers, he received a short note from a fellow named Bertrand Russell. The note said something like this:
    Suppose there is a village in which every man must be clean shaven. There is a male barber living in the village who shaves those men, and only those men, who do not shave themselves. Who shaves the barber?
Frege stared at the note with mounting horror. If the village barber shaved himself, then he would be shaving someone who shaved himself, which contradicted the rule. If the barber did not shave himself, then there was someone in the village who did not shave himself and was not shaved by the barber, which also violated the rule. In short, Russell's simple note brought Frege's work crashing down around him. 
 
Frege eventually wrote a preface to his work which, very roughly translated, goes something like this: "I could wish that this issue had been brought up sooner, but…what the hell…I might as well publish." 
 
Taking Sides 
So, here's the personality test: Who do you feel sympathy for in this story? Do you admire Frege for his industrious nature, or do you admire Russell for his insight and the elegance of his example? 
 
I must admit that I am firmly on the Russell side in this story, and that makes me a breaker. There are an infinite number of cases for which Frege's system worked, but Russell penetrated to the heart of the issue and found the case where the system fell apart. I can appreciate that it might have been nice to tell Frege about this problem a few years earlier, but I can't argue about the elegance with which Russell exposed and exploited the weak point in Frege's system. 
 
This "counterexample" approach is a good way to think about software testing. Testers are too often seen as blindly banging away at keyboards, but keyboard banging only finds the most superficial faults. Good testers have a deep understanding of the system and its limitations, and they look for ways to exploit those limitations. They don't care about the infinite number of inputs that work well. In the finite amount of time before shipping, they want to find those inputs that make the software not work.  
 
The topic of software testing runs very deep, but under it all, there is a thrill of the hunt for the perfect counterexample, the one input that brings everything crashing down. And good testers even have an aesthetic for the qualities of a good counterexample: short, sweet, devastating. 
 
You're Not Alone 
For my part, I started my software career as a developer, making software work. I was therefore surprised to find after a few years that what I really loved to do was to uncover situations where the software did not work.  
 
A developer once told me that no one could feel fulfilled if they merely helped ship the product, but didn't have any code actually in the product. I disagree. When I walk out of the test lab with metaphorical smoke pouring out of machines that my tests have broken, I feel pretty darn fulfilled. I have come to think of software testing as something like fishing, except that you get paid. 
 
What fascinates me is that the world is full of "breakers," who feel the same way as I do (and Russell did), and who like to think of counterexamples that don't fit the rules. 
 
Years ago, in his book Gödel, Escher, Bach: An Eternal Golden Braid, Douglas Hofstadter considered counterexamples for the statement "one plus one always equals two."
    There are certain types of people who, as soon as some undeniable fact is written down, find it amusing to show why that "fact" is false after all. I am such a person… 
     
    Two raindrops running down a windowpane merge; does one plus one make one?  
    A cloud breaks up into two clouds—more evidence of the same?
Even comedian George Carlin sounds a similar note with examples that defy rules in his book Brain Droppings:
    Sometimes we dismiss something by substituting the letters "s-h-m" for the initial consonant sound in the word and then repeating the word itself: "Taxes, shmaxes!" But…how do you dismiss a person named Schmidt?
Nature Abhors a Category 
But maybe it's unfair for us to poke away at the structures the rule makers set up; maybe the odds are really tilted in the rule breakers' favor. Reality is too complex to abide by simple pigeonholing rules, and there can be no clear-cut distinctions.  
 
For instance, this column draws a distinction between software makers and software breakers. Well, my team invests heavily in test automation, so I spend a good part of my day making software that breaks software. Am I a maker or a breaker? 
 
Or even worse, I typically only test software for people who don't test their own software. So, who should test the software I write? Go figure.


About the Author
Harry Robinson is Test Architect for Microsoft's Enterprise Management Division. In addition to his day job, he teaches classes on advanced software test automation and is a driving force behind Microsoft's model-based testing initiative. He has been at Microsoft for five years and has a Bachelors and Masters in Electrical Engineering. You can reach him at harryr@microsoft.com.

Back to Top
 
 

Member Comments
Add Your CommentExpand Comments
 
Comment:    
by Dale Emery 2/26/2004

I'm a member of the set of people who can admire one quality of a person without admiring other qualities of the same person. I admire Frege's industriousness, but not his integrity. I'm also a member of the set of people who are capable of admiring more than one person at a time. I admire Frege for his industriousness, and Russell for his insight and elegant example. Finally, if Russell can introduce self-reference, so can we: break the breakers! I believe this break's Russell's example: The male barber was a boy. (Breaking Goedel may be more of a challenge!)

Author's Response:
2/26/2004    
Hi Dale - Very admirable. I also like your email solution of "the barber is a male chimpanzee". Frankly, I find the image of a chimp or a small boy with a sharp razor unsettling. And both seem like unlikely choices for personal grooming professionals, but neither are they strictly excluded. And the loopholes go on… Would an automated shaving machine count as a barber? If a village man sticks his face into an automated shaver, is he shaving himself or is the machine a barber that is shaving him? What if the barber had a medical condition that prevents growth of facial hair? Could he be an unshaven, clean-shaven man? What about depilatories such as Nair? Does this count as shaving? ... Thanks!

 
 
Comment:    
by Emmie LOu Tucker 2/25/2004

For over twenty years I've always thought of testing as more of a murder mystery- Is there a body? Likely suspects? Clues? And hopefully, eventually "who done it"?

Author's Response:
2/25/2004    
Hi Emmie Lou - I think debugging (rather than testing)is like a murder mystery - sifting through clues, staging re-enactments, and (if a culprit is found) the closing of the case. Testing reminds me of fishing. Studying the situation, choosing a likely approach, getting lucky (or not), but rarely having a clear-cut stopping point (since there are always more fish/bugs out there). Truth is the sum of multiple viewpoints.

 
 
Comment:    
by Gene Fellner 2/25/2004

1. The idea of "breaking" the product. This is yet another unfortunate legacy from the assembly-line methodology of the Industrial Era. You conducted a stress test on every tenth widget and threw away the ones that broke. As long as very few broke, you shipped the rest, including the untested widgets that were destined to break in the field. In stark contrast, our methodology delivers just one widget, it's an abstraction that can't "break," and whatever goes wrong we never throw it away but send it back for reengineering. We should stop using Industrial Era terminology; it retards our end users' recognition of the paradigm shift from...Read On

Author's Response:
2/25/2004    
Hi Gene - I think you and I agree on the points you bring up such as early involvement and not being able to see the faults in one's own software. I expect that the issue of coder/tester relationships will become more important in the next few years. An important aspect of all that work is to ensure that those finding (and preventing) problems get as much credit as those creating the system. Thanks! ... In case anyone is interested, I have written a song on the delicate issue of the coder/tester relationships called "The Coder and the Tester Should Be Friends" - you can find it at http://www.geocities.com/harry_robinson_testing/CoderTester.htm :-)

 
 
Comment:    
by neill mccarthy 2/25/2004

As well as showing the "makers and breakers" interestingly it shows the logical and lateral thinkers and the limitations of only one thinking technique and such a simple model. The lateral thinkers will challenge the rule by stepping outside its constraints, as stated it is a rule not an absolute and rules are made to be broken and many rules have an exception. :). The barber could be unshaven as it is a *must be clean-shaven* not *everyone is clean-shaven* statement. It does not preclude someone else being a barber in the village and shaving the barber, as some one else has pointed out, or the barber leaving the village for a shave...Read On

Author's Response:
2/25/2004    
Hi Neill - Leaving the village is an option I had never thought of, and there are certainly other ways to be beardless without shaving... I don't understand the distinction between "must be clean-shaven" and "is clean-shaven"; does it refer to the possibility that people could choose to ignore the rule? ... As far as lateral thinking and creativity, yes - I'm a big fan of both De Bono and Bach. In fact, James is one of my inspirations for the "quality midwife" outlook. He has a wonderful phrase in his Last Word column "Value without Numbers" that goes "We help value cross the street safely; we carry its groceries to the car." That's a kinder, gentler image of test than is commonly expressed. thanks!

 
 
Comment:    
by Don Mills 2/24/2004

I enjoyed both the column and the responses, but want to put across a different point of view: in what sense is a tester a "breaker" of the software? In stress testing, it's true (and in some other varieties), we set out to "break" the product by seeing how far we can stretch it beyond its specified capabilities. But think of a tester encountering a simple bug, such as getting the answer "9" after punching "3+3=" into a calculator. The "+" button is "wired" to the "x" function: in what way did the tester break the calculator? What response would anyone else get to the same "test case"? Did *they* break the calculator? *Who...Read On

Author's Response:
2/25/2004    
Hi Don - thanks for your thoughts! You're right - a more apt word than "breaker" would have been "puncturer" since we poke holes in the false opinion that the system under scrutiny actually works. My only defense is that it would have been too tough to find something that rhymed with "puncturer" for the title. :-) ... As for testers being regarded as negative people, the best testers that I've known are always primarily concerned with shipping great product; finding bugs is only a means to that end (and rarely the best means). Perhaps a more positive image for us would be "midwives of quality" - we help deliver quality into the world as quickly, safely and expeditiously as possible. thanks

 
 
Comment:    
by Andrew Raybould 2/24/2004

Robert, amusing as your test is, I'm afraid that I can't buy in to it, for a rather important reason.

Perhaps the most important skill for a developer is being able to think in abstract terms about how software could achieve the desired result -- without this skill, you are reduced to proceeding by pure trial-and-error, taking a more-or-less random walk through the solution space.

There are two aspects to this skill -- the creativity to imagine possible solutions, and the analysis to evaluate and choose between them. In the latter case, the sort of insight that Russell displayed can be critically important in avoiding producing a system...Read On

Author's Response:
2/25/2004    
Hi Andrew - You are right that the skills are related, and there is certainly no substitute for having bright, creative people doing both jobs. The root issue may be emotional more than intellectual. I think people who create a system have a hard time seeing it as clearly and unemotionally as someone else can. After all, Frege was a bright guy - why didn't he see the paradox before Russell? Probably because he had years already invested in the work. Russell had nothing invested in Frege's book, so he was able to conjure up a great counterexample. Similarly, I think software developers can get attached to their code and not be as ruthless with it as a disinterested tester would be. I'm fine with people being good at both skills; I just don't know if they can be good at both of them at the same time on the same piece of code. thanks!

 
 
Comment:    
by Raymond Ellis 2/24/2004

Ah the thrill of the chase is what makes the breakers heart grow fonder. I loved the article and the replies - Brava to all! I too like to sink the fangs into a piece of software and shake hard to see the defects fly. It is so satisfying to know that you have helped, invisibly as mentioned priorly, to help put out a better quality product. In your reply to Chris you mentioned changing the testing name to "Those Who Help Get Software Out the Door Faster, Cleaner, Cheaper". There is only one issue with this (yes I am a proud breaker) - This correllary can only have two items true with the other one being false. Try out the combinations -...Read On

Author's Response:
2/24/2004    
Hi Raymond - I agree with you absolutely about the thrill of the chase. I don't agree, however, that faster, cleaner, and cheaper are mutually exclusive. Just because we don't see them hanging out much together nowadays doesn't mean it can't happen. :-) thanks!

 
 
Comment:    
by Chris Donner 2/24/2004

I sent this out to various colleagues on my development team. One of our project managers responded in true PM fashion. She didn't really empathize with either Frege or Russell. She just wanted to get the problem solved (i.e. get every man shaved who needed a shave. So, Harry, you need to include three classes of people in your analogy: those who make, those who break and those who push the rest of us to get it done.

Author's Response:
2/24/2004    
Hi Chris - makers, breakers and shakers? OK.

 
 
Comment:    
by Jennifer Keenan 2/24/2004

I have never seen a village of all men. 8-O Perhaps there is a woman in this village ...

Author's Response:
2/24/2004    
Hi Jennifer - I agree that it sounds like an odd village, but I don't know that a woman's presence would change the problem since the note specified that the barber had to be male. thanks!

 
 
Comment:    
by Bill Blampied 2/24/2004

When people ask me about testing software, I like to give them the following quiz: Q1: What is a socially unacceptable activity? A1: Breaking other peoples' things. Q2: What is great about software testing? A2: You get to break other peoples' things with your manager's approval! On a serious note though, it is critical to the whole process to have people who can break software before it is released. There are some people who seem to have an inherent knack for breaking software. This talent needs to be encouraged among test teams. There is too much riding on good software to follow a "code-and-ship" mentality.

Author's Response:
2/24/2004    
Hi Bill - I agree that the talent for seeing flaws is something we should foster. And yet it's a tricky balance to make sure that people appreciate the value you add. Even Socrates had this problem, saying that there were many people he had helped "who have not been conscious of my assistance, but have made light of me, thinking it was all their own doing." Lack of appreciation for what testers contribute combined with breakers' lack of popularity could be a good recipe for disaster.

 
 
Comment:    
by Pat Barkman 2/24/2004

I'm a tester at heart. And I'll prove it by saying the real answer to the barber question is that anyone *but* the barber can shave him. Because the rule did not state that the Barber shaved *all* villagers who did not shave themselves -- it said that the barber only shaves men who do not shave themselves. He's a subset by himself as both a facial hair cutter and a facial hair grower. But the description does not rule out more than one facial hair cutter in the village.

Author's Response:
2/24/2004    
Hi Pat - oops, I think you're right. You got me. Nice catch! And as I look at the story again, I think other issues still exist with it. For example, what if the barber were a young boy? Is "not needing a shave" the same as "clean shaven"? thanks,

 
 
Comment:    
by Corey Snow 2/24/2004

Interesting. The premise here is that 'breakers' and 'makers' are more or less 'born' as such. As a 'breaker', I have generally found this to hold true. The great 'breakers' are predisposed to question every 'truth', viewing the world through a lens of chronic cynicism. While 'makers' are quite certain all is well unless proven otherwise, 'breakers' presume something must be wrong until they see it up close for themselves. As Chris mentioned, the 'breakers' of the world are never going to be popular. As a matter of human nature, no one really wants to hear bad news. Right or wrong, the cynic is always going to be the outcast. I often wonder...Read On

Author's Response:
2/24/2004    
Hi Corey - I would characterize it as skepticism rather than cynicism, but I agree with the rest of what you say about a tendency to question everything. ... On delivering bad news with a smile. Would Frege have felt better if Russell's note had said "PS: except for that one fatal flaw everything else looked really good"? I think Frege's reaction was on target: Russell found a valid problem; it would have been nice to hear about it sooner. thanks!

 
 
Comment:    
by Tek Wallah 2/23/2004

That's amusing, but all good developers like the feeling they get when they have created something that is so rugged that it can't be broken -- and that requires first working as hard as posible to break it -- and failing. Or is that another example of finding a paradox in the definition?

Author's Response:
2/24/2004    
Hi Tek - You are right that a good maker should spend part of the time trying to think like a breaker, but it's psychologically tough to wear both hats at the same time. Even Russell got 'broken' trying to patch the paradox he uncovered. After the Frege incident, Russell and Alfred North Whitehead formulated a restricted set theory that they figured would avoid the paradox. They thought their approach was unbreakable, but it fell apart in the face of Gödel's work. You've probably seen this phenomenon yourself in testing. How many times have you filed a bug against a feature only to have the dev say in astonishment "How did you even THINK to try this input?!" Good intentions can't always compete with a fresh perspective. Thanks!

 
 
Comment:    
by Robert Rose-Coutre 2/23/2004

Bertrand Russell is a great example of a breaker. He spent much of his life writing counterculture-ish social ideas. So in social theory as well as in analytical philosophy, he was a tester. Frege, on the other hand, was a classic programmer, one of the last in a breed of philosophers trying to develop "comprehensive systems." Russell was also an excellent critic. To extend your humanities metaphor, I often think of testing as similar to formal criticism. As you say, testers often write as much code as they test, and programmers test their code, so categorizing is perilous. Roles alternate, as in Oscar Wilde's essay, "The Critic as Artist,"...Read On

Author's Response:
2/23/2004    
Hi Robert - "Fregean Russellite" sounds like an mineral deposit to me, but I get your point. Your philosophy professor's comment worries me in a tester context. What would this professor have thought of Russell's contribution if he had sent his note to Frege long before the book reached the printers? Would we even have heard of Russell's contribution at all? And yet we tell testers that they should stop bugs early and even prevent bugs from happening. Not a happy choice for testers. If they find bugs late, they are "people who are keeping revenue from coming in" (see Chris's comment below) and if they find bugs early, they are invisible...

 
 
Comment:    
by Chris DeNardis 2/23/2004

I agree with Harry – I get a good feeling finding a bug – as I always say, I have had a job satisfying day when I find a bug. However with makers – they are credited for creating and creating revenue for the company. But as breakers, as could be considered as people who are keeping the revenue from coming in, which is what I deal with day in and day out.

Author's Response:
2/23/2004    
Hi Chris - You touch on a very true, very sore point. It is hard for a breaker to get recognized as doing anything constructive. Socrates was a great 'breaker' and all he got for his trouble was a hemlock espresso. ... Perhaps as testers we should consider renaming our profession to underscore the value we add: "Those Who Help Get Software Out the Door Faster, Cleaner, Cheaper".

 
 
Comment:    
by David Ramger 2/23/2004

Interesting analogy! However, Kurt Gödel may have been the biggest "breaker" of them all with his incompleteness theorem. See this reference for more on his connection to Frege and Russell: http://en.wikipedia.org/wiki/Russell%27s_paradox

Author's Response:
2/23/2004    
Hi David - You are right that Gödel was a supreme breaker! And note that Gödel's work initially got the same reception that a good software tester's work sometimes does: "Part of the cause of [Gödel's]narrower fame must lie in the fact that Einstein's theories were acclaimed as triumphs, while the initial judgment on Gödel's theorems was that they constituted a first-rate calamity for logic and mathematics." http://www.earlham.edu/~peters/writing/godel.htm

 
 
Comment:    
by Hitesh Dave 2/23/2004

good one

Author's Response:
2/25/2004    
thanks! :-)

 
Back to Top



 
Ads By Google
What's This?
 
 



Home   |   Resources   |   Topics   |   Community   |   PowerPass



© 2010 StickyMinds.com. All rights reserved.
StickyMinds.com is a division of Software Quality Engineering.
Privacy Policy    Terms & Conditions    Link to StickyMinds.com    Feedback


ThoughtWorks

Rally Software




Agile Development Practices 

STARWEST