Hi. I'm Jon Jagger.
I help software teams improve their effectiveness.
I built cyber-dojo, the place teams practice programming.
I'm based in the UK.
I've worked in 22 countries.
If you don't like my work, I won't invoice you.
Hire me

Pages

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.

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."

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!

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.

...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).

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.

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.

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.

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 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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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!

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.

I'm hoping to run at least one cyber-dojo as a birds-of-a-feather session at the upcoming
accu conference. cyber-dojo allows you to perform code-katas using a web browser front end. To make sure it all works as planned I connected a client and a server together via a switch+router. It came together fairly painlessly! cyber-dojo is written in ruby and rails served by passenger and apache2 all running in an Ubuntu VirtualBox inside the MacBook on the right. The client on the left is Firefox on an MSI netbook also running Ubuntu.

Many years ago I noticed a problem with regular bookmarks.
Quite often I'd open the book and waste some time trying to figure where on the page I'd already read to.
One solution was to mark the exact place. That worked quite well but sometimes I didn't have a pen or pencil to hand.
Then I realized there was a much better, much simpler solution. Use a post-it of some description and stick not to the top of the page but to the side thus marking not just the page, but also the line I'd got to. Simples!