Hi. I'm Jon Jagger, director of software at Kosli.
I built cyber-dojo, the place teams practice programming.
C will live forever
Situated learning - Legitimate peripheral participation
is an excellent book by Jean Lave and Etienne Wenger (isbn 0-521-42374-0). As usual I'm going to quote from a few pages:
The world carries its own structure so that specificity always implies generality (and in this sense generality is not to be assimilated to abstractness).
Reversing production steps has the effect of focusing the apprentice's attention first on the broad outlines…
The fact that the work was done in an interaction between members opened it up to other members of the team.
There is anecdotal evidence that where the circulation of knowledge among peers and near-peers is possible, it spreads exceedingly rapidly and effectively.
A learning curriculum is thus characteristic of a community.
Understanding and experience are in constant interaction.
Mirroring the intricate relationship between using and understanding artefacts there is an interesting duality inherent in the concept of transparency. It combines the two characteristics of invisibility and visibility… It might be useful to give a sense of this interplay by analogy to a window. A window's invisibility is what makes it a window, that is, an object through which the outside world becomes visible. The very fact, however, that so many things can be seen through it makes the window itself highly visible, that is, very salient in a room, when compared to, say, a solid wall. Invisibility of mediating technologies is necessary for allowing focus on, and thus supporting visibility of, the subject matter.
World class match fishing
is an excellent book by Kevin Ashurst (isbn 0-304-29729-1). As usual I'm going to quote from a few pages:
I always try to visualise what is happening under the water, and the only concrete clues I can count on are the bites, or the lack of them.
When loose-feeding for roach and dace, it always pays to shuffle the tackle when bites cease. Moving a shot an inch or two, or altering the depth slightly, works so frequently that one has to assume that the fish, as well as becoming wary because of their diminishing numbers, also get shy of baits coming to them in precisely the same way all the time.
Good loose-feeing is one of the key factors affecting success in match angling, and the difficulty of getting it right is one of the reasons why I set so much store by practising for big matches.
The starting point is the knowledge that you cannot scare fish away if they are not there to begin with.
I always think fish behave a bit like birds. If you scatter breadcrumbs on a lawn the birds begin eating it from the edges, rarely alighting in the middle, and I reckon fish behave the same way.
The trick to drop fishing is to read the signs, and the most important one is getting a caster shelled or a maggot sucked without seeing a bite.
A stick float is quite heavy in relation to its size, and at any sort of range we can cop for a splashy sort of strike.
The fish in shallow water tend to be shy. They usually come into the baited area, pick up a bait and bolt.
The original choice of float is obviously dictated by the distance to be cast and the conditions on the day, and the aim should be to achieve whatever distance is required easily. It is better to overcast and pull back than to fall short and have to cast again.
It goes without saying that the kinds of bites we can expect depends entirely on the way the fish are behaving on the day, and how we are shotted in response to that behaviour.
To be perfectly honest the appearance of my floats has never interested me. I never even thought about them in the artistic sense until Colin brought it up, but I suppose the answer lies under the general heading of ignoring everything which is not essential. I devote a lot of time, thought and energy to my fishing, but only to those departments which require time, thought and energy.
More CyberDojos
I ran a CyberDojo at the excellent Tampere goes Agile conference recently (left photo). It got a 100% green card vote.
A few days later I ran another CyberDojo for the devs at Solita Oy, also in Tampere. A nicer bunch of people you couldn't ask to meet.
And a few days after that I ran yet another CyberDojo at the Ericsson Agile conference in Helsinki (right photo). @jussikm @htaubert and @karmolis tweeted that it was the most fun they'd had at work in 2011.
ALE CyberDojo Ice Breaker
We are what we say
Steven Fry wrote a piece for Radio Times about his new BBC2 series Fry's Planet Word.
The following snippets caught my attention.
Most social groupings of young people have their own private language, catchphrases and nicknames for people and processes.
All that bright individual verbal clothing is put away for the workplace and dull, pretentious verbal suits are worn in their place. Never was the word "suit" less... well... suitable. The memos, meetings and conferences of the workplace are couched in agglomorations of phrases as soulless, bloodless, styleless and depressing as they grey carpets, strip lighting and hessian partitions that constitute their physical environment. Sick-building syndrome is now well understood, sick language syndrome perhaps less so.
We may be what we eat, but we most certainly are what we say.
They reminded me again of the importance of precision listening.
Brain rules
is an excellent book by John Medina (isbn 978-0-9797777-4-5). As usual I'm going to quote from a few pages:
Students learn better from words and pictures than from words alone.
Students learn better when corresponding words and pictures are presented simultaneously rather than successively.
Students learn better when corresponding words and pictures are presented near to each other rather than far apart on the page or screen.
Students learn better when extraneous material is excluded rather than included.
Students learn better from animation and narration than from animation and on-screen text.
When the brain is fully working, it uses more energy per unit of tissue than a fully exercising quadricep.
Charles Darwin noted… the brains in wild animals were 15 to 30 percent larger than those of their tame, domestic counterparts.
Studies show that a person who is interrupted takes 50 percent longer to accomplish a task. Not only that, he or she makes up to 50 percent more errors.
Spaced learning is greatly superior to massed learning.
A great deal of research shows that thinking or talking about an event immediately after it has occurred enhances memory for that event.
Students are expected to known certain things by certain grades. Curiously absent from this model is how durable that learning remains after the student completes the grade.
When people become sleep-deprived, their ability to utilise the food they are consuming falls by about one-third.
Sleep loss cripples thinking in just about every way you can measure thinking.
Vision is by far our most dominant sense, taking up half of our brain's resources.
All I need to know about manufacturing I learned in Joe's garage
is an excellent book by William B. Miller and Vicki L. Schenk (isbn 0-9630439-3-5).
As usual I'm going to quote from a few pages:
I mumbled back something equally unintelligible, the traditional response to somebody whom you aren't sure you've met and whose name you aren't certain of.
"Why is there such a conflict?" he asked. "Both departments are striving for the same thing, the good of the company. Why should they not work together?"
With all that volume flowing through his "factory," even the slightest unplanned act will ripple through everything else with a domino effect.
Fanatic: A person who redoubles his effort after having lost his direction.
If you double the amount of equipment and tools in use, you must halve the failure rate simply to stay even.
Planning can be perfect - it's all theoretical. Execution can never be perfect - it involves real people using real tools on real material.
People are expected to inspect their own work, both for function and to specification… Statistical and analytical charts are maintained on the production floor by workers, not by Quality Assurance people in a remote office.
Like most computer people would have, he had stayed close to his electronic toy rather than come to the garage to watch the production operation.
The finest carver does the least cutting.
Nobody ever tried harder under pressure.
"know'why" in addition to "know-how"
Long test method names
Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch
Writing good code is hard. For lots of reasons. One reason is the tension you try to balance when choosing identifiers. On the one hand you want your identifiers to be longer to give you enough space to make them expressive. But on the other hand you want your identifiers to be shorter so they don't balloon into monsters when combined into expressions. For example:
Writing good code is hard. For lots of reasons. One reason is the tension you try to balance when choosing identifiers. On the one hand you want your identifiers to be longer to give you enough space to make them expressive. But on the other hand you want your identifiers to be shorter so they don't balloon into monsters when combined into expressions. For example:
// too short
bool is_leap_year(int y)
{
return y % 4 == 0 && y % 100 != 0 || y % 400 == 0;
}
// too long
bool is_leap_year(int intYearValue)
{
return intYearValue % 4 == 0 && intYearValue % 100 != 0 || intYearValue % 400 == 0;
}
// just right, said Goldilocks
bool is_leap_year(int year)
{
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}
However, the names of your test methods are not subject to this design tension.
The names of your test methods should never be part of a larger expression. So loosen up! Feel free to use long test method names. Names that reflect the specification not the implementation.
// not like this
static void test_leap_year()
{
assert(!is_leap_year(1999));
}
// like this
static void years_not_divisible_by_4_are_not_leap_years()
{
assert(!is_leap_year(1999));
assert(!is_leap_year(2001));
}
THE Secret of Scrum
This is another fragment of the ALE conference lightning talk I did. It again follows on from Jerry Weinberg's quote:
I've tried to become a much better listener in recent years. An active listener. One of the things I've noticed is that software developers are somewhat prone to treat things as being black and white. True or false. Right or wrong. This is perhaps not so surprising for several reasons. Anyway, the point of the clip is not really to poke fun at Scrum, but to highlight the use of the word THE.
No other observation skill may be more important to software engineering than precision listening.
I've tried to become a much better listener in recent years. An active listener. One of the things I've noticed is that software developers are somewhat prone to treat things as being black and white. True or false. Right or wrong. This is perhaps not so surprising for several reasons. Anyway, the point of the clip is not really to poke fun at Scrum, but to highlight the use of the word THE.
Precision Listening
At the ALE conference I did a lightning talk. On my first slide I quoted this from Jerry Weinberg's
Quality Software Management Volume 1: Systems Thinking:
As consultants, we've found that the quickest and surest way to classify organizations into similar patterns is by the way people think and communicate.
On the second slide I quoted Jerry again (from the same book):
No other observation skill may be more important to software engineering than precision listening.
I was reminded of this a moment ago when someone cold-called me. I honestly don't remember what the person's name was or what they were selling. What I do remember is how the conversation started:
Hello, Jon Jagger speaking.
Hello, can I speak to Jon Jagger please.
Do you recognise this pattern? This response is pure waste. It does nothing but waste my time. After this response the one thing I know for sure is that they're not listening to me. And if they're not listening to me why should I listen to them?
flow = speed x density
Karl used this graph in the context of traffic.
- The green line is traffic Speed and it rises (to the right) from zero at the bottom left.
- The red line is traffic Density and it rises (to the left) from zero at the bottom right.
- The black line is traffic Flow and equals Speed x Density.
- Speed = cycle time. The time it takes from the moment a piece of work enters the system to the time it gets to Done.
- Density = work in progress. The amount of work that has entered the system but hasn't yet got to Done.
- Start on the density line (red) at zero (bottom right) and increase the density (move up and to the left). For a while increasing the density increases the flow. Increasing the flow causes the density to reduce. Thus you have a stabilizing feedback loop helping to increase the flow.
- As you continue to increase the density you drop over the top of the flow-curve.
- Now as the density increases the flow decreases. And decreasing the flow causes the density to further increase. Thus you have a different destabilizing feedback loop helping to decrease the flow.
The unknown craftsman
is an excellent book by Sōetsu Yanagi
(isbn 0-87011-948-6).
As usual I'm going to quote from a few pages:
The good artist or craftsman has no personal pride.
Seeing relates to the concrete, knowing to the abstract.
To divine the significance of pattern is the same as to understand beauty itself.
A pattern is both true to nature and artificial.
If the material is poor the pattern will suffer.
By and large, good pattern is of communal parentage.
Beauty must have some room, must be associated with freedom.
The Theologica Germanica, written in the fourteenth century, tells is: "He would know before he believeth cometh never to true knowledge". Applied to the perception of beauty, this means that if a man employs the function of knowing before seeing, his power is impaired.
Intuition is the power of seeing at this very moment.
The thing shines, not the maker.
They are made without obsessive consciousness of beauty; thus we catch a glimpse of what is meant by "no-mindedness", whereby all things become simplified, natural, and without contrivance.
Wye Barbel
the alchemist
is an excellent book by Paulo Coelho (isbn 978-0-7225-3293-5).
As usual I'm going to quote from a few pages:
"This is the first phase of the job," he said. "I have to separate out the sulphur. To do that successfully, I must have no fear of failure. It was my fear of failure that first kept me from attempting the Master Work.
"But arms cannot be drawn unless they also go into battle. Arms are as capricious as the desert, and, if they are not used, the next time they might not function."
"I had to test your courage," the stranger said. "Courage is the quality most essential to understanding the Language of the World."
"It is not what enters men's mouths that's evil," said the alchemist. "It is what comes out of their mouths that is."
"Tomorrow, sell your camel and buy a horse. Camels are traitorous: they walk thousands of paces and they never seem to tire. Then suddenly, they kneel and die. But horses tire bit by bit. You always know how much you can ask of them, and when it is that they are about to die."
"There is only one way to learn," the alchemist answered. "It is through action."
Quality Software Management
Vol 1. Systems Thinking
A locked-on system tends to hold itself to an existing pattern, even against logical reasons to change. … Lock-ons occur in clusters.
We particularly look for the degree of congruence between what is said and what is done.
The quickest and surest way to classify organisations into similar patterns is by the way people think and communicate.
The feedback model says you can't successfully control anything for very long without information.
errors - deviations from requirements that give you information to control the system.
The treatment of error as a source of valuable information is precisely what distinguishes the feedback (error-controlled) system from its less capable predecessors and thus distinguishes Steering software cultures from Patterns 1 [Variable] and 2 [Routine].
If the technical reviews are not detecting a lot of mistakes it could mean that … the system is working very well.
Late modules tend to be fault prone modules.
The more modular you make the system, the fewer side effects you need to consider. You trade for this effect by creating modularity faults, or faults in the interaction between modules. You never get something for nothing.
Feedback must operate in small increments, at all levels - personal, product, process, and cultural.
In such a system it is meaningless to ask who is controlling whom?
It's not the event that counts...
In Quality Software Management volume 1 Systems Thinking, Jerry Weinberg writes (on page 111)
A bit later, on page 124 Jerry writes something which I've read several times before but for some reason this morning it really spoke to me.
Jerry finishes the paragraph with:
"It's not the event that counts, it's your reaction to the event".
A bit later, on page 124 Jerry writes something which I've read several times before but for some reason this morning it really spoke to me.
Tools do not determine how they will be used. Therefore it's not the tool that counts, it's your reaction to the tool. Programming tools can be used to program without understanding, or they can be used to free the programmer's mind and hands for tasks that can't be made routine.
Jerry finishes the paragraph with:
Pattern 2 (Routine) managers buy tools to force programmers to work in standard ways. Pattern 3 (Steering) managers manage tools to empower programmers to work in effective ways.
What Did You Say?
Cybernetics tells us that feedback is a relationship between two systems. ... you're a system too.
A lot of our fear of telling them comes from inexperience, or rather experience at giving feedback poorly and then getting a poor result. But getting a poor result is is such a terrible experience only if we have a perfection rule.
Over time, the process of sorting creates an environment that will not provide feedback that leads to change.
In other words, it's not so much the feedback that counts, but the struggle to get it - not the feedback, but the feeding-back.
If you keep doing the same thing why do you expect them to change what they're doing?
Say what you saw and heard.
If mistakes are not acceptable, learning is not possible.
Learning is what feedback is all about.
QCon Deliberate Practice video
Videos are like buses. None for ages then two come along at once. I did
this talk, on Deliberate Practice
at the QCon conference in London earlier in the year (it's only just been put online).
It's an extension of my 97 Things Every Programmer Should Know entry.
In the brain of me
Here's a video of the SkillsMatter talk I did on Thursday, titled "Stuff I'm starting to know now that I really wish I'd known 20 years ago".
Its loosely based on the theme of Making The Invisible More Visible, one of my entries from the book, 97 Things Every Programmer Should Know. I completely botched what I was trying to say about courage. What I was trying to say was that courage is not the absence of fear.
My other SkillsMatter talk was based on Do More Deliberate Practice my other entry in the 97 Things Book.
This was the first run of quite a lot of new material so I was quite nervous, but I felt most of it went very well. Here's some of the feedback.
- Fun, informative, useful
- An interesting brain dump
- Entertaining and enlightening
- Very good. Thoughtful and interesting
- Great content - very interesting
- Great laid back presentation
- Interesting ideas and great presentation to go with it
- Well planned presentation, not just your standard powerpoint
- Very good talk. Inspiring
- Very interactive and well explained
- Clear explanations, good analogies, funny
- Fantastic
- Very good. Passionate speaker. Good insights
Subscribe to:
Comments (Atom)