The soul would have no rainbow if the eyes had no tears and other native american proverbs

is an excellent book by Guy A Zona (isbn 0-671-79730-1). As usual I'm going to quote from a few pages:
I seek strength no to be greater than my brother, but to fight my greatest enemy - myself. [Tribe unknown]
The more you give, the more good things come to you. [Crow]
The song is very short because we understand so much. [Navajo]
If you see no reason for giving thanks, the fault lies in yourself. [Minquass]
You are never justified in arguing. [Hopi]
No answer is also an answer. [Hopi]
Every fire is the same size when it starts. [Seneca]
The frog does not drink up the pond in which he lives. [Sioux]
Seek wisdom, not knowledge. Knowledge is of the past, wisdom is of the future. [Lumbee]
Force, no matter how concealed, begets resistance. [Lakota]
Everything has a beginning. [Kiowa]
God teaches the birds to make nests, yet the nests of all birds are not alike. [Duwamish]

Macbook plug design flaw? No

I was on a train recently and I tried to plug my macbook plug into the socket. Nope. The depth of the plug was too great. As it happened I had a 4 way adapter in my backpack so I was able to get power anyway!

Update! Thanks to Phil's suggestion I checked my cable drawer and found the other cable :-) I popped it into my laptop bag and found myself on a GWR train again yesterday. No need for a 4 way adapter this time (which I didn't have anyway - I only carry that when I'm running a CyberDojo).

What Did You Say?

is an excellent book (subtitled The Art of Giving and Receiving Feedback) by Charles and Edith Seashore and Jerry Weinberg (isbn 0-924771-33-X). As usual I'm going to quote from a few pages:
If you're not absolutely sure they want your feedback it's best not to offer it.
When the data and their model don't match, most people discard the data.
We structure our world so we will not receive feedback that threatens our view.
We don't even wait to ignore feedback, but actively take steps to prevent such feedback from ever happening in the first place.
We tend to learn only in new situations. In new contexts.
The more we try to control, the less influence we are likely to have.
Don't concentrate on giving feedback; concentrate on being congruent - responding to the other person, to yourself, and to the here-and-now situation.
The less investment you have in changing the other person, the greater the likelihood that each of you may grow.
Improving a relationship doesn't always mean making it closer.

Viking Ship Museum

I went to the Viking Ship Museum in Oslo a few weeks ago. As I arrived a group arrived on a bus. They were led round the museum by a man who talked about the exhibits and viking life in general. I quietly attached myself to the group and listened to what he had to say. It was really fascinating stuff. For example, at one point he mentioned that Norway has the highest incidence of multiple sclerosis in the world. And that the countries with very high incidence seem to be the countries the Vikings invaded!

Implementing Lean Software Development

is an excellent book by Mary and Tom Poppendieck. As usual I'm going to quote from a few pages:
If you focus on driving utilization up, things will slow down.
We've watched CMM and ISO 9000 as their focus changed from quality improvement to certification.
Toyota believes that consistent excellence in product development starts with "towering technical competence in all engineers". At Toyota "Developing people is fundamental to the managers job."
If you expect teams to meet aggressive deadlines you must limit work to capacity.
The behaviours that ranking systems encourage are competition, hiding information so as to look good, and hiding problems so as not to look bad.
There is at least as much knowledge created by experiments that fail as is created by finding a solution to the problem.
Western companies think of knowledge as something that is written down. Japanese companies think of written knowledge as only the tip of the iceberg; most knowledge is contained in subjective insights, intuitions, hunches, and mental models. This tacit knowledge does not come from studying, it comes from experience.
Probably the biggest mistake we can make is to regard refactoring as a failure to "Do it right the first time".
The mark of an excellent organization is not that they are without problems; it is that they are without systemic problems.
In The Living Company, Arie de Geus points out that the average life expectancy of a multinational corporation is between 40 and 50 years. People live for an average of 75 years, so they can expect to outlast perhaps three quarters of the companies that existed when they were born.
If the learner hasn't learned the teacher hasn't taught.

The hole isn't in my part of the boat

After the XP2010 conference in Trondheim its nice to back home and walking Patrick to school each morning. I collect rubbish on the walk back. A whole carrier bag full after one week away. It's a four minute walk. And I live in the country. People must actually be winding their car windows down just to throw out rubbish! :(

XP 2010 cyber-dojos

I had a great time at XP 2010. I ran one cyber-dojo (on the left) with Jeremy Lightsmith and another (on the right) with Olve Maudal. Both went very well and had up to 18 players at a time.


Every time I run a cyber-dojo I learn new things. And new ways to make it simpler. For example in Olve's cyber-dojo one player had to leave early and one of the laptops was their laptop. In a normal code-dojo that would be a problem. But in a cyber-dojo it's not an issue. You just fire up another laptop and carry on where it left off.


Olve also invented a much simpler way to do the musical chairs. Instead of having one timer to rotate the keyboard driver within each group and another timer to shuffle the groups we now have just one timer. When it dings the keyboard drivers in each group have to get up and find a new group - which they then join in a non-driver role. Much simpler!



Writing software is writing

In his book Patterns of Software Richard Gabriel devotes a whole chapter (Writing Broadside) to writing about writing. Writing software is an act of writing so to get better at writing software he suggests it is a good idea to get better at writing in general. I was reminded of the chapter when I listened to Kevlin Henney's Skillsmatter podcast Rethinking unit testing in C++.

In his talk Kevlin discusses identifiers. Names. Names are funny things. When developers choose names they have a difficult task. They have to balance two forces that are very definitely competing against each other. On the one hand longer names give more room to express intention - to create intention revealing names. A declaration is a declaration of intent, an expression is an expression of intent, a statement is a statement of intent. But on the other hand the names of our classes, our functions and our objects also participate as sub expressions in larger and larger expressions. In the context of use the pull of brevity is very powerful.

Kevlin reminds us that some names are never intended to be used at all! They never participate in expressions that we write! Brevity should not be a concern for such names. In a language that supports reflection your test framework will call the test method for you. The only time you write the name of the test method is when you define it.

Developers typically have a lot less practice at writing names when they are freed from the shackles of brevity so it's not really surprising test method names often smell so bad. They smell bad because they are too concise! Loosen up! Give yourself some space. Instead of writing a test method called test_index think about the intention deep inside your head and try to express that as a whole sentence. That's a difficult practice to develop. If I'm pair programming and as the navigator I see the driver struggling with a test method name I sometimes ask them to "put the mouse down and step away from the keyboard". We discuss, face to face, what the intention is. Freed from the code-silo mentality of the keyboard we can usually move quite rapidly from test_index to test_indexing to test_out_of_range_indexing to test_out_of_range_indexing_throws_exception.

The last additional suffix ...throws_exception is an important one. A good test name should express an expectation. This is a transformational name change. It transforms the idea of testing so that it becomes not-testing. The name becomes a proposition. And the tests inches closer towards being an executable specification.

Another example of the context of test/proposition names having a different meta-context from regular code is naming style. Kevlin suggests that even in a language with a strong camelCase or PascalCase naming convention there is a strong argument for naming test methods with underscores_as_separators. You aren't calling these methods. They aren't participating in larger expressions. The only time they appear is in a diagnostic. Experiments have shown there is a small but definite cognitive delay in reading camelCase or PascalCase identifiers once they get beyond around 30 characters.

bureaucracy

Back to quotes table-of-contents

From The Right Stuff
The esprit throughout NASA was tremendous... Bureaucratic lines no longer meant anything. Anyone in Project Mercury could immediately get to see anybody else about any problem that came up.

From Beyond Culture
By their very nature bureaucracies have no conscience, no memory, and no mind.

From Jerry Weinberg (in person)
Bureaucracy can be measured by how much people don't know why they're doing what they're doing.

From Good to Great
The purpose of bureaucracy is to compensate for incompetence and lack of discipline. Avoid bureaucracy and instead create a culture of discipline.

From It's Your Ship
More often than not, bureaucracies create rules and then forget why they were needed in the first place, or fail to see that the reasons for them no longer exist.

From Quality Software Management: Vol 2. First Order Measurement
Bureaucracy is each thing in control, but everything is out of control.

From John Boyd - the fighter pilot who changed the art of war
Anything new and different is feared by a bureaucracy.

From A Little Book of f-Laws
A bureaucrat is one who has the power to say 'no' but none to say 'yes'.

From Beating the System
Bureaucrats are usually empowered to say no to even reasonable requests, but they cannot say yes to them. This requires passing requests to a higher authority. Saying no inflates bureaucrats' self-images.

From the Mind of War
he was always testing the limits - of airplanes, people, science, the military, and, most especially, bureaucracies.

From Ackoff's Best
The most variety-decreasing type of social system is one we call a bureaucracy.

If you're going to sin, sin against God, not the bureaucracy. God will forgive you but the bureaucracy won't. [Admiral Hyman G. Rickover]

From Are Your Lights On?
Bureauracies always begin with some process of selection - a process which is never quite "natural" selection.

From Quality Software Management: Vol 2. First order measurement
Bureaucracy: people doing things whose purpose they don't understand.

From the DevOps Handbook
Bureaucracies are incredibly resilient and are designed to survive adverse conditions - one can remove half the bureaucrats, and the process will still survive.

The Buffalo Bridle

One of my favourite Laws from Jerry Weinberg's The Secrets of Consulting is The Buffalo Bridle, which is all about motivation.

You can make a buffalo go anywhere just as long as they want to go there.


The velocity/wip game

While I was at Jerry Weinberg's Problem Solving Leadership workshop last week (which was truly fantastic) I showed a group of fellow attendees a very simple velocity/wip game I've invented. You simply create some cards and arrange them into columns. Each card has a number written on it which is it's estimate. The photo shows the setup for our game; the left column (eg Analysis) contained the numbers 1,8,2; the middle column (eg Design) contained the numbers 1,1,5; the right column (eg Testing) contained the numbers 8,1,2. We put one person on each column; Darrin on analysis, Ted on Design, and Tim on Testing. Play proceeds as follows:
  • each player gets N (eg 3) dice which they each roll over and over again
  • if a player rolls a 1 they add one to their running tally (which starts at zero)
  • if their tally reaches a number on a card in their column they can move that card one column to the right and reduce their tally by that number
  • that's it! (you can also add wip limits to the columns if you like)
Paul was on the timer and gave us one minute. After the minute was up we added up the...
  • work-in-progress: the total of the cards still in the three columns
  • velocity: the total of the cards that got moved out of the rightmost column (into an extra rightmost column called Done)

The first minute

The wip was 25 and the velocity was 11. This makes a total of 36 which is greater than the total we started with. This is because there is also an extra left-most column called Backlog which contains more numbered cards. Darrin was on the left Analysis column and after moving all three of his cards into Ted's middle Design column he pulled some more work into his column from the Backlog. Despite this Ted was starved of work for part of the minute.

The second minute

We reset the board back to it's initial position and decided to try and increase the velocity by smoothing the work. We split the high cards into multiple smaller cards. For example, the 8 was split into 3,3,2. Then we did another minute's worth of work. This time the wip was 18 and the velocity was 18. Once again this makes a total of 36 and once again Darrin pulled in more work from the Backlog after emptying his Analysis column. Because the work was less lumpy Ted wasn't starved and the velocity went up.

The third minute

We reset the board back to it's initial position from the second minute. This time we decided to try and lower the work-in-progress left over at the end. After all, if the project got canceled that wip would be waste. To do this we agreed not to introduce any new work from the backlog, and also that anyone's dice could contribute to the tally on anyone's column. Then we did another minute's worth of work. This time the wip was 9 and the velocity was 20.

Summary

Simply by smoothing the work and working together we increased velocity by a factor of ~2 (11 to 20) and reduced the wip by a factor of ~3 (25 to 9). Simple!

The way to weath

is an excellent book by Benjamin Franklin. As usual I'm going to quote from a few pages:
We are taxed twice as much by our idleness, three times as much by our pride, and four times as much by our folly.
A life of leisure and a life of laziness are two different things.
The eye of the master will do more work than both his hands.
Buy what you do not need and soon you will sell your necessities.
It is easier to suppress the first desire than to satisfy all that follow it.
Experience keeps an expensive school, but fools will learn in no other.
If you want to be wealthy, think of saving as well as of earning.
What maintains one vice would bring up two children.

How to win friends and influence people

is a great book by Dale Carnegie. As usual I'm going to quote from a few pages:
Any fool can criticise, condemn, and complain - and most fools do.
Action seems to follow feeling, but really action and feeling go together; and by regulating the action, which is under more direct control of the will, we can indirectly regulate the feeling, which is not. (quoting William James)
Good manners, said Emerson, are made up of petty sacrifices.
I made it a rule, said [Benjamin] Franklin, to forbear all direct contradiction of the sentiment of others, and all positive assertion of my own.
I judge people by their own principles, not by my own. (quoting Martin Luther King)
Any fool can try to defend his or her mistakes - and most fools do.
If there is any one secret of success, said Henry Ford, it lies in the ability to get the other person's point of view and see things from that person's angle as well as from your own.

Einstein on conventional schooling

At Jerry Weinberg's Problem Solving Leadership workshop one of the handouts contains this quote from Einstein which spoke to me:

I soon learned to scent out that which was able to lead to fundamentals and to turn aside everything else, from the multitude of things which clutter up the mind and divert it from the essential.

The hitch in this was, of course, the fact that one had to cram all this stuff into one's mind for the examinations, whether one liked it or not. This coercion had such a deterring effect upon me that, after I had passed the final examination, I found the consideration of any scientific problems distasteful to me for an entire year.

It is, in fact, nothing short of a miracle, that the modern methods of instruction have not yet entirely strangled the holy curiosity of inquiry; for this delicate little plant, aside from stimulation, stands mainly in need of freedom; without this it goes to wreck and ruin without fail. It is a very grave mistake to think that the enjoyment of seeing and searching can be promoted by means of coercion and a sense of duty. To the contrary, I believe that it would be possible to rob even a healthy beast of prey of its voraciousness, if it were possible, with the aid of a whip, to force the beast to devour continuously, even when not hungry.

The Book - On the taboo against knowing who you are

is a great book by Alan Watts. As usual I'm going to quote from a few pages.
Attention is narrowed perception.
We need a notation for almost anything that can be noticed.
The human individual is not built as a car is built.
Differentiation is not separation.
To say that certain events are causally connected is only a clumsy way of saying that they are features of the same event, like the head and tail of the cat.
In the Nootka language a church is "housing religiously," a shop is "housing tradingly," and a home is "housing homely."
It is symptomatic of our rusty-beer-can type of sanity that our culture produces very few magical objects.
We have scrubbed the earth clean of magic. We have lost even the vision of paradise, so that our artists and craftsmen can no longer discern its forms.
No work is well and finely done unless it, too, is a form of play.
The goal of action is always contemplation - knowing and being rather than seeking and becoming.
Idolatry is not the use of images, but confusing them with what the represent.

I Ching

I do I Ching some mornings. It's part of a deliberate effort to try and improve my subconscious! Today the dice chose 1,2,1,1 which means tetragram ten.
Inner Harmony
In managing your instincts and embracing Oneness,
  Can you be undivided?
In focusing your Influence,
  Can you yield as a newborn child?
In clearing your insight,
  Can you become free of error?
In loving people and leading the organization,
  Can you take no action?
In opening and closing the gateway to nature,
  Can you not weaken?
In seeing clearly in all directions,
  Can you be without knowledge?

Produce things, cultivate things;
Produce but do not possess.
Act without expectation.
Advance without dominating.
These are called the Subtle Powers.

5 inch buttons



I spent a great morning with my friend Mark, an ace wood and metal craftsman. He made some 5 inch oversize wooden buttons (for a panto costume I think). I took loads of notes and photos and plan to write the morning up in an extended blog entry. But just for now here are some photos of his workshop. You don't go into his workshop so much as put it on! Like a old jacket that fits perfectly.

Its always a people problem

There seems to be a common underlying theme running through many software development classics (who have I missed?):

In The Secrets of Consulting Jerry Weinberg writes:

It's always a people problem.

In Peopleware Tim Lister and Tom DeMarco write:

If you find yourself concentrating on the technology rather than the sociology, you're like the vaudeville character who loses his keys on a dark street and looks for them on the adjacent street because, as he explains, "The light is better there."

In The Mythical Man Month Fred Brooks writes:

The Mythical Man Month is only incidentally about software but primarily about how people in teams make things.

In Patterns of Software Richard Gabriel writes:

My overall bias is that technology science, engineering and company organization are all secondary to the people and human concerns in the endeavor.

Notice that none of them say it's a person problem.

Craig Larman's Scrum Master course

I've just spent a thoroughly enjoyable 2 days attending Craig Larman's 2 day Scrum Master course at the invitation of Olve Maudal. If you're looking for a really superb Scrum Master course I don't think you'll find a better course or a better person to hold it for you than Craig.

The photo is of a game we (team 3) created in one of the many hands on exercises. We called it the Scrum Board Game. I played the role of Product Owner and I learned that I tend to interfere too much. Sorry team 3!

Zen Soup

is the title of an excellent book by Laurence G. Boldt. As usual I'm going to quote from a few pages:
The words of truth are always paradoxical [Lao Tzu]
Water becomes clear through stillness.
The trouble with the rat race is that even if you win you're still a rat. [Lily Tomlin]
Self-confidence is nothing special. It is the absence of self-consciousness, nothing more, nothing less.
The do, or art, of work is a matter of bringing awareness, grace, and excellence to the way we work.
The work will teach you how to do it. [Estonian Proverb]
It isn't that they can't see the solution. It is that they can't see the problem. [G. K. Chesterton]
Discipline is simply a matter of doing what we must, without wasting time or energy worrying whether or not we feel like it.
The word art comes from a Latin root meaning "to arrange". We can think of an artist in any field as a master arranger.
Nothing great is created suddenly, any more than a bunch of grapes or a fig. [Epictetus]

The four XP values

Quite by chance I've notice several recent blog entry quotes mention the four XP values:
  • Communication: Community has to do with communication.
  • Simplicity: The art of maximizing the amount of work not done.
  • Feedback: Practicing without feedback is like bowling through a curtain that hangs down to knee level.
  • Courage: One thing that never ceases to amaze me is how relatively few people understand what courage is. The absence of fear is not courage; the absence of fear is some kind of brain damage. Courage is the capacity to go ahead in spite of fear.


The Way of Zen

is an excellent book by Alan Watts. As usual I'm going to quote from a few pages:
For things made are separate parts put together, like machines, or things fashioned from without inwards, like sculptures. Whereas things grown divide themselves into parts, from within outwards.
...as soon as a boundary is defined it has two sides.
Man is involved in karma when he interferes with the world in such a way that he is compelled to go on interfering, when the solution of a problem creates still more problems to be solved.
Form is precisely emptiness; emptiness is precisely form.
When reading a difficult book it is of no help to think, 'I should concentrate,' for one thinks about concentration instead of what the book has to say.
Hurry, and all that it involves, is fatal.
A good haiku is a pebble thrown into the pool of the listener's mind.
If Christianity is wine and Islam coffee, Buddhism is most certainly tea.

An Introduction to General Systems Thinking

is an excellent book by Jerry Weinberg. Like many of Jerry's books it also has a repeat snippet page here. As usual I'm going to quote from a few pages:
As Leonardo observed, "the boundary of one thing is the beginning of another."
...systems thinkers use the term "interface" to describe the part of the world that, like the two-faced god Janus, looks both inside and outside at the same time.
...for everything has a fringe of involvement with its surroundings (quoting P.W. Bridgman)
Systems, on the average, are more tightly connected than the average.
...it is better to analyze in terms of doings or happenings than in terms of objects or static abstractions (quoting P.W. Bridgman)
And with this shift in time there occurs a shift in the entity of concern - from an object, a pattern of matter in space, to a behavior, a pattern of events in time. [R.W.Gerard]
Why do things stay the same?
How can we know the dancer from the dance? [William Butler Yeats]
Although we may identify the system by its functions, this is only a convenience, for the "real" identity lies in "the permanence of the relations among the component parts" - the "structure". (quoting Herbert Spencer).
The more sure we are, the more likely we are to suffer an illusion.
To be a successful generalist, one must study the art of ignoring data and of seeing only the "mere outlines" of things.
If something explains everything, it explains nothing.

Safer C

is an excellent book by Les Hatton. As usual I'm going to quote from a few pages:
A central and hard-earned engineering principle in older engineering areas such as mechanical engineering and civil engineering is that simplicity rules.
The way to improve seems to be to master one thing at a time by doing a lot of it until quality naturally emerges.
Quality is not a flag in the company car park.
This book will argue forcibly that there is a property of software which experienced programmers can identify with quality without knowing the function of the software.
The more art is controlled, limited, worked over, the more it is free. [Igot Stravinksy]
Early versions of a number of Beethoven's pieces exist and give strong evidence of being written by a mere mortal; indeed, some are extraordinarily naive. Greatness emerged only after considerable refinement.
a profoundly important step in the maturity of a discipline is the enforcement of hard-learned previous experience and the recognition that complexity must be strictly controlled to that which necessary and no more.
A human programmer reads a programming language just as a compiler does. Therefore, languages that are difficult to write compilers for are likely to be difficult to read if those features that cause difficulty are used.
the content is more important than the style.
The author has always believed, however, that if something is statically detectable and therefore easily removeable, but likely to fail only once in the lifetime of the galaxy, it should be removed, because that occurrence might be next week and might kill someone. If its presence is known and its implications understood, it may well be negligent in the eyes of the law to leave it.
You can't test quality into software.

The psychology of computer programming

is an excellent book by Jerry Weinberg. As usual I'm going to quote from a few pages:
Programming is, among other things, a kind of writing. One way to learn writing is to write, but in all other forms of writing, one also reads. We read examples - both good and bad - to facilitate learning. But how many programmers learn to write programs by reading programs?
Ultimately, what the management want is kept promises.
The amateur, then, is learning about his problem...The professional, conversely, is learning about his profession.
To learn we must be willing to make mistakes.
If a programmer is going to make something of his experience, he must learn how to learn.
Schedule is similarly limiting - we need only cite the apocryphal experiment which tries to make a baby in one month by putting nine women to work on the job as a team.
The Swiss elect a general to head their armies when war threatens. When there is no war, there is no general - but there are other leaders chosen according to what needs there are for leadership.
A programmer would not really be a programmer who did not at some time consider his program as an aesthetic object.
Programming is a unique form of communication in which human beings take an active role and machines often a passive one.
It's not so much the solutions we need, anyway; but the experiences in trying to get them.

Rabbit debugging



My bedroom looks out over the pictured field. Rabbits live along the far hedge so Natalie and I decided to borrow a pair of binoculars to get some close up views. The first time I tried them I just could not get a clear image. I fiddled for a while with no joy. Then I decided the binoculars were just fine and the problem was elsewhere. Thinking about it, I suddenly realized where - the house was built in 1897 and the bedroom still has the original sash window. The glass in the window is quite "curvy"! When I lifted the sash and looked at the rabbits directly everything came into focus nicely.

Push-bike pump adapter pattern

Bicycle inner tubes have two kinds of valves; the bronze kind on the left and the silver kind next to it. Rather than supplying each valve with its own flexible tube (to connect to the pump) this one cleverly uses only one - the silver valve also doubles as an adapter for its bronze partner. Neat.

The road less travelled and beyond

Is an excellent book by Scott Peck. As usual I'm going to quote from a few pages:
Community has to do with communication.
The word "diabolic" comes from the Greek diaballein, which means to throw apart or to separate, to compartmentalize. It is the opposite of "symbolic" which comes from the word symballein, meaning to throw together, to unify.
Virtually all truth is paradoxical.
Consciousness is inevitably associated with pain.
Perhaps the best measure of a person's greatness is the capacity for suffering.
The essence of this discipline of balancing is unlearning and "giving up" something in ourselves in order to consider new information.
Through the learning of emptiness, we experience a temporary state of consciousness in which the mind is utterly open and receptive and therefore totally alert.
There is no formula. All such decisions must be made out of the "agony of not knowing".
There is something far more important than inner peace: integrity. Integrity requires, among other things, the willingness to endure discomfort for the sake of truth.
One thing that never ceases to amaze me is how relatively few people understand what courage is. The absence of fear is not courage; the absence of fear is some kind of brain damage. Courage is the capacity to go ahead in spite of fear, or in spite of pain.
All discipline is a form of submission.
Speaking the truth - particularly when it requires some risk to do so - is an act of love.
The development of consciousness is thus, among other things, a process of the conscious mind opening itself to the unconscious in order to be congruent.
The unconscious is always one step ahead of the conscious mind.
The basic tenet of systems theory (which is actually not a theory but a fact) is that everything is a system.
Contingency theory (which, like systems theory, is not a theory but a fact) simply states that there is no one best type of organization.
Systems inherently resist change.

Jay Miller - circus scrum master

I took Patrick to Jay Miller's circus last Sunday. We absolutely loved it. A thought struck me while I was watching - a circus is lot like a high-productivity software team - a group of highly expert, highly professional, highly motivated individuals, with a variety of different talents, coming together for a specific purpose. Hours and hours of deliberate practice behind the scenes. Clowns providing plenty of fun. A ring mistress lightly controlling the whole show. Out of sight back-room staff doing all the lighting, sound, and fake smoke wizardry...
My best moment of the whole show was a failure. Henrik (not Kniberg) the extreme juggler bounced balls off the ground rather than throwing them up into the air. It was just amazing. A complete blur of motion. Then he tried some extra balls. And then some more. And then he dropped two. He turned to the audience with his arms out as if to say "this is hard you know". And the audience gave a big cheer. It was a great failure. If you want to do something spectacular you have to be prepared to fail.

Contact cards



A while ago I decided my old business cards were rubbish and I threw them out. They were boring, and like many software applications, full of stuff that rarely, if ever, got used. Who cares what my business is called? Who cares what my "title" is. I think part of the problem is the phrase "business card" and in particular "business". The card does not get you any business! It's simply for making contact. So now I have Contact Cards. I read Dan Pink's book A Whole New Mind a while back and in it he recommends drawing yourself in 5 lines. I found my attempt and used that. My friend Richard at Express Print in Taunton did all the rest.

Diver's slate in the shower

A few people have asked me about the Diver's Slate - am I worried that without it I will forget the ideas that come to me in the shower? It's partly that yes - but mostly it's something else. It's more that my mind is rubbish at remembering things, so without somewhere to write the ideas down I have to play mental keepy-uppy trying not to drop them. The keepy-uppy effort blocks other ideas from following along and I think the ideas know that! But when they see the Diver's Slate they say to each other "it's ok, the way is clear, follow me". You have to encourage ideas - they can be quite timid creatures.

See also Family Writeboards.

cyber-dojos at accu conference



Here are some photos of the first of three cyber-dojos Olve Maudal and I ran at the accu conference. In a cyber-dojo the developers at each laptop all do the same kata exercise via a web browser. Every so often a small bell rings and each laptop has to then get to green (all tests passing). Only when all laptops get to green does the 'improvement cycle' end (I've decided I'm not going to use the word 'iteration' any more). At the start of each improvement cycle the developers create new groups and move to a new laptop.

I have observed that even when given explicit instructions that the kata is a team exercise and not a competition, once a small group of developers has settled at a laptop a strong "silo" mentality takes hold; N laptops leads to N silos. I've only run a few cyber-dojos but already I have seen examples of players explicitly asking if they are allowed to talk to the other groups! Of players about to ask a question to the other groups and their partners stopping them, etc. Is there anything we could introduce to cyber-dojo to help participants break out of this mentality? To "think team" when at a laptop? I welcome any ideas.

Mike Long (who attended the 2nd accu cyber-dojo and is a thoroughly nice bloke) has written a blog entry on his cyber-dojo experience.

Masses of accu conference notes





These are just some of the notes I made at the accu conference! What a fantastic conference it was.

When I think of or hear something I want to remember I jot it down on a piece of paper (I've trained myself to keep pens and paper on me at all times). I know lots of people use electronic organizers of various kinds but I find the paper system works best for me (up to now). I make a rough note and keep it short, particularly if I'm talking to someone, so we can start chatting again. I find the act of scribing the shape of the letters seems to help me remember better. After a few days I come back to the note and either bin it, write it up on my wiki in more detail, or put it back in my pocket. However I learned of a really neat electronic system that still uses a real pen and real paper. It's called LiveScribe and I will definitely be looking into it. I saw one being used by Ian Banner who I met on the Jeff Sutherland's pre-conference scrum course. It looks truly excellent. Thanks Ian.

Trull school rules



I finally remembered to take this photo at Patrick's primary school. A great set of rules to run a school (or company) by.

It is the year 3016 - the remains of a large codebase have been found in Norway



The accu 2010 conference in Oxford has just finished (Tweet #accu2010). Olve Maudal and I were honoured to be speaking at this fantastic event - our joint presentation was called Code Archaeology: Stories from a real codebase. Inspired by James Bach's awesome Towering-Inferno keynote we added a small, somewhat hastily put together, fun-based introduction. It seems to have worked well; "code archaeology" proved a rich vein of humour (the beer and lack of sleep probably helped too).

The real value of our presentation was the main content in part two.
  • a detailed look, going back 10 years, at many small changes from a real codebase worked on by developers who care.
  • an equally detailed look at the trust-based culture Tandberg strives to maintain, helping them consistently create superb products.
There are some details that have to be confirmed before Olve and I can make part two available and I apologise for jumping the gun earlier. Meanwhile here is Part One.

P.S. Thanks to Anna-Jayne Metcalfe (@annajayne) who tweeted the title of this blog entry and Mark Ridgwell (@credfeto) for the photo.

Accu charity book giveaway



Many thanks to everyone who took a book and contributed. I'm now about 200 books lighter and the house is about half a bookcase lighter too. Thanks also to my son Patrick (he has Aspergers Syndrome) for lending me the safe. Several people also contributed but did not take a book (clearly they also have too many books already) including the famous Henney-Lakos £20 bet winnings. The total raised was £330.20 which will be split equally between Barnados and The Autism Trust.

Many people suggested bringing some of their old books to next years accu conference so we can have an even bigger Charity Book Giveaway, with even more selection. Please contact me if you'd like to contribute - I'll keep a list of bookworms so I can send reminders a few weeks before next years conference.

Simplicity

is a great book by Edward De Bono. As usual I'm going to quote from a few pages:
An expert is someone who has succeeded in making decisions and judgements simpler through knowing what to pay attention to and what to ignore.
Simplicity means focused effort.
The human brain is a very simple system that is capable of working in a complex way, rather than a complex system.
Simplicity is a unification around a purpose.
The main aim of communication is clarity and simplicity.
Because [valuable] ideas are 'logical' in hindsight, we have always believed that they could have been reached by logic, with no need for creativity. This has been the prevalent belief and it is totally false.
Much more important than simplicity as a value is simplicity as a habit.
Simplicity before understanding is simplistic; simplicity after understanding is simple.
Simplistic often means jumping from an observed phenomenon to a direct and simple explanation, missing out all the true complexity of the situation.
The purpose of concepts is to breed concrete alternatives for action.
There is no one right answer that suits all situations. It is a matter of being aware of possibilities and then designing an approach that fits a particular need.

Peopleware

is the title of a fantastic book by Tom De Marco and Tim Lister. As usual I'm going to quote from a few pages:
If you find yourself concentrating on the technology rather than the sociology, you're like the vaudeville character who loses his keys on a dark street and looks for them on the adjacent street because, as he explains, "The light is better there."
The decision to apply schedule pressure to a project needs to be made in much the same way you decide whether or not to punish your child.
Easy non-solutions are often more attractive than hard solutions.
Our boss came in and asked, "Wendl! What are you doing?" Wendl said, "I'm thinking." And the boss said, "Can't you do that at home?"
The next time someone proudly shows you around a newly designed office, think hard about whether it's the functionality of the space that is being touted or its appearance. All too often, it's the appearance.
The need for uniformity is a sign of insecurity on the part of management.
The best organizations are not of a kind; they are more notable for their dissimilarities than for their likeness. But one thing that they all share is a preoccupation with being the best.
All you get for that extra money, he said, is better quality.
The paradox of the CMM is that process improvement is good, but process improvement programs aren't, or at least they often aren't.
What chaos is left in modern society is a precious commodity. We have to be careful to conserve it and keep the greedy few from hogging more than their share.
Visual supervision is a joke for development workers. Visual supervision is for prisoners.

The Humble Programmer

by Edsger W. Dijkstra, 1972 ACM Turing Award Lecture:
We all know that the only mental tool by means of which a very finite piece of reasoning can cover a myriad of cases is called "abstraction"; as a result the effective exploitation of his powers of abstraction must be regarded as one of the most vital activities of a competent programmer. In this connection it might be worthwhile to point out that the purpose of abstraction is not to be vague, but to create a new semantic field in which one can be absolutely precise.
The tools we are trying to use and the language or notation we are using to express or record our thought are the major factors determining that we can think or express them at all!
The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility.
Programming will remain very difficult.
The best way to learn to live with our limitation is to know them.
In computer programming our basic building block has an associated time grain of less than a microsecond, but a program may take hours of computation time. I do not know of any other technology covering a ratio of 10^10 or more.
This challenge, viz. the confrontation with the programming task, is so unique that this novel experience can teach us a lot about ourselves. It should deepen our understanding of the processes of design and creation; it should give us better control over the task of organizing our thoughts. If it did not do so, to my taste we should not deserve the computer at all!

Patterns of Software

is the title of a truly excellent book by Richard Gabriel. I reread this every year or so. Each time it speaks to me with new depth and wisdom. As usual I'm going to quote from a few pages:
My overall bias is that technology science, engineering and company organization are all secondary to the people and human concerns in the endeavor.
Compression is that characteristic of a piece of language in which each word assumes many meanings and derives its meaning from the context.
What [D'Arcy] Thompson insisted on was that every form is basically the end result of a certain growth process.
The process of software construction is the single most important determining factor in software quality.
Methodologists who insist of separating analysis and design from coding are missing the essential features of design: The design is in the code, not in a document or in a diagram.
Poincaré; once said: "Sociologists discuss sociological methods [not sociology]; physicists discuss physics [not physics methods]." I love this statement. Study of method by itself is always barren.
Study software, not software methods.
If we hope to make buildings in which the rooms and buildings feel harmonious; we too, must make sure that the structure is correct down to 1/8th of an inch.
To get wholeness, you must try instead to strive for this kind of perfection, where things that don't matter are left rough and unimportant, and the things that really matter are given deep attention.
Without large structure, the design cannot hold together; it becomes merely a jumble of isolated design elements.
The nature of a system is such that at almost granularity it looks the same; it is a system.
In the modern era, we have come to favor simplicity over complexity, perfection over imperfection, symmetry over asymmetry, planning over piecemeal growth, and design awards over habitability. Yet if we look at the art we love and the music, the buildings, towns, and houses, the ones we like have the quality without a name, not the deathlike morphology of clean design.