Posted on

Small is still beautiful

There was an interesting email discussion today at a client where I am engaged in a process improvement initiative. The current-state process resembles a hybrid linear plus time-box model, according to the taxonomy of process models I suggested in an earlier post. They do the iterations only for the programming work, and the rest of it is linear. Their goals for improvement are to improve throughout, reduce lead time, increase predictability, and reduce defects.

A portion of the discussion dealt with the size and scope of work items. It occurred to me some of that material might be of general interest, as it reinforces the idea that small is beautiful. Here is a sanitized excerpt from the discussion. Hopefully it will provide at least one real-world example of the value of keeping things small.
Continue reading Small is still beautiful

Posted on 3 Comments

The problem with success (and failure)

This morning I noticed a copy of the good old Cone of Uncertainty on the wall of a cubicle at a client’s office. It reminded me of Laurent Bossavit’s ebook-in-progress, The Leprechauns of Software Engineering, in which he challenges several of the myths or assumptions that have become traditional lore in the software industry, including that one.

Laurent writes,

What is odd, to any experienced software engineer, is that the Cone diagram is symmetrical, meaning that it is equally possible for an early estimate to be an over-estimate or an underestimate. This does not really square with widespread experience of software projects, which are much more often late than they are early.

Er…wait a second. Isn’t that very assertion an example of “anecdotal evidence?” Is it another Leprechaun? Who says projects are more often late than early?

Silly Dave! Everyone knows who said that. It was the Standish Group, in their famous Chaos Report of 1994. Slightly more than 70% of IT projects fail. That’s why every office building in the industrialized world is on fire, and white-collar refugees are streaming from the cities, leaving their belongings behind except for whatever personal electronic devices they can carry.

Only…they aren’t.
Continue reading The problem with success (and failure)

Posted on

Small is beautiful

There’s an old saying that the more things change, the more they stay the same. The saying certainly applies to the field of software development. Things change all the time, and the things that change tend to change for the same reasons: Changing business priorities, changing costs, changing understanding of needs, changing actual needs, changing competitive pressures, changing technologies, changing availability of resources. Change occurs at all levels from the enterprise strategic plan all the way down to individual technical tasks. The details of all these changes may be very different, but there is one basic idea that can help us handle change effectively, wherever and whenever it occurs: Keep things small.
Continue reading Small is beautiful

Posted on 2 Comments

Death is optional

In The Collapse of Complex Societies (ISBN 978-0521386739), Joseph Tainter observes that societies adapt to meet the challenges of growth by increasing their complexity. Over time, societies receive diminishing marginal returns on their investment in complexity. When they reach the stage that the demands of the complex organizational structure exceed the capacity of the resources available to support it, they collapse. It seems as if established, complex societies cannot respond to this challenge by simplifying their own structure. Instead, they collapse into smaller, simpler societal groups that may then begin the process of growth and increasing complexity all over again. The author examines the collapse of notable, successful, complex societies such as the Mayan and Roman empires and the Anasazi civilization centered on Chaco Canyon.

I can’t help noticing the resemblance between the pattern of growth and collapse in historical states and empires and the pattern of growth and collapse in corporations. It seems as if corporations, like states and empires, undergo a process of increasing complexity as they learn to deal with competitive challenges and as they increase their market share, their size, and the scope and range of their business activities. Historian Arnold Toynbee famously described the pattern of ascendance and decline of civilizations in terms of internal moral decay. The anonymous author of a Wikipedia article on Societal Decay put it quite nicely when he or she wrote, "societies that develop great expertise in problem solving become incapable of solving new problems by overdeveloping their structures for solving old ones."

Continue reading Death is optional

Posted on 1 Comment

Utilization thinking vs. throughput thinking

In helping organizations achieve their goals for process improvement, I have found the single most prevalent conceptual barrier to be the notion of throughput as opposed to resource utilization. Many, and possibly most organizations hinder their own process improvement efforts when they try to maximize individual resource utilization rather than trying to maximize throughput. Once they are able to move beyond utilization thinking, many other challenges fall away naturally.
Continue reading Utilization thinking vs. throughput thinking

Posted on

Get out of your own way!

This is a re-issue of a post from my old blog dating from December 17, 2006. It is a review of a session I attended at XP Days Germany 2006. I think it is still relevant today.


One of the most interesting sessions I attended at XP Days Germany was Developer Awareness, given by Shamsuddin Butt. Butt has a dual background in software development and psychology, which gives him a unique perspective on issues of organizational culture change, team dynamics, individual performance, and coaching.

In this session, Butt applied concepts from Timothy Gallwey’s book The Inner Game of Tennis to the question of individual and team performance in software development. In the book, Gallwey describes the “inner game” within a player between his/her Self 1, who is judgmental and controlling, and Self 2, who can realize the individual’s potential for high performance if only Self 1 would get out of his/her way. The basic idea is to feel what you’re doing and just let yourself do it, rather than trying to monitor, control, and criticize yourself from an internally-imposed third-party viewpoint.
Continue reading Get out of your own way!

Posted on 1 Comment

Choices, consequences, intentions

I have this concept that no one seems to like. Whenever I start to describe the concept, people interrupt me before I’ve finished in order to tell me how stupid I sound. I usually begin with a non-controversial opening statement like, “Funny that people insist on choosing pain (or failure, or high costs, or long lead times, etc.).” That’s when the interruptions begin.

Now I’m typing, not talking, so friends can’t protect me from my own words before it’s too late. Nevertheless, I choose to proceed.

The concept is this: We make choices because we think the choices will fulfill our intentions. In one of those cruel twists that the Universe seems to enjoy so much, it turns out that choices and intentions are not connected with one another. Instead, choices are connected with consequences. Each choice has its own natural consequences. The consequences apply regardless of our intentions and regardless of whether we properly understood the consequences of our choices at the moment we made them.
Continue reading Choices, consequences, intentions

Posted on 2 Comments

Can a new dog learn old tricks?

[This was originally published on my old blog on 18 September, 2007. A friend recovered the post from Time Machine. There were some good comments on the original posting, but those were not saved by Time Machine. Unfortunately, the attitude I observed 5, 15, and 25 years ago hasn’t changed much. Enjoy.]

A few months ago, I used the phrase “the collective experience of the industry” in an online discussion about good practices in software development. I got slammed. We have no “collective experience,” I was told, we just have “a bunch of individual experiences.”

At the time, I thought it was incorrect to say that we have no collective experience. Software developers encounter many of the same situations and solve many of the same problems over and over again, in different domains and in different technical contexts. At the time, it seemed to me that the common aspects of these experiences could form the basis of a corpus of shared professional knowledge.
Continue reading Can a new dog learn old tricks?

Posted on 16 Comments

“Agile” considered harmful

At the time the term “agile software development” was coined, it filled a need. Different people had come up with different responses to the endemic problems in IT. Most of these innovations were ad hoc, localized, and not widely shared. A few had been published in book form and were better known than others. But there was no single flag around which people interested in improving the state of the art of software development could rally.

After the Snowbird meeting, we had such a flag. “Agile” was loosely enough defined, and yet clearly enough focused, to serve as a basis for people to innovate in the areas of process, practices, and human factors to achieve better results than were seen with traditional methods, as indicated by the many industry studies and surveys carried out in the 1990s and early 2000s. The loose definition of “agile” was, in the early years of the movement, its main strength. The very looseness of the definition enabled innovation. But every strength is also a weakness, when it is taken beyond the point of diminishing returns.

Now, more than ten years later, the word “agile” has suffered from the inherent downside of its loose definition. The word has been co-opted by every pundit, author, consultant, trainer, and coach in the IT field. For them, “agile” means “whatever we sell.” For people in IT organizations, the perception is that they had better embrace “agile” or they will be marginalized and their careers will stall. For them, “agile” means whatever it has to mean to qualify them to sit with the cool kids in the school lunchroom. They are more concerned with achieving a high score on the latest “agile” assessment than they are with software quality, consistent delivery, and sustainable performance. Form trumps substance.
Continue reading “Agile” considered harmful