Saturday, July 25, 2009

How to Be Happy, Though in a Non-supportive Environment

Jerry: Here's another email consulting dialogue that Larry found helpful.

Larry: My name is Larry. I am a software test manager at an insurance company east of Chicago.  I have faced challenges when trying to do what I consider good testing.  These challenges include standards that mandate scripted test cases, fellow managers who don't want to discuss work, and security policies that don't allow us to quickly get tools that will aid in our testing.

A while back I discovered Cem Kaner's web page and it opened me up to a whole new world of software testing.  I learned of people like you, James Bach, Michael Bolton, and several other great thinkers.  I wonder how many people spend a career in software development/testing/ management without ever learning of these great people.


Jerry: Quite a few. To have a great career in any profession, you have to reach out and find sources such as these. You need to participate in a conference once in a while (the AYE Conference in November would be my number one choice in your situation). After that, our Problem Solving Leadership workshop would be an ideal goal to aspire to. You should certainly join your local interest groups, and participate.

Larry: This has led me to a question that I hope you can help me with.  How smart does someone have to be, to be happier when they read your books?

Jerry: Sometimes, just reading is sufficient, but most of the time, the reader has to begin doing something they weren't doing before. Like the suggestions above. Or like tackling one of the problems you cited--the standards, your fellow managers, or security policies. Or some smaller problem that nags at you.

But only ONE at a time, to learn what works for you and your organization. And what doesn't work.

(If nothing works, you want to be looking for a better place to work.)

Larry: It's almost like you know me. I think I have an NT temperament (QSM Volume 3 helped here) and based on some of the other research I've done it is definitely true that when I have a lot of tasks and become stressed I almost lock up. I rationalize that it is because I can't devote enough time to do a good job on any one thing, but I know I need to just suck it up and handle on item really well. That may go a long way to improving my happiness.

Jerry: From the little I know, I think if it were me, I'd try to find (at least) one of my fellow managers who is willing to spend some time with me discussing things that we could accomplish to improve matters for our company.

But any little thing you could move forward would be educational--even if it "fails" you can extract some learning from the attempt.

Larry: I have read five of your books so far:

* Are Your Lights On?
* Quality Software Management: Volume 1
* Quality Software Management: Volume 3
* Exploring Requirements
* Weinberg on Writing

To be honest I probably can't say "read" in the same sense that you might. I read some areas in depth and browsed others. I'm making second passes through several.


Jerry: That's exactly the way I read.

Larry: My worry is that I feel less happy after having read your books.  They have shown me how much I have to learn, and I believe that I'm not in the right environment to continue this learning.

Jerry: At least you haven't run out of things to learn. Now THAT would be really depressing.

As for the environment for learning, no environment can stop you from learning, if you really care. But, yes, you may eventually decide to keep an eye out for an opportunity in a different environment.

Larry: Each step I take towards more critical thinking, a strong thirst for knowledge, a greater understanding of how much I really don't know is a step I'm taking away from my peers at work.

Jerry: As for your peers, by taking a step ahead of them, you may well be modeling a new way for them to be happier. It's called being a "leader."

Larry: This has led to a lot of work related stress and unhappiness, and I'm more unhappy than I have been in a long time.

Jerry: In volume 4 of Quality Software Management, you'll learn about the Satir Change Model, and why significant change is usually preceded by a period of chaos, which might feel unhappy until you realize that it's a natural step on the way to happy change.

Larry: That's interesting. My personal experience says that I do tend to have phases of unhappiness, but I come out of it much stronger. It is just hard to know where I am in my journey at a specific point in time. Am I climbing up or falling down?

Now, I'm not writing to blame your great books for my unhappiness. I just have a feeling that other people have had similar journeys, and I was wondering if you've encountered a similar phenomenon. Do you have any more insights for a young unhappy software tester?


Jerry: I suspect my newest book, Perfect Software might be a good read for your manager and your fellow managers

Larry: I actually forgot about that book on my list. It is sitting on my desk pointing anyone who walks in. I'm hoping someone will pick it up and be interested, but that hasn't happened yet.

Jerry: You need to be more patient, and more aggressive, at the same time. Not easy!

Tuesday, July 07, 2009

Peter Principle Simulated

Some Italian professors have tried to simulate the famous Peter Principle:

"All new members in a hierarchical organization climb the hierarchy until they reach their level of maximum incompetence."

http://www.technologyreview.com/blog/arxiv/23800/

The Peter effect arises from the practice of promoting the best performer at Level N to a position at level N+1.

The Italians also simulated two other promotion policies:

1. Alternately promote first the most competent and then the least competent individuals.

2. Promote individuals at random.

According to their simulations, each of these methods improves the efficiency of an organization over the Peter method.

My thought: They could try promoting on the basis of who is most suited for the next level job. Duh!

Or maybe they could try not mixing the concept of "promotion" with that of "reward."

Or maybe even getting rid of the hierarchical notion altogether.

The Paul Principle

As a relevant post-script for my audience, they might want to look into the "Paul Principle," proposed by Paul Armer, who, like me, started out in computing as a desk calculator operator (or "computer" as we were known back then).

"People become progressively less competent for jobs they once were well equipped to handle."

Paul proposed his law in 1970, the year after Peters proposed his. Paul claimed his principle was more relevant in high-tech fields, when the complexity of jobs grows faster than the people doing them. The Paul Principle has been virtually forgotten, but I think it is still worth some careful thinking by IT managers and consultants.

The Other Paul Principle

It seems there's another "Paul Principle," after St. Paul's treatise in Corinthians:

"Continue to provide people with what they need to succeed."

I suspect this management principle would also prove more effective at growing an organization than the Peter Principle.

Perhaps those old Pauls knew something that's still worth studying today.

Friday, July 03, 2009

Why Choose One Conference Over Another?

In these days when money is short, lots of people cannot afford to participate all the conferences they might have attended last year. Money may be the first criterion for choosing conferences, but it's not the only one. I'm going to three conferences this year, each chosen by different characteristics. For me, money doesn't enter into it, so my reasons might be helpful for those who can afford to be in at least one conference, but are trying to choose. my first step in choosing a conference is to eliminate the majority of conferences by applying the following guides.

What Makes Conferences Less Attractive


I generally eliminate conferences that


- overschedule event with no time or place for spontaneous meetings


- overcrowd, usually to maximize profits, with just too many people, which encourages people to hang out only with their old pals


- lack adaptability so opportunities pass by without notice or care


- offer too much lecturing, not enough interaction, and insufficient experiential work--or none at all


- invite presenters of widely varied and untested skill and preparation


- do not name their presenters in advance, or give biographical information


- provide insufficient time and space for socializing, meeting new people


- allow little or no interaction with the presenters (In some conferences, presenters eat in a special area, intentionally separated from the participants. In others, presenters speak and run.


- schedule sales pitches instead of teaching presentations


- schedule canned pitches instead of original material


- offer too many plenary sessions, when participants have no choice of what to attend



Few conferences meet all my criteria, but I look for those conferences that do, like the three (below) that I am attending this year. I have long-ago reached a stage in my life where I cannot tolerate several days sitting in an uncomfortable chair listening to someone read bullet points from PowerPoint slides.

CAST

[http://www.associationforsoftwaretesting.org/drupal/CAST2009]

I participated in the Conference of the Association for Software Testing (CAST) last year, and I'm returning this year because the subject of the conference is precisely focused on my current interest: promoting and improving the practice of software testing.

The sessions I attended were all of high quality and interest to me. Also, it's a reasonably small conference with numerous opportunities to participate in spontaneous hall sessions.



BizConf

[http://bizconf.heroku.com/]

BizConf is a new conference this year, and I'm participating primarily because of the other participants, who, like me, are small entrepreneurs running technology businesses. It's a small conference, limited to 75 participants, and scheduled once again to encourage spontaneous hall and meal sessions. All of the presenters I know are of the highest quality.

AYE (Amplifying Your Effectiveness)

[http://www.ayeconference.com]


You might say I participate in AYE every year because I'm a host--one of the people who created the conference. But I wouldn't have been a host in the first place if I had been satisfied with most of the conferences available. When we designed the conference, we had several issues in mind in addition to the ones listed above. We wanted the conference to be reasonably priced, easy to reach, and easy to learn more about than could be found on a simple website. We created a wiki that registrants could write on and anybody could read. We retained a small staff of intelligent, personable people (Lois and Suzy) to give information and solve problems over the phone. I hope we've made it easy to get to AYE, and I hope to see you there or at one of the other two conferences I'll be attending.

Sunday, June 14, 2009

Was There Process Before Agile?

Reader June Kim recently wrote:

On p.328 of Volume 4 of your Quality Software Management series, the first line goes:

"Here's another example, mixing incremental development and hacking:"

In this Chapter 18, the process models you mention and describe are Waterfall, Cascade, Iterative Enhancement, and Prototyping (with Hacking and Rapid Prototyping as its variants). There isn't incremental development.

"incremental development" as you wrote on that page, doesn't appear before that line in the chapter.

Is Agile An Example of Incremental Development?

QUESTION: Which process model are you referring to when you wrote "incremental development"?
Is it one among the four process models that you mentioned earlier in the chapter, or Is it something different?

ANSWER: First, you have to remember that when QSM was written, there was no "Agile" development craze. We were doing various development process, some of which were given capital letters, some which were not, and some which were "owned" by certain advocates. I was trying to be descriptive then, not favor anybody's pet process.

There were some "owned" processes (using the hated word, "methodology," and charging tens of thousands of dollars for shelves full of notebooks which nobody read). I suppose some of them are still around, but most of the organizations I work with are now smarter than to fall for that fallacy. For the most part, every organization custom-tailored its own process (or, in most cases, processes, plural).

Of course, that's still true today. I don't find many organizations using some "pure" version of agile.

Where Do You Place Agile?

QUESTION: I am interested where you would put Agile process. I think Agile(XP and Scrum, for example) is closest to Rapid Prototyping as you described.

ANSWER: Historically, the people who first named "Agile" processes were borrowing the best of all these methods. You could also say that any agile process is a cascade (or iterative enhancement if you're actually putting each iteration's output into use). Agile is much more than these processes, making explicit many team practices to support the iterative nature of the development.

What Happens When the Customer Won't Participate?

QUESTION: If so, it has the same danger when the customer isn't willing to be the integral part of the process.

ANSWER: That's always the case, no matter what the method, if the customer is reluctant to participate. (Until the end, when they whine, "But that's not what we wanted.")

QUESTION: What could you do in this case? Drop Agile process?

ANSWER: It's not an Agile process if the customer (or surrogate) isn't participating. In fact, I would drop any customer who doesn't participate. That's the rule I use in all my consulting, too. I don't believe you can help people who aren't willing to help themselves.

QUESTION: Or, make the customer be the part of the process? Then how? This is still a hard question to me, even with 10 years of experience in agile.

ANSWER: It's definitely one of the hardest questions with Agile or any method. Hard for most technical leaders because they lack the training and skills to work with reluctant customers.

So, I train them in these skills (a major goal of the AYE Conference and the PSL workshop), but primarily everything starts by simply pausing the work unless and until the customer has been identified and persuaded to participate.

Friday, June 05, 2009

Session Based Test Management Advice

One of the challenges of a blog on consulting is the difficulty of showing what actual consulting looks like. From time to time, though, I receive a consulting request by email which can be answered with a brief email. Brent Plumley recently sent me a request and had given me permission to blog it and my reply, so others may share, and comment.

Brent's Situation

I am currently researching methods to improve our (Session Based Test Management) SBTM debrief/review process in an attempt to make the process more efficient and scalable. Our current process has the Test Manager reviewing 100% of the testing sessions. As the testing team grows, the test manager no longer has the capacity to review all the sessions and as a result a significant backlog session list has accumulated.


- I have several areas that I was hoping you would be able to provide some insight

(1) Testing Session Debrief Trade off


- When a test session is reviewed we consider the following and attempt to achieve a 10/10 score on each.

     (a) Quality of testing performed

          - Did all the risk areas get covered

          - Were the correct test techniques implemented

          - Are there anything missing(different combinations, order of events etc...)


     (b) Quality of Testing Notes

          - Do the notes clearly outline the testing

          - Is the testing reproducible using the notes

          - Does the test properly convey the thoughts and observations

          - etc...



- As a result, the time required to perform the debriefs is quite long.



QUESTION: When performing a session debriefs should we consider a trade off between 'time', 'Quality of Testing Performed' and 'Quality of Testing Notes'. (ie. spent less time, ensure 10/10 on 'quality of testing performed' and 6/10 on 'quality of notes') or, do you think that both (a) and (b) above are important?


(2) Debrief Process


- Even if we can reduce the time spent on session reviews, as the team continues to grow, we will once again be faced with the problem of scalability (more testers = more test sessions = more time needed to review)



- We are currently considering several ways to address the scalability issue


(1) Test Sessions are reviewed by other team members (peer-review process). This will help relieve the strain on the Test Manager of having to review all test session. Also, this will provide opportunity to all test team members to learn from each others unique styles.


ANSWER: This is what I usually suggest to clients in similar situations. The number one job of any manager is to develop the people who work under their mentorship. This is an excellent way to do so.


You can introduce this leadership training opportunity incrementally, with the early leads being supervised by the manager until she finds each person prepared to lead on their own.




(2) Test Manager continues to review the test sessions but depending on the experience level of the tester, only a certain percentage of test sessions will be reviewed (ex: 100% of sessions are reviewed for junior/New testers, and 15% of test sessions for more experienced testers)


ANSWER: Absolutely not. This simply encourages people to game the system by not having their test sessions reviewed. DO NOT DO THIS.


- I have identified several problems with both of the above options. For both options, the test manager may feel out of the loop as much of the testing is not reviewed by them. Ultimately it is the test manager that is responsible for signing off on the testing that is performed. If the session notes are reviewed by peers, or not reviewed at all (only 15% of experienced testers sessions are reviewed), the test manager personally cannot guarantee perfect coverage of testing.


ANSWER: Managers must know how to delegate. If you cannot delegate, you should not be a manager.


Option 2, however, is not a matter of delegating, but of abdicating.


Again, DO NOT DO THIS.



- We are currently leading towards the Peer-Review process. This will ensure that all test sessions are reviewed by someone, which will help guarantee proper test coverage.


ANSWER: I totally agree.


QUESTION: Do you know of any other debrief processes which have been successful for other companies?


ANSWER: Not successful ones.


QUESTION: What method would you suggest for keeping the test manager informed and in the loop? We have thought of bi-weekly team meetings where key points and high level outline of testing performed is presented. Of another option, the test manager will debrief a small sample of the test sessions to get a measure of the quality of testing and debriefing performed by their team.


ANSWER: Forget the sampling. Each person who leads a review should fill out a simple report that everyone, including the test manager, can see. (For more on such reports, see my book, The Handbook of Walkthroughs, Inspections, and Technical Reviews.)


I hope this helps, Brent. It represents half a century of observations on my clients, what works and what doesn't work.



My blog readers, of course, know that no advice works in every situation, though certain mistakes seem to repeat themselves with every new generation. Brent responded by telling me the advice was helpful to him, but let me know how this advice works for you. And ask for answers and clarification.

Sunday, May 17, 2009

Why We Love and Hate Meetings

Did you ever notice how many consultants have back problems? I do, from too much time in miserable seats on airplane, working on my computers at home, or sitting in boring meetings at clients' offices.


Because of my back problems, I can't bend over easily, which means I can't do an effective job of cutting my toenails. So, when I need to trim my toenails, I visit a salon for a pedicure. While having my toes clipped, I read the available magazines, such as Brides, Modern Bride, and Elegant Bride.


Bridal magazines are incredibly popular, with 135 different ones in print last time I checked. Topics include Beach Weddings, Bridal Parties, Destination Weddings, Accessories, Cakes, Ceremonies, Decorations, Dresses, Etiquette, Favors, Flowers, Gifts, Invitations, Planners, Receptions, Traditions, Trends, and many others.


Looking at all these magazines, I asked myself, "Who reads this stuff?" Well, obviously, guys don't usually read it, because nothing in the magazines evokes any emotional response—in guys. For many women, it's a different story.


From writing fiction, I've learned that emotion sells writing. My Plotbusters critique group constantly tells me that my stories don't sufficiently describe or evoke strong emotions. I didn't understand their comments, because the rest of my reader network didn't agree with them. What was the difference?


My Plotbusters colleagues are all multi-published writers, but generally not techies like the rest of my reader network. Evidently, non-techies don't fully appreciate my fiction. They say, "It's not emotional enough." Why? Because mostly the stories do not involve conflict, random violence, death, bad sex, unrequited love, and so forth.


What they do involve is smart people trying to solve problems, step by step. To me, that's not boring at all, but, indeed, extremely emotional. Tremendously exciting—which perhaps defines me as a nerd.


Which brings me back to meetings—why they bore me and cause back problems.

When I walk a client's corridors, I frequently meet people on their way to meetings. Although these same people have told me that meetings are boring, they often seem excited when they're on their way to one. Why?


Over the years, here's what I figured out. Most of my clients' people are techies—nerds like me. They find the meetings boring when they don't seem to be trying to solve problems, step by step.


At the same time, what these meetings are doing is playing out an emotional drama—conflict, blaming, flirting, one-upsmanship, random outbursts, anger, and so forth. For these happy people heading for meetings, it's those the soap-opera aspects of meetings are the most exciting parts of their jobs.


To the techies, the interest in these soap-operas is a distant second to the interest in a well-conducted problem-solving session. On the other hand, all this drama—the stuff we contemptuously call "politics"—seems to be the bread and butter of the non-techies. Indeed, these people are often upset if I show them how to conduct well-run meetings, because I've taken all the joy out of their lives.


Maybe I should bring them Brides Magazine to read in the time they save. Or perhaps Hot Rod Magazine for the guys.



Oh, and BTW, if you like to read stories of smart people trying to solve problems and be happy, take a look at my eStore.

Saturday, April 11, 2009

Reader Feedback: Sample Pages

If you want to have a successful business, you have to pay attention to customer feedback. In the case of eMarketing, that feedback can be fast and focused. Using Google Analytics, I discovered my eStore was attracting 50 or more readers a day, but most these potential customers were not buying books.

Following some astute reader feedback, I've now made sample pages available for each of the novels in my eStore:

Mistress of Molecules

First Stringers: or eyes that do not see

The Freshman Murders

The Hands of God

This way, my readers will not be buying a pig in a poke. We'll see if it works.

Thursday, April 02, 2009

eNovel Store: First Month Report and Lesson

It's been about a month since I opened my eNovel store. After a snappy first two weeks, activity slowed to zero, and I thought nobody would ever buy another novel of mine, let alone put me over the tipping point where the novels would take off like Harry Potter.

I learned that worrying over day-to-day or week-to-week sales is a futile wasted of time. After one dry week, sales picked up again. If they stay at this level, I'll earn a small but welcome addition for my charities each year.

Will I be satisfied? I don't know, but at least I won't worry day-to-day. I've learned my lesson.

It's a worthwhile lesson for consultants in all phases of their business. By its nature, independent consulting is a highly variable business. As I wrote in The Secrets of Consulting, there are, theoretically, three states a consultant's business can be in: A: too much business; B: not enough business; and C:just the right amount of business. But no individual is ever in state C.

So stop worrying and do something about it. Me, I'm asking everyone I know to take a look at my book store.

Wednesday, March 11, 2009

eNovels for Nerds

I've decided it's past time for me to join the electronic age.

Five years ago, I gave myself the assignment of spending five years learning to write the kind of fiction that would further my life's goal:

helping smart people be happy

I have achieved my goal, and have now completed ten novels, one of which has been published as The Aremac Project. All of the novels are written about smart people and their struggles to be happy. They're intended to make the learnings from my other books and my workshops come to life in a new medium. So far, they seem to be working that way.

I've achieved something else besides my original goal: I have learned more than I wanted to know about the fiction publishing business.

Most of all, I've learned how hard and slow it the business is, and how difficult it is to break into. For example, one of my fellow writers just sent me statistics on his responses to queries about his crime thriller: 93% of the editors simply did not bother to reply, even with a short email. My own success rate (at just receiving a reply, even in an enclosed, stamped, self-addressed envelope) has only slightly better.

From the editors' point of view, there are good reasons for this rude-looking behavior: they are simply swamped with manuscripts and queries from would-be authors. And, even when they do reply, and even when they do accept the manuscript for publication (a much lower percentage still), they usually require years to get the novel in print. And, once it's in print, chances are it won't stay in print for more than a year or so.

I've decided I'm too old to put all my chips in that game. I'll still seek print publication by some publishers, while at the same time, I'm publishing some of my novels in eBook format (pdf) sold through my website for the value price of $4.99 apiece. I invite you to visit the site and try one of them. (I always give a money-back guarantee on all my work.)

I would love to have your feedback on the store itself, as well as the form and content of the novels. If this approach is well-received, I'll put some more of my novels up there.

So, visit http://www.geraldmweinberg.com/Site/eBOOKS.html and take a look. As time goes by, I'll report here on the outcome of this experiment.

Friday, February 27, 2009

My Favorite Bug

Michael Hunter asked me to write something for his blog about "my favorite bug." At first I thought it was a silly assignment, but, as usual, once I sat down to write, I learned a few things. I don't know when (or if) it will appear on his blog, so I'm putting it here because I think it's too good not to share. (If you think I lack humility, consider the subject: how stupid I can be.)

My First Commercial Program

My favorite bug is also my first bug. It's my favorite because it started me on the road to learning the most important things about programming and testing.

It was the first commercial program I had ever written--a pipeline network analyzer for municipal water systems. (note 1) Essentially, it solved systems of non-linear algebraic equations, by iteration.

It passed all my prepared tests (test first, back in 1956), so we brought in civil engineers with data from a city near San Francisco (not San Jose, which barely existed back then). We set up and started to run the first set of data. Then we waited while the IBM 650 ground away. Thirty minutes--surpassing my largest test case. One hour--surpassing my wildest imagination. Two hours--making me suspect the program was in a closed loop.

I got up from the table where we'd been checking the input data. I was about to stop the machine and find out where the program had gone wrong, but before I reached the machine, it began to punch cards. (We had no on-line printing in those days.) The cards contained the solution, exactly according to spec.

So, what was the bug?

There was nothing wrong with the computation, but the design of the human interface was bad, bad, bad. I had not estimated the performance characteristics as the number of equations grew. I had not accounted for human patience (or impatience) and tolerance (or intolerance) for uncertainty. The case that "looped" was the smallest of our cases. The largest would have run something like twenty hours.

I fixed the bug by having the program punch out a "progress card" after every complete iteration. The card contained a set of numbers that characterized the convergence so far. From the sequence of cards, we could observe the rate of convergence and decide if we wanted the program to continue. If we wanted to stop, we could set a switch on the console and force the program to punch out the full set of values so far--in the input format, so we could resume later, if we wished. (Having no breakpoint in a program that could run twenty hours was another design bug.)

Learnings

After than experience, I've never failed to consider

a. the relationship between a program and its user

b. the potential performance characteristics of the program

c. the possibility that an error might occur (hardware or software or human) that could cost us thousands of dollars of wasted computer and human time.

d. that I ought to be more humble about my programming skills. Before that, I had never made an error in one of perhaps ten small programs I had written, and I thought I was pretty terrific. This humiliating experience made me appreciative of a good testing process (We didn't have "testers" in those days. We didn't even have "programmers." My title was "Applied Science Representative."

This was the beginning of a long career of learning about programmers, programming, and testing. Many of those learnings are captured in my book, Perfect Software and Other Illusions About Testing (note 2)

Well, it wasn't my last bug, but it was first, and my best.

Notes

(note 1) Weinberg, Gerald M., and Lyle N. Hoag. "Pipeline Network Analysis by Electronic Digital Computer." Journal of the American Water Works Association 49, no. 5 (1957).

(note 2) Perfect Software (And Other Illusions About Testing)
http://www.dorsethouse.com/savings.html#perf

Monday, February 23, 2009

Three Lessons from a Thirty-Year Bug

Reader Michael Bolton writes:

I'm reading General Principles of Systems Design, and enjoying it. I'm confused by something, and I think it's because of an error in the text.

On page 106, there's a matrix that is intended to describe the bathtubs illustrated in Figure 5.1 and diagrammed in figure 5.2. My interpretation is that the last row of the matrix should read

0 0 1 1 0

The text suggests

0 1 1 1 0

I interpret this as meaning that bathtub 1 could supply water directly to K, the sink; but neither Figure 5.1 nor 5.2 suggest that. Am I misunderstanding, or is there an error?

My response

It's an error in the text, previously unreported.

Seems as though it's been sitting there for 30 years and tens of thousands of readers.

Moral Number One:

Several morals, but to me, the most important one is about testability. Figures 5.1 and 5.2 are in the previous chapter, and difficult to look at while you're looking at the matrix. This makes testing quite difficult. I should have repeated one of the figures so it appeared on the same page as the matrix.

Moral Number Two:

In writing, as in software development, there's no such thing as perfection. (For more on this subject, see my book, Perfect Software, and other illusions about testing.) Just because nobody's found a bug for 29 years doesn't mean one won't turn up in year 30. If you start believing in perfection, you may be in for a nasty shock.

Moral Number Three

: It would have been easy to blame my readers for being careless, inattentive, or just plain dumb not to have detected and reported this bug (which actually appears twice). If I did that, however, I would have shielded myself from learning the first moral, which puts the responsibility squarely on me. If you don't take responsibility for your mistakes, learning doesn't happen.

Slow Learning is Better than No Learning

So, that's three lessons in thirty years. I'm a pretty slow learner, but at least three is better than zero. So, I'm going to be proud of myself for learning at all.

Thursday, February 19, 2009

A Life-Changing Experience for You

In one month, Esther, Johanna, and I will be starting our next Problem Solving Leadership (PSL) workshop here in Albuquerque. Thus, the timing was just right for several new blog posts about people's experience in PSL.

First to appear was David Barnholdt's blog entry about what happened for him at the most recent PSL, in Sweden. (Read David's post.)

Then, today, Selena Delesie's post about her reactions two years after her PSL experience here in New Mexico. (Read Selena's post.)

And then David followed up with a post about an extremely successful exercise he designed for his own courses, based on his learnings in PSL. (Read about David's exercise.)

So, why am I suggesting you visit these blogs? Nothing to hide: I'm trying to convince you to come participate in PSL in March. I know times are hard for many of us, but hard times are just the times we most need life-changing experiences like Selena and David and many others have had.

You can find out more about PSL at Esther's website, and contact Esther Derby or me or Johanna Rothman

Also, if you know of any other blogs about PSL experiences, let me know, and I'll add them to this post. I'll do almost anything to encourage people to join us in the March PSL.

Added on 27 February 2009
Henrik Kniberg was in the Sweden PSL class and wrote another blog entry building on David's experiential exercise.

Monday, February 09, 2009

Problem Solving Leadership Workshop

We're giving the next offering of the famous Problem Solving Leadership (PSL) on March 22-27, 2009 Albuquerque, NM led by me, Esther Derby, and Johanna Rothman

The workshop's purpose is to learn and practice a consultant's most valuable asset: the ability to think and act creatively. We have designed this workshop to be practical and applicable to the modern workplace. Your problems and concerns provide a frame of reference for all
the workshop activities.

What you will learn
. to be a leader while being a member of a team
. to focus your thinking while in chaos
. to make change a productive, creative event
. to build truly effective teams
. to design projects people really want to work on
. to observe exactly what is happening
. to use tools of effective communication
. to handle conflict in problem solving groups

The workshop provides five and a half days of intensive focus on developing your unique consulting style and abilities.

If you would like more information about in this unique workshop experience, send email to
jr@jrothman.com and/or take a look at http://www.estherderby.com/workshops/ProblemSolvingLeadership.htm

Saturday, February 07, 2009

Estimating (continued)

Back on April 17, 2006, I posted an entry called "Estimating Projects: A History of Failure." I try to make entries that are not ephemeral, so I'm happy to see that people are still commenting on this one almost three years later. I'm suggesting here that you go back on the blog and read the latest comment, from "Will."

Will has many wise things to say about how to do, and not do, estimating. Will, if you're writing a book on project management, give us the title, publisher, and estimated date we can expect to see it.

Take a look, and if you have comments, add them here.

Monday, January 05, 2009

Testability and Reproducibility

Doug Szabo has asked me two interesting questions, and we thought we would share my answers.

Doug: Can you point me to some guiding literature that explains how to make code testable?


Explanation: I noticed at least one mention in Perfect Software: and Other Illusions about Testing of making code testable. I have seen that language in a couple of other software testing books, including Software Testing Techniques. I have even been told by more than one developer that they needed to "make the code more testable" before they wanted me to start testing. Since the developers who told me this didn't have the faintest clue what testing was about, I really don't know what they intended to do with their code. Apparently, neither did they - I eventually asked, "what do you need to do to make it more testable?", to which they replied that they didn't know. I was and still am confounded by the lack of explanation for what it is that makes code testable. I understand when code is very difficult to test, like when you have a "horrible loop" (Software Testing Techniques), or when multithreaded code is not first tested in single thread contexts, but I don't understand what needs to be done to code to make it testable. Are we talking about instrumenting the code with Debug statements, assert statements, or some symbol that a test tool can detect?
Jerry: I share your dismay at the lack of publications about how to make code testable. There are many, many little techniques (like initialization on entry, not exit; eliminating as many special cases as possible; and general simplification for a reader), but they're not as important as three things:

1. All code should be open code that anyone in the project can read and critique.

2. All code must be reviewed in a technical review (see my The Handbook of Walthroughs, Inspections, and Technical Reviews)--in which at one professional tester is present and fully participating.

3. Same as 2, except for design reviews and requirements reviews).

If you do these thing, the organization will quickly learn how to make code testable.

But, yes, someone should write the book and start with these three things.

Q2: Do you have some strategies for triaging bugs that do not reproduce consistently?

Explanation: I was a developer before my current role of tester. Hey. Don't roll your eyes at me. I was an engineer (a real one, with a professional license and all that hoopla) before I became a developer. So I already knew the value of testing, even if I didn't know what software testing really was. Well, as an engineer it was crucial that tests be designed such that the results would be reproducible, and measurable against a control. When I got into software development, I tried to stick to the engineering principle with respect to testing. Unfortunately, as I worked on larger software projects, particularly those where my code talked to other processes, and also where I had multiple threads running, I found that bugs were starting to occur where steps to reproduce did not consistently reproduce the bug. Oh oh. I knew that meant there was something wrong, I just didn't have something that I could run under a debugger and know where to set a breakpoint. As a developer, it seemed like there were always enough reproducible bugs that I had lots of excuses to avoid trying to solve those that might not reproduce. Now, as a tester, I am empathetic to developers and have a self-imposed guideline to make an entry of any non-reproducible issue, but at the same time I don't assign it to the pool of issues to fix until a set of steps to consistently reproduce is found. What I got out of Perfect Software is that perhaps I should be passing the tough to reproduce issues over to the pool to fix, but then what would you recommend for a triage approach, to convince stakeholders to take those issues as seriously as the ones that do consistently reproduce?


Jerry: Great question, Doug.

First answer. Try changing "not reproducible" to "I am unable to reproduce."

Then parse the second category into sub-categories like:

a. I saw this one, but was never able to make it happen again.

b. I see this when I run with this setup, but sometimes I don't.

c. This is the same anomaly I see under several setups, but not all the time.

d. Under X setup, this happens sometimes and not other times. There may be something different from one X to the other, but I' not seeing it.

In each case, you are unable to pinpoint the fault underlying the failure. There may be several faults producing the same failure, or different failures appearing from the same underlying fault. Since you don't really know the frequency of this failure, the way I use to triage the failure is to apply the question: "What would it cost us every time this failure appears in the field?"

If that number is high, then get a team working on the bug. If it's low, let the bug rest while (perhaps) new data accumulates or the bug disappears mysteriously as other changes are made to the code.

Tuesday, December 23, 2008

How We Used to Do Unit Testing

Reader Charles sends a question I've frequently had when consulting with testing organizations who are weary of having code thrown at them "over the wall."

Charles

From your experience in software, what are some good practices you have found for what is now known as "Unit Test?"

I have mine, I want to see if we have similar experiences.

I also have a motive, I get the opportunity to write our "Unit Test Procedure", so I want to capture "Good Practices" that developers can use.

Ack!--Unit Test Procedure!!! I wish we could have names like, "Menu of Good Unit Test Practices, Choose One or More that Make Sense for your Unit, or Use and Add a New Practice to the Menu of Good Practices (Include Provenance or Example)."

Jerry


Honor Unit Testing


1. Well, that's probably number one, the name and prestige you give to the process. If you belittle it, you will have poor results. If you reward it ... finish the sentence. I don't recall if we even had a name for it in the early days. It was just assumed that any pro would do a damn good job of this activity, not to be embarrassed by unit bugs found in integration test or system test--or god help us, in production.

Build Small and Simple

2. The next most important thing is to design to build in testable pieces. Small as possible, but no smaller. Cleanly structured, with no testing traps like hidden memory that might make the code not really reentrant.

Be Completely Open

3. Next is complete openness, getting as many eyes on it as you could get, but certainly not just one pair.

Test First

4. Today what we did is called Test Before Code, or perhaps Test Before Design. Ideally, we sketched out a set of test cases before putting pencil to coding pad. (We didn't have terminals or PCs in those early days.) These were punched into cards and put in the permanent test case library.

Take Advantage of Individual Skills and Help Each Other

5. After that, I recall things breaking down into tactics favored by each individual. Generally, we unit tested each other's code, and anyone having trouble could and did call on anyone else to help out.

Don't Green Dot

I think if people did these things today, we'd be in a lot less trouble. I know because there are people who do these things today, and they tend to stay out of trouble. On the other hand, people who just throw code at a compile and say "it's unit tested" as soon as they see a green dot, tend to be in trouble all the time.

Comments welcome!

Friday, November 14, 2008

What is an Alcoholic?

A commenter describes his drinking habits and says they don't interfere with work. He wants to know how I define "alcoholic"?

I think he and I agree that the question turns on how your drinking affects your work, short term and long term. Since everybody's physiology is unique, I don't think the definition can depend on how much someone drinks. What would put me in the hospital (I have a severe reaction to alcohol), might just be a thirst-quencher for someone else.

One problem with this approach is that alcohol definitely tends to take the edge off one's judgment. I have dealt with a number of worker/drinkers who believe their work is not affected by their drinking--but the reason I was asked to speak with them is that their work effectiveness has been dropping noticeably, according to their managers.

I see lots of moral judging about alcohol consumption, which in turn leads to a lot of defensiveness on the part of those who enjoy drinking. For me, I don't care if your work is affected by alcohol, M&Ms, or listening to too much opera. If something is affecting your work, then that's an issue for your manager and possibly your co-workers.

If it's affecting your health (long or short term), that's your business, and perhaps the business of your family. Of course, if it's affecting your driving, then it's my business as long as we're sharing a road. I won't accept rides from people who have been drinking--or who might be otherwise impaired.

In short, I'm concerned about your alcohol habits only insofar as they affect me. It's an individual judgment, not a stereotype--but it's definitely a sterotype for lots of people, something alcoholics have to live with in today's society.

Thursday, September 18, 2008

The Sense of Smell

I've been in less than tip-top condition lately, so you haven't seen any posts here for a long time. I just don't have the wherewithal to compose new stuff that's not whiney, so I think I'll start posting some really worthwhile stuff when it comes in from my correspondents (with their permission, of course).

The following is from Jim Batterson, who is currently teaching classes in China. Here's his words:

---------------------------------------------

I thought of a story and a half and I wanted to share it with someone, and you (Jerry) came to mind.

Let's begin with a simple experiment that I remember from a psychology class years ago. I guy thinks he is one of eight test subjects in an experiment. They all sit on a panel and he is number seven. The exercise is simple. They are shown two lines and asked to say which line is longer, A or B. B is clearly longer, but the lines are at different angles and such. One through six all say A is longer and our poor subject goes along with the crowd and agrees with them. Not clear whether he is appeasing or whether he doubts his own judgement or what. This repeats many times. Of course, one through six are shills planted by the experimenter.


Scenario two: same as the first except number two gives the right answer. All the support our guy needs to give the right answer every time.


So there I was in New Jersey sitting around a table for a project meeting. I was only tangentially on the project. I maintained the system that was being partially replaced, and had written an extract program that fed data to the system under development. When I sent them a test file they were supposed to run it through their edits and the rest of the system and I got some feedback at the end, but I really wasn't getting anything meaningful back.


Nevertheless, they went around the room and everyone seemed to be reporting that all systems were go, ready to fly in about a month. They'd been working on it for over a year. I, too, had done everything I was supposed to do and could have reported the same, but the manager detected a bit of hesitation in my voice (not very subtle) and asked me what I thought. She was a pretty sharp woman. I wasn't sure what to say, because I really was hardly involved in the project at all.


I told her that I had been on a lot of projects before, which she already knew. I didn't have any facts or data or even examples to point to, but "this project doesn't smell like a project that is a month away from going live."


I think that her senses, too, were telling her the same thing, but she needed another voice to confirm her suspicions. My sense of smell was all the confirmation she needed to drop the delivery date and push things back three months. She was still off by a month, but the system went live five months later.

Jim

Sunday, April 27, 2008

Jerry Weinberg's New Website

At long last, my new website design is up and running(?). Same url, http://www.geraldmweinberg.com, but some of the links to individual pages may no longer be valid because of the new design. Many thanks to Pati Nagle for design advice.

I welcome feedback on any aspect of the site. New material and links will be added incrementally.

Tuesday, April 15, 2008

The Consultant's Money-Back Guarantee

On LinkIn, recently there was a question about what a client had to do to hire a consultant who wouldn't rip them off, just taking money for no measurable result. In my response to the question, I wrote:

I make this easy for my clients by two principles of my consulting business:

1. At the end of every consulting visit, I ask them to evaluate the worth of my contribution. If it's not worth more than they paid me, we either adjust what I'm doing or we terminate the relationship.

2. If they don't feel what I've done is worth what they've paid, they can have their money back, no questions asked. I make sure they know this up front--though I've never had to give back their money.

If a consultant doesn't give you both these things, don't hire them.

Why Give Their Money Back?

Pradeep Soundararajan wrote, in response:

While anything that any human does is a heuristic, why should a consultant want to give back the money for the client not happy with what the consultant influenced?

For instance, I go in as a Consultant to solve a problem. At the end I help the client understand that there is more investment he ought to do in order to ship the product. The client feels unhappy because he hired me thinking that I would help him ship the product with existing budget.

Maybe what I did is what other good consultants might have done, so should I return his money back because he feels disappointed?


Why? Because it's your job to satisfy the client. That's what they pay you for. If you buy a laptop from Apple or Dell or HP and when you try to use it, it doesn't work, don't you expect to get your money back? If you don't, would you ever buy a computer from Apple or Dell or HP again? So, one reason to offer a money-back guarantee is to develop future business with that client.

Another reason is to keep that client from spreading bad news about you to 16 other potential clients. (That's what people do when they feel they were cheated by a vendor. When they feel they got a good value, they tend to tell only three other people.)

The Steering Wheel and Brakes

For my consulting assignments, this guarantee acts like a combination of steering wheel and brakes. It guarantees that the client and I will pause periodically and see if we're going in the right direction. If we're not, we can use the steering wheel to change course, or in extreme cases, just apply the brakes and end the assignment.

Would you drive a car without a steering wheel and brakes? Then why would you want to take on a consulting assignment without them?

I guess maybe you wouldn't want them if all you wanted was a runaway car, one that somehow kept paying you as it careened away toward a fatal crash. If cash flow is the only reason someone is in the consulting business, I hope they hit that wall as soon as possible. People like that give my profession a bad name, and thereby hurt a great many ethical and effective consultants.

Don't get me wrong. I think money is a fine reason for being a consultant, but not if it's the only reason. I want to get paid for my work, but only if I'm actually helping people. I don't want to be a fraud.

What Is Value?

But perhaps the most important reason to offer this guarantee is to force them, and you, to think about what value means to each of you.

Pradeep goes on to say: I think such traps have to be cleared before a Consultant gets in by asking questions like, "What value means to you?" and "Can you think of things that you'd be disappointed to know at the end of this assignment?" and "Do you have insight about any kind of information that could cause you nightmares?"

Well, yes, of course you want to clear this up before you go in, but that's not always possible. People often don't know in advance what they want. They only know when they see it. Many of my clients ask for one thing when I come in, but through my consulting learn that they really wanted something else that was more valuable.

To take an extreme case, at one client, the man who invited me in to help with strategic planning learned that his alcoholism was tearing his own organization apart, and what he needed to do was fire himself and go into treatment. That wasn't what he asked for at the beginning of the assignment, but by the end, he knew that this result was far, far more valuable. I asked him if he wanted his money back (he was part owner of the company) and he said no. In fact, he wanted to pay me more--but I refused. I did my job (helping his company improve), and I earned my pay. That was enough for me.

What If Every Consultant Did This?

Pradeep then says:

Not every consultant would want to return back the money and that could be a good marketing stint or building credibility or a distinguishing factor but if every consultant does that ( which is not an easy thing ) then it might end up causing confusion of whom to pick.

Pradeep is right. It's not an easy thing. In fact, it's so unlikely that it's not worth worrying about.

But, if a lot of consultants used these principles, maybe there wouldn't be so many derogatory jokes about our profession of consulting.

Intelligence Isn't Enough

Pradeep then concludes:

An intelligent client picks an intelligent consultant and that's a heuristic, too.

Well, yes, that's certainly a heuristic, and a necessary one. But not by any means a sufficient one. Intelligence without ethics is like a biological weapon in the hands of a terrorist. Very powerful, to be sure, but you'd much rather not have it on your premises.