28 September 2009

Software Development Discovery Skills

What are your discovery skills?

One of the most appealing aspects of agile software development is discovery. Discovery is the act of learning as you go.

Discovery entails asking questions, trial & error, and collaboration with teammates.

Jeffrey Dyer, professor at BYU's Marriott School, surveyed 3,000 creative executives and conducted 500 individual interviews over 6 years to see what makes innovators tick (see How Do Innovators Think? for an HBR interview with Jeffrey Dyer).

What do Apple's Steve Jobs and Amazon's Jeff Bezos have in common? Curious about the defining characteristics of visionary entrepreneurs, Jeffrey Dyer identified 5 discovery skills:
  • Associating - Associating is a cognitive skill that enables people to make associations and parallels between seemingly unrelated concepts or problems.
  • Questioning - Questioning is the ability to confidently ask questions that defy the status quo and open up mental vistas to possibilities.
  • Observing - Observing is the ability to recognize people's behavior. 
  • Experimenting - Experimenting is the ability, and confidence, to be experimental (i.e, try new experiences and confront unknowns). 
  • Connecting - Connecting is the ability to connect with inquisitive and informative people from whom one can learn.
Jeffrey Dyer's discovery skills reminds me of Sho Shin or Beginner's Mind.

Sho is the Beginner. It denotes a starting point.
Shin is Heart or Mind as in put your heart into it!

Sho Shin is cultivating an attitude of openness and eagerness. A beginner listens. A beginner is full of enthusiastic questions and purposeful energy. A beginner wants to know. In Zen Mind, Beginner's Mind, Shunryu Suzuki says,
In the beginner's mind there are many possibilities, in the expert's there are few.
Beware the expert
I said that an expert was a fella who was afraid to learn anything new because then he wouldn’t be an expert any more.
~ Harry S. Truman
Beware the authority
To punish me for my contempt of authority, fate has made me an authority myself.
Albert Einstein

Sho Shin is the seed of discovery.

Our challenge as software developers using discovery is to integrate Sho Shin into our daily lives. A step towards Sho Shin is to consider Jeffrey Dyer's discovery skills
  1. Search for metaphors that help you better understand concepts and behavior.
    Try associating.
  2. Challenge the status quo. Welcome and consider dissenting opinions. Be wary of convenient and comforting patterns.
    Try questioning.
  3. Sensitize yourself to the details of your culture. Be a sponge for behavioral nuance.
    Try observing.
  4. Find the joy in trial and error. Avoid the natural tendency to summarize and simplify.
    Try experimenting.
  5. Cultivate connections with others. Seek inquisitive minds.
    Try connecting.

24 September 2009

Surfing The Transition Waves

I read the tail of a Twitter thread about the struggle of transitioning to agile at the organizational level.

The principals in the Twitter thread were Bob Marshall and Marcin Niebudek.

Transitioning command-and-control to agile seems to be a hand-wringing conversation. It's more than a team thing. It can impact an entire organization. I have little to add except to make some observations about change and to consider the insights of historic thinkers.

Transitioning to agile conversations are peppered with phrases like
  • Personal comfort zone
  • Organization momentum
  • Change in thinking
  • Paradigm shift
  • Replace the naysayers
  • No silver bullets
  • No easy answers
  • No easy path
I get impatient with my incapacity to change. With others, I get very impatient. I'm reminded of Lou Reed's deliciously cynical lyrics in Dirty Blvd
Your poor huddled masses, lets club em to death
And get it over with and just dump em on the boulevard
Many great thinkers have considered and written about change
Everything flows and nothing abides; everything gives way and nothing stays fixed... Cool things become warm, the warm grows cool; the moist dries, the parched becomes moist... It is in changing that things find repose. ~Heraclitus
The inventor of the incandescent light bulb recognized that change requires a catalyst
Restlessness and discontent are the first necessities of progress. ~Thomas Edison
An American novelist lamented that not all change is progress
All change is not growth; as all movement is not forward. ~Ellen Glasgow
An American romantic poet observed that those in power often resist
He who is firmly seated in authority soon learns to think security, and not progress. ~James Russell Lowell
In the take-no-prisoners civilized cultures we find ourselves in, we need to stay ahead of waves of change. Or get buried. Waves are fun, but can be treacherous.

I was a surfer as a teen. In surfing, you spot a swell forming. You paddle your surfboard to position yourself. Then wait. Then with the swell roiling and rising behind you, you fan the water beneath you with quick strokes. You feel yourself gaining momentum. The wave lifts your board then spews you forth. Down its face you slide. It is a ballet of recklessness and control. The swell appears. You position. The wave evolves. You adjust. The wave matures. You adjust again. It's exhilarating.
In times of profound change, the learners inherit the earth, while the learned find themselves beautifully equipped to deal with a world that no longer exists. ~Eric Hoffer
Learners will stay ahead of the wave. Be prepared. Be patient.


22 September 2009

Agile's Chicken Kiev Duality

When I learned David Hussman was coaching in Kiev, I asked him
Which comes first, the chicken or the Kiev?
Non-dogmatic folks live comfortably with paradox.
We know that light is a wave, and also that light is a particle. The discoveries made in the infinitely small world of particle physics indicate randomness and chance, and I do not find it any more difficult to live with the paradox of a universe of randomness and chance and a universe of pattern and purpose than I do with light as a wave and light as a particle. Living with contradiction is nothing new to the human being.
~ Madeleine L'Engle
Living with duality is no revelation. We have two eyes, two hands, two feet, etc. We are curiously cognizant of our inner and outer worlds; like the experience of being in an artificially lit train car at dusk
In a railroad car at nightfall, when the natural light outside has diminished until it is even with the artificial light inside, the passenger facing forward sees in his window two images at once: the dim landscape rushing toward him out of a pit of darkness, and the interior of the car, reflected with its more or less motionless occupants. At this hour most passengers unconsciously give allegiance to one of these two polarities of vision; and the individual momentarily aware of both may be struck by the profound, almost tragic duality between outer and inner worlds, between the rush of experience and the immobility of awareness.
~ Robert GrudinTime and the Art of Living
There are apparent dualities in the agile manifesto that are seemingly contradictory.
Deliver working software frequently
Continuous attention to technical excellence
Is it a contradiction to deliver frequently, but attend to excellence? Can one be frequent without eschewing excellence?

Deliver working software frequently
Promote sustainable development

Is it a contradiction to deliver frequently, while working at a sustainable pace? Can one be frequent without burning out?

Taking any particular dictum to extremes, the answer is no. But you're non-dogmatic, right? You're pragmatic.

The lesson is to avoid fixating on any particular dictum and to seek sensible balance. David Hussman might refer to this as finding your agile groove.

Is it possible, in the strictest sense, to be frequent without sacrificing quality? Probably not. Yet we try because we're human.

We thrive on reaching for the practically unattainable, because...we can. That is the absurd pursuit of living. When Woody Allen acknowledges
I am at two with nature. ~Woody Allen
he's celebrating contradictory dualities with a sense of humor....uh, which reminds me of a line from the end of Annie Hall
Alvy Singer: [narrating]  I thought of that old joke, y'know, the, this... this guy goes to a psychiatrist and says, "Doc, uh, my brother's crazy; he thinks he's a chicken." And, uh, the doctor says, "Well, why don't you turn him in?" The guy says, "I would, but I need the eggs."


21 September 2009

Tomato Logic - Pomodoro Primer

French poet, and co-founder of surrealism, Andre Breton observed that
The man that cannot visualize a horse galloping on a tomato is an idiot
In Writing Software, a Buddy System, an article recently published in the New York Times, the author explains pair programming, touts the virtues of the buddy system, and mentions the Pomodoro Technique for much needed breaks.

Pair programming is a sometimes painful, frequently satisfying, and an unusually productive way to grow software. But it's intense. Pairing is more enjoyable with consistent breaks for sanity checks, checking email, and applying hand sanitizer.

That's where the Pomodoro comes in. Pomodoro is Italian for tomato. Regular breaks are the juicy love apple of the Pomodoro Technique
The aim of the Pomodoro Technique is to use time as a valuable ally in accomplishing what we want to do in the way we want to do it, and to enable us to continually improve the way we work or study. ~ Pomodoro Technique
Productivity improvements Love Apple Style with Pomodoro requires 3 ingredients:

1. A Kitchen Timer

A kitchen timer in the shape of of tomato is in the true spirit, but you can use any mechanical timer, or you can use a software timer. For Google phone owners, there's even a Android Tomato Timer for the Pomodoro Technique.

Set your timer to 25 minutes.
2. A Sheet of Paper

You need a blank sheet of paper. Lined paper is better.

You can even download the pdf to print the official Pomodoro To Do Today paper.

3. A Pencil

You need a pencil. An pencil with an eraser is a plus.

Write a to-do list on your sheet of paper that you hope to accomplish.

Pomodoro Recipe
  1. Choose a task from your list to be accomplished
  2. Set the Pomodoro to 25 minutes (the Pomodoro is your timer)
  3. Work on the task until the Pomodoro rings, then put a check on your sheet of paper
  4. Take a short break (5 minutes is okay)
  5. Every 4 Pomodoros take a longer break
For details and tips, consult the Pomdoro cheatsheet.
    Pair Programming and Pomodoro

    Pomodoro works well with Pair Programming.

    The Pomodoro recipe is the same in pairing with one additional twist. If your pair partner continues working after the Pomodoro rings, you must declare in your most indignant Tony Soprano voice
    Hey, respect the tomato