Posted on 7 Comments

Why should we do code katas?

I participated in a coding dojo recently in which some of the comments I heard caused me to think about the purpose of practicing code katas. It seems that many programmers, including some pretty advanced ones, don’t quite get the point.

We were reading about some code katas online so that we could choose one to do for the dojo. We came across a description of the Bowling Kata written by Robert C. “Uncle Bob” Martin. A couple of the guys quickly dismissed it when they saw Uncle Bob’s name. “He’s too prescriptive,” said one. “I don’t want to be told how to approach the problem,” said another. They looked for a write-up of the Bowling Kata that didn’t try to guide us in how to approach the problem.

They found one and we used it. All evening we kept running into silly little issues and speed bumps, such that we really didn’t get a lot of value from the whole exercise. We went down tool-related side paths, broke our development environment a couple of times, forgot what we were trying to accomplish, and started over multiple times. It never felt as if there was any goal or even a general direction. Despite the fact the group included some very fine professional programmers, I have to say it was not the best coding dojo I’ve ever been in.

Obviously, due to the sort of democratic and participatory event a coding dojo is, I have to accept a share of the blame for that. I actively chose not to make suggestions to bring the activity onto some sort of intentional course, because I wanted to see where it might go. In the end it went nowhere, but the experience led me to sit down and reconsider the reasons we do these things, and how we can get value from doing them.

The key point is that there are reasons for Uncle Bob’s approach to katas. Rather than getting to the point directly, I’m going to begin with a couple of rambling digressions, as per my usual style. Continue reading Why should we do code katas?

Posted on 13 Comments

The commoditization of “agile”

Sales consultant Phil Styrlund had an insight about the way markets have evolved in the Internet age that I think is relevant to information systems consulting in general and to "agile" and "lean" services in particular: Everything is a commodity. Anyone can obtain any goods or services they want by ordering them online.

It used to be that companies offering a product or service could distinguish themselves from others offering similar products or services by highlighting the special features of their product or by bringing unique capabilities to the table. Today, customers just don’t want to hear that. They have access to all the information available about your product or service. They already know. There’s nothing you could say about your product or about yourself that would make you any different, in the eyes of customers, from all the others in the market who are trying to sell the same things. You are a commodity.

Continue reading The commoditization of “agile”

Posted on 1 Comment

The fall and rise of shadow IT

Years ago, as far back as the mid-1980s if memory serves, IT managers were worried about a phenomenon they called “shadow IT.” The term refers to cases when business managers implement their own departmental IT solutions in response to poor support from their internal IT departments. The phenomenon raised alarms in the minds of IT management. They were losing “control.” Others were treading on “their” territory. Lions and tigers and bears! Oh, my!

I was reminded of this when I saw an announcement of an upcoming webcast entitled, “What’s a CIO to do About the Rise of Shadow IT?” This suggests that many IT managers still don’t get it. So-called “shadow” IT is not a “problem.” It is not an intrusion on anyone’s sacred territory. It is an indicator that something about the status quo is causing people’s needs to go unmet.

The question should not be, “How dare they try to take over our territory?” The question should be, “What are people trying to tell us about their needs?”

Continue reading The fall and rise of shadow IT

Posted on 2 Comments

BBUF: Big Budget Up Front

The packaging of ideas represented by “agile” includes elements pertaining to organizational culture and elements pertaining to processes and practices. Although many of us would like to see organizations adopt useful elements in both areas holistically, in my experience it is not the case that the two are welded together. Instead, cultural aspects and mechanical aspects affect work flow and outcomes differently and independently.

In most organizations that have adopted “agile” methods, people have embraced a subset of the mechanical elements of “agile” development, but they have no understanding of the cultural aspects and, in many cases, no interest. Yet, I think it’s fair to say they are “using” or “doing” agile development. It’s definitely possible to employ some of the mechanical aspects of “agile” development in the context of an otherwise-traditional organizational structure and culture. It’s happening all over the world right now. Because of this reality, I often use the word “agile” to refer only to the mechanical aspects. I sometimes run afoul of agile practitioners because of this.

When I suggest that the use of “agile” methods does not automatically mean we are doing adaptive development, some agile practitioners protest. Continue reading BBUF: Big Budget Up Front

Posted on 1 Comment

Choosing between traditional and adaptive development

The Iron Triangle of scope, schedule, and budget is fundamental to managing software delivery initiatives. Two general approaches are available for managing this aspect of delivery. With the traditional approach, we try to identify all needs, risks, and costs in advance and create a detailed, comprehensive plan before beginning development. With the adaptive approach, we begin with a vision for the product and incrementally evolve the solution based on feedback from stakeholders. Either way, we must deal with scope, schedule, and budget. However, the mechanisms we use are very different with each approach, and the metrics we can use to steer the initiative are different as well.

There are two key factors to consider when choosing an adaptive or traditional approach to Iron Triangle management: Urgency and uncertainty. Generally speaking, when either urgency or uncertainty is high, an adaptive approach is called for. When both urgency and uncertainty are low, a traditional approach is called for. It’s only fair to say that the choice is not always obvious.

Continue reading Choosing between traditional and adaptive development

Posted on

Geek moments

Today I came across a coupon from Dole inviting me to enter a contest, the Big Apple Giveaway. I wondered what the prizes were. Probably iPads, iPods, or other Apple products, I guessed.

Suddenly I realized the contest wasn’t a Big <pause/> Apple Giveaway. It was a Big Apple <pause/> Getaway. Not giveaway, but getaway, as in travel. And not Apple, the company, but "The Big Apple," New York City.

I suppose I could have taken the hint, as the I in "Big" took the shape of a silhouette of the Statue of Liberty. Not an Apple logo, as far as I know. Not yet, anyway. But it just didn’t register at first.

I felt an oddly disorienting sense of being out of phase with reality for a moment. It reminded me of an incident several years ago, when a colleague came to work and told us that she had called a plumber the previous evening, and could not think of any way to describe her problem other than to say, "My kitchen sink is down."

The plumber didn’t quite know what to make of it. "What do you mean, down? Did it fall through the counter-top?"

"No, it just, like, you know, doesn’t, like, work."

I wonder of you’ve had any "geek moments" like those; moments when your computer-oriented mentality scrapes rudely against the hard sides of normality’s box? Or is it just me?

Posted on 1 Comment

Thor’s hammer had a name, so why can’t mine?

Mjölnir.

Thor’s hammer was called Mjölnir. Cool name for a problem-solving device.

Liza Wood commented on a recent post of mine in which I lamented the overuse of the word, "agile," and the ill effects of that overuse. She wrote, in part:

I completely understand why you have become disenchanted with word "Agile", but I am sticking with it for now. For the majority it’s still at least a starting point to have a pragmatic conversation about product development (not just software).

I wonder about that. Is the word really a starting point for pragmatic conversation? Different people have had different experiences with that. My experience has been that people already have some pretty firm ideas about the implications of the word, "agile." A recurring pattern is that a change agent goes into an organization and happily proclaims, "Oh, boy! We’re going Agile!" To his/her surprise, the people in the organization do not react to the proposition joyfully. The word "agile" connotes Happy Things to the change agent. What does it connote to other people? Why are they not happy to hear it?

Ron Jeffries’ classic article, We Tried Baseball and It Didn’t Work, suggests an answer.

Continue reading Thor’s hammer had a name, so why can’t mine?

Posted on

Value streams and value networks

Lean thinking is based on a model of delivery in which raw materials are progressively developed into a finished product that is consumed by a customer. This linear path is called a value stream. Many in the software community have criticized this model as too simplistic at best, and harmful at worst, as it risks ignoring key stakeholders by focusing on "the" customer.

In real life, a software product has many stakeholders. There may be multiple customers who have different needs and different usage patterns for the software. There may be people involved who are affected by the functionality or quality of the software product who are not, strictly speaking, customers. The process of building and delivering a software product is far more complicated than a simple, linear "stream" of activities. For those reasons and more, some people prefer the term value network to the term value stream. Continue reading Value streams and value networks

Posted on 1 Comment

The Vulcan choice

We tend to make decisions based on emotion, intuition, gut feel, and wishful thinking. At the same time, we assume these are the wrong tools for decision-making. In our culture, there is a belief that all decisions and all conclusions must be based purely on logic, reason, science, or statistical evidence. It seems that people feel there is something wrong with conclusions or decisions that are arrived at by any means other than cold, calculating logic. (Never mind, for the moment, people’s demonstrated ability to apply logic.) There is an apparent desire to rid ourselves of emotion, morality, and even personal preference when making choices, even though this seems to be contrary to our nature.

This assumption is so deeply ingrained in our culture that we have formally defined decision-making on any other basis as an error. We call it Base Rate Neglect (regarded as a cognitive bias) or Base Rate Fallacy (regarded as a logical fallacy). But which is the true fallacy: The use of non-logical decision-making methods, or the belief that such methods are to be eschewed categorically?
Continue reading The Vulcan choice