Here's the slide-deck on pair-programming I recently presented for a client.
Hi. I'm Jon Jagger, director of software at Kosli.
I built cyber-dojo, the place teams practice programming.
Showing posts with label learning. Show all posts
Showing posts with label learning. Show all posts
Atlantec conference
It was a pleasure and an honour to speak at the first Atlantec conference held in Galway, Ireland on May 15th.
I talked about cyber-dojo and showed some statistics from a random sample of its 30,000+ cyber-dojos,
together with a few examples of code/tests typically submitted, a few dashboard patterns, and wrapped up linking testing to Le Chatelier's Law and some of my favourite Systems Thinking quotes from Bradford Keeney.
the psychology of computer programming
is an excellent book by Jerry Weinberg.
As usual I'm going to quote from a few pages:
I've read this book twice before, once here, and again here.
We must deal with one other problem, which is important because of a seldom questioned view of programming - a view which this book will spend a great deal of time questioning. That view is that programming is an individual activity.
Now that hardware has grown cheaper whilst labor has grown more expensive, group members are much less likely to share a machine and system than there were years ago.
The requirement to develop capability cannot be met adequately by a single person. We learn much faster and much better with the active cooperation of others.
Has anyone ever thought of asking appplicants whether or not they like programmming?
With adults, however, the barriers to learning have usually become internalized, and the average adult learns very little of left to his own devices.
It is a well-known psychological principle that in order to maximize the rate of learning, the subject must be fed back information on how well or poorly he is doing.
Such companies are sitting ducks for anyone who comes along with a fancy package of promises - and with lots of sitting ducks, can the hunters be far behind?
An increase in salary only motivates for a short time it is the raise, not the salary level which is a symbol of current value.
To a surprising degree, the only time we fail to learn is when there are negative forces set up against it.
Because the machines are rigid, the people who use them must, if they are to be successful, supply more than their share of flexibility.
We are trying to make the machine help people take advantage of the immense psychological resources they have in overcoming their immense psychological shortcomings.
the universal computer
is an excellent book by Martin Davis (isbn 978-1-4665-0519-3). As usual I'm going to quote from a few pages:
Liebnitz's involvement with the Harz Mountain mining project ultimately proved to be a fiasco. In his optimism, he had not forseen the natural hostility of the expert mining engineers towards a novice proposing to teach them their trade. Nor had he allowed for the inevitable break-in period a novel piece of machinery requires or for the unreliability of the winds.
Unlike the usual experience with a new untried gadget, Turing's Bombes, built from his design, worked correctly as soon as they were made.
"There are several theorems which say almost exactly that ... if a machine is expected to be infallible, it cannot also be intelligent... But these theorems say nothing about how much intelligence may be displayed if a machine makes no pretence at infallibility." [Turing]
There is nothing in Godel's theorem to preclude the mathematical powers of a human mind being equivalent to an algorithmic process that produces false as well as true statements.
It is interesting to contrast von Neumann's view of computer programming as an activity with Turing's; von Neumann called it "coding" and made it clear that he thought of it as a clerical task requiring little intellect. A revealing anecdote tells of a practice at the Institute for Advanced Study computer facility of using students to translate by hand, computer instructions written using human-readable mnemonics into machine language. A young hot-shot programmer proposed to write an assembler that would do this conversion automatically. Von Neumann is said to have responded angrily that it would be wasteful to use a valuable scientific tool to do a mere clerical job. In his ACE report, Turing said that the process of computer programming "should be very fascinating. There need be no real danger of it ever becoming a drudge, for any processes that are quite mechanical may be turned over to the machine itself."
There is no reason to think that a full scale ACE-style computer would not have worked well if the organization and resources to build one had been there. The issue is best understood in the more general context of the question of which computer functions should be supplied by the hardware and which by software. Turing had proposed a relatively simple machine in which a lot was left to be supplied by software, but where, in compensation, the programmer had very substantial control of underlying machine operations.
"I expect that digital computing machines will eventually stimulate a considerable interest in symbolic logic... The language in which on communicates with these machines ... forms a sort of symbolic logic." [Turing]
Searle tells us that Deep Blue "has a bunch of meaningless symbols." Well, if you could look inside Deep Blue when it was in operation, you wouldn't see any symbols, meaningful or not. At the level of circuits, electrons are moving around. Just as, if you look inside Kasparov's skull while he is playing, you wouldn't see any chess pieces, you'd see neurons firing.
Our consciousness is a principal way in which each of us experiences his or her unique individuality. But we know it only from the inside. We experience our own consciousness but not that of anyone else.
commas in C - can you pass the puzzle ?
In a recent Deep-C training course in Bangalore
I was discussing sequence points with some C programmers.
I explained that the comma operator is one the very few operators that creates a sequence point.
I like the comma. It's the name of a beautiful butterfly. K&R's famous Hello World program had a comma between hello and world. I should really put a comma into my blog picture!
During several cyber-dojos it became clear to me that many of the programmers (despite having programmed in C for several years), did not understand that in C, not all commas are the same. I've created a small piece of C code to try help C programmers understand the humble comma...
Have a look at the following 5 lines of code. Do you know what each line does?
int x = (1,2,3); int x = 1,2,3; x = 1,2,3; x = (1,2,3); x = f(1,2,3);.
.
.
.
.
.
Scroll down for my answers once you've decided...
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
int x = (1,2,3);
This declares an
int called x and initializes it to the result of the expression
(1,2,3). The commas inside this expression are operators.
1 is evaluated and its value (1) discarded,
then a comma provides a sequence point, then 2 is evaluated and its value (2) discarded,
then a comma provides a sequence point, then 3 is evaluted and its value is the value of the
expression (1,2,3). So x is initialized to 3.
You'll probably get warnings saying there are no side-effects in the expressions 1 and 2.
int x = 1,2,3;
This is different. If this compiled it would declare an
int called x
and initialize it to 1 and then declare two more ints called 2
and 3. It has the same structure as int x = 1,y,z; which declares three
ints called x, y, and z.
The commas are not operators, they are punctuators/separators.
You can't declare variables called 2 or 3. It does not compile.
x = 1,2,3;
In this fragment
x is assumed to have already been declared. It is not a declaration. The
commas are operators again.
Assignment has higher precedence than the comma operator so this binds as (x = 1),2,3;.
So 1 is assigned to x, and the result of this assignment expression (1) is discarded,
then there is a sequence point, then 2 is evaluated and its value (2) is discarded,
then there is a sequence point, then 3 is evaluated and its value (3) is discarded.
You'll probaby get warnings saying there are no side-effects in the expressions 2 and 3.
x = (1,2,3);
Again,
x is assumed to have already been declared. It is not a declaration.
The commas are operators again. This is the same as the first fragment except it is not
a declaration. x is assigned the value of the expression (1,2,3)
which is 3. Again you'll probably get warnings saying there are no side-effects in the expressions 1 and 2.
x = f(1,2,3);
Again,
x is assumed to have already been declared. As has a function called
f which accepts three int arguments. These commas are
not operators. They are punctuators/separators. They separate the three expressions
forming the three arguments to f. But they do not introduce any sequence points.
How did you do?
the genius in all of us
is an excellent book by David Shenk, subtitled why everything you've been told about genetics, talent and intelligence is wrong (isbn 978-184831218-0).
As usual I'm going to quote from a few pages:
We're better at stuff because we've figured out how to become better. Talent is not a thing; it's a process.
We do not inherit traits directly from our genes. Instead we develop traits through the dynamic process of gene-environment interaction.
In truth, the [word] 'intelligence' has become a mere vocal sound, a word with so many meanings that finally it has none. [Charles Spearman]
Stability does not imply unchangeability. [Michael Howe]
In 1932, psychologists Mandel Sherman and Cora B. Key discovered that IQ scores correlated inversely with a community's degree of isolation.
Talent is not the cause but the result of something.
People make a great mistake who think that my art has come easily to me. Nobody has devoted so much time and thought to composition as I. [Mozart]
Heritability is a population average, meaningless for any individual person. When someone says that heritability of height is 90 per cent, he does not and cannot mean that 90 percent of my inches come from genes and 10 percent from my food. He means that variation in a particular sample is attributable to 90 percent genes and 10 per cent environment.
Genes don't directly cause traits; they only influence the system.
Genes are probabilistic rather than deterministic. [Michael Rutter]
We have far more control over our genes - and far less control over our environment - than we think.
What would be really interesting for people to see is how beautiful things grow out of shit. [Brian Eno]
The brain circuits than moderate a person's level of persistence are plastic - they can be altered. They key is intermittent reinforcement.
kanban - some quotes
Quality Software Management: Vol 4. Anticipating Change
Taiichi Ohno's Workplace Management
Implementing Lean Software Development
Toyota Production System
Taiichi Ohno's Workplace Management
The Principles of Product Development Flow
How to use conscious purpose without wrecking everything
The Systems Bible
The Psychology of Computer Programming
The Mythical Man Month
Agile Development in the Large
Surfing the Edge of Chaos
Taiichi Ohno's Workplace Management
Implementing Lean Software Development
Toyota Production System
Taiichi Ohno's Workplace Management
The Principles of Product Development Flow
How to use conscious purpose without wrecking everything
The Systems Bible
The Psychology of Computer Programming
The Mythical Man Month
Agile Development in the Large
Surfing the Edge of Chaos
learning
Back to quotes table-of-contents
From The Psychology of Computer Programming
From The Fifth Discipline
From The Deming Route To Quality
From Mindset
From Surfing the Edge of Chaos
From Agile Development in the Large
From The Aesthetics of Change
From The Lean Startup
From Managing the Design Factory
From Situated learning - Legitimate Peripheral Participation
From Ackoff's Best
From Surely You're Joking Mr Feynman
From Management of the Absurd
From Experiential Learning: Beginning
From What Did You Say?
From Brain Rules
From Measuring and managing performance in organizations
From The Psychology of Computer Programming
In the end though, it's their method of learning that distinguishes teams from groups… team members always have a common goal, regardless of the product - the goal of helping each other learn to perform better.
From The Fifth Discipline
The total absence of meaningful practice or rehearsal is probably the predominant factor that keeps most management teams from being effective learning units.
Learning is eventually always about action.
From The Deming Route To Quality
Anyone who stops learning is old, whether at 20 or 80. [Henry Ford]
From Mindset
Speed and difficulty are the enemy of learning.
From Surfing the Edge of Chaos
The defining feature of a complex adaptive system is its ability to learn.
From Agile Development in the Large
Learning and change processes are part of each other. Change is a learning process and learning is a change process.
From The Aesthetics of Change
All simple and complex regulation as well as learning involve feedback. Contexts of learning and change are therefore principally concerned with altering or establishing feedback.
From The Lean Startup
I've come to believe that learning is the essential unit of progress for startups.
Qualitative learning is a necessary companion to quantitative testing.
From Managing the Design Factory
In life, we design most processes for repetitive activities because a process is a way of preserving learning that occurs when doing an activity. … We need to find some way to preserve what we have learned without discouraging people from doing new things.
From Situated learning - Legitimate Peripheral Participation
A learning curriculum is thus characteristic of a community.
From Ackoff's Best
Development of individuals and corporations is more a matter of learning than earning.
From Surely You're Joking Mr Feynman
They didn't even know what they "knew". I don't know what's the matter with people: they don't learn by understanding; they learn by some other way - by rote, or something. Their knowledge is so fragile.
From Management of the Absurd
Ex-convicts are better able to rehabilitate prison inmates than is the prison staff. Ex-drug addicts are more successful in getting other addicts off drugs than are psychiatrists. Students learn more from each other than they do from their professors.
From Experiential Learning: Beginning
If there is no provocation, there is no learning.
From What Did You Say?
Learning is what feedback is all about.
From Brain Rules
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.
Spaced learning is greatly superior to massed learning.
From Measuring and managing performance in organizations
When outcomes are revealed so slowly, learning is difficult.
patterns of connection
When I read a good book I highlight passages that catch my attention. I copy a few of the highlights into a book-snippet.
This photo is of page 75 of my battered copy of The Secrets of Consulting. The yellow highlights are from the first time I read the book, the pink ones from the second time, the blue ones the fourth time. At the bottom right is one sentence outlined in pen and marked with an eight. That tells me I marked that sentence on my eighth re-read. (I've run out of new colours.)
I find it better to re-read a really good book 10 times rather than read 10 average books once each. It's the really good books that provide new insights each time I re-read them. Marking highlights in this way allows me to go back in time. What topics caught my attention in early readings? What topics in later readings? I can explore the differences. Of course, part of that newness is that I'm a different person each time I re-read. I'm older. A sentence triggers a new thought based an experience I've had since my last read. Also, I remember more of the book each time. For example I can see on my seventh re-read I marked this
Isn't that amazing. Fantastic.
I'm looking forward to getting older!
I'm looking forward to seeing more and more patterns of connection.
This photo is of page 75 of my battered copy of The Secrets of Consulting. The yellow highlights are from the first time I read the book, the pink ones from the second time, the blue ones the fourth time. At the bottom right is one sentence outlined in pen and marked with an eight. That tells me I marked that sentence on my eighth re-read. (I've run out of new colours.)
I find it better to re-read a really good book 10 times rather than read 10 average books once each. It's the really good books that provide new insights each time I re-read them. Marking highlights in this way allows me to go back in time. What topics caught my attention in early readings? What topics in later readings? I can explore the differences. Of course, part of that newness is that I'm a different person each time I re-read. I'm older. A sentence triggers a new thought based an experience I've had since my last read. Also, I remember more of the book each time. For example I can see on my seventh re-read I marked this
The toughest problems don't come in neatly labeled packages. Or they come in packages with the wrong labels.and I underlined the words labeled and labels because I'd consciously connected them to The Label Law (on page 64).
The name of the thing is not the thing.Underneath that I can see I've written "The Dread Pirate Roberts". That's a connection to a scene from one of my favourite films, The Princess Bride. Westley is in the fire swamp explaining to Princess Buttercup how he has become the Dread Pirate Roberts...
Westley: I, as you know, am Roberts.
Buttercup: But how is that possible, since he's been marauding twenty years and you only left me five years ago?
Westley: I myself am often surprised at life's little quirks...
Westley: Well, Roberts had grown so rich, he wanted to retire. So he took me to his cabin and told me his secret. "I am not the Dread Pirate Roberts," he said. "My name is Ryan. I inherited the ship from the previous Dread Pirate Roberts, just as you will inherit it from me. The man I inherited it from was not the real Dread Pirate Roberts, either. His name was Cummerbund. The real Roberts has been retired fifteen years and living like a king in Patagonia." Then he explained the name was the important thing for inspiring the necessary fear. You see, no one would surrender to the Dread Pirate Westely.John Gall (who was born in 1925), recently gave a fabulous talk called how to use conscious purpose without wrecking everything. He said:
As the years go by, the brain begins to put the dots together, to make conscious links between one experience and another, between one historical fact and another. A person begins to experience one’s entire life history as an integrated narrative.
This integrating capacity of the human brain is perhaps its most marvelous achievement. And you have to be old—usually fifty or sixty years old—to reach that point where it dawns on your conscious mind that that’s what’s going on. Unless you are already in your coffin, your mind is always a work in progress, an ongoing process of continual growth and greater differentiation, richer and more far-reaching correlations.He chatted about how much his mind had changed during the first 40 years of his life compared to the most recent 40 years of his life. He said the latter change was far greater.
Isn't that amazing. Fantastic.
I'm looking forward to getting older!
I'm looking forward to seeing more and more patterns of connection.
the power of example
Last week I attended another excellent Jerry Weinberg course in Albuquerque. Here's one of the nuggets I learned. It's related to the famous Solomon Asch social psychology conformity experiment.
In the experiment a group of people are shown two cards. The first card has a single line on it. The second card has three lines on it labelled A,B,C one of which clearly matches the length of the line on the other card (and the other two clearly don't). Only one person in the group is the actual subject and is unaware that the other members of the group are part of the experiment. The experiment measures how likely the subject is to conform to the answer given by everyone else when that answer is clearly the wrong one. The answer is "quite a lot". But that's not what I learned. What I learned about is a variation on that experiment. One where Solomon Asch measured how the effect varied depending on how many other people's answers matched, or didn't match, the subject's answer. You can read about this variation (and some others) here. This is the punchline:
Isn't that a great example of the power of setting an example. Of how change happens one person at a time. Of courage. Of how important it is that people feel safe. People are always more impressed by the power of our example than by the example of our power.
In the experiment a group of people are shown two cards. The first card has a single line on it. The second card has three lines on it labelled A,B,C one of which clearly matches the length of the line on the other card (and the other two clearly don't). Only one person in the group is the actual subject and is unaware that the other members of the group are part of the experiment. The experiment measures how likely the subject is to conform to the answer given by everyone else when that answer is clearly the wrong one. The answer is "quite a lot". But that's not what I learned. What I learned about is a variation on that experiment. One where Solomon Asch measured how the effect varied depending on how many other people's answers matched, or didn't match, the subject's answer. You can read about this variation (and some others) here. This is the punchline:
The presence of a [single] supporting partner depleted the majority of much of its power. Its pressure on the dissenting individual was reduced to one fourth: that is, subjects answered incorrectly only one fourth as often as under the pressure of a unanimous majority.
Isn't that a great example of the power of setting an example. Of how change happens one person at a time. Of courage. Of how important it is that people feel safe. People are always more impressed by the power of our example than by the example of our power.
an ecology of mind
is an excellent dvd, by Nora Bateson, about her father, Gregory Bateson, who wrote
An Ecology of Mind.
As usual here's are some selected quotes:
Without context, words and actions have no meaning at all. This is true of all communication... [Gregory Bateson]
A role is a half-arsed relationship. It's one end of a relationship. You cannot study only one end of a relationship and make any sense. What you will make is disaster. [Gregory Bateson]
I've been bothered a little bit the past few days by people who say, "What do you mean 'ecology of mind'". And approximately what I mean is that the various sorts of 'stuff' that goes on in ones heads and in ones behaviour, and dealing with other people and walking up and down mountains, and getting sick and getting well and all that. That all that stuff interlocks, and in fact constitutes a network, and you've got the sort of complicated, living, partly struggling, partly co-operating, tangle, that you find on the side of any of these mountains with the trees and various plant and animals that live there. In fact an ecology. [Gregory Bateson]
The division of things into parts tends to be a device of convenience, and that's all. [Gregory Bateson]
Wise men see outlines and therefore they draw them. [William Blake]
Madmen see outlines and therefore they draw them. [William Blake]
If a fool should persist in his folly, he would become wise [William Blake]
The difference that makes a difference is a way in which to define something in terms of its relationships, using contrast and context, instead of isolating it with a name. [Nora Bateson]
Krishnamurti said something like "You might think you're thinking your own thoughts. You're not. You're thinking your culture's thoughts." [Nora Bateson]
I guess I've been reading too much Alice. [Gregory Bateson]
The double-bind is a creative imperative. Its the moment when, because this doesn't work and that doesn't work, something else is going to have to be improvised. A creative impulse is necessary at that moment, to get out of the situation, to take it up a level. [Nora Bateson]
The combination of theme with variation immediately points you to something behind it. A formative principle. [Terrence Deacon]
He was often accused of talking in riddles and never coming to the point. The question he posed "What is the pattern that connects?" was never meant to be answered, because the patterns are changing. It was the act of questioning that he was pushing for. Knowing that the eyes behind that curiosity will be the most apt to give the patterns of connection room to wiggle as they perpetually self correct. And to see the beauty in that process. [Nora Bateson]
When you see process you see constant change. That's why Gregory was constantly quoting Heraclitus "no man can step into the same river twice". Because it's flowing. [Mary Bateson]
Only by the creation of change can I perceive something. [Gregory Bateson]
A man walking is never in balance, but always correcting for imbalance. [Gregory Bateson]
He asked the question "What is there about our way of perceiving that makes us not see the delicate interdependencies in an ecological system, that give it its integrity." We don't see them, and therefore we break them. [Mary Bateson]
Any kind of aesthetic response is a response to relationships. [Mary Bateson]
I hope it may have done something to set you free from thinking in material and logical terms, when you are, in fact, trying to think about living things. [Gregory Bateson]
agile development in the large
is an excellent book by Jutta Eckstein (isbn 978-0932633576).
As usual I'm going to quote from a few pages:
Quick feedback should be the first thing you introduce.
It is important that instead of the process being adopted it is adapted.
Starting with really short cycles seems to help implement the change to an agile process. If the cycles are short it is very difficult for the whole team to fall back into its old habits.
Learning and change processes are part of each other. Change is a learning process and learning is a change process.
Every agile process contains the following subtle steps
(1) reflection (awareness)
(2) learning
(3) change.
A plan is nothing; planning is everything. [Eisenhower]
If a project is on time and in budget it doesn't mean it was a successful project, but a successful estimate.
Methodologies do not produce skilled developers.
Stability is more negative than it is thought to be. [To stabilize something is to kill it]
A book is always a prevented dialogue.
management of the absurd
is an excellent book by Richard Farson,
subtitled Paradoxes in Leadership (isbn 0-684-83044-2).
As usual I'm going to quote from a few pages:
The more important a relationship, the less skill matters.
Any technique loses its power when it becomes evident that it is a technique.
People need to know they are dealing with a genuine person, not someone who is "managing" them.
It is only when the balance of power is relatively equal that truly candid communication can and should take place.
When we really listen, so that we understand the other person's perspective, we risk being changed ourselves.
Every management act in some way redistributes or reinforces power.
Ex-convicts are better able to rehabilitate prison inmates than is the prison staff. Ex-drug addicts are more successful in getting other addicts off drugs than are psychiatrists. Students learn more from each other than they do from their professors.
The introduction of highly participative systems tends to bring attacks on the stronger members, often the leaders, while more hierarchical systems bring attacks on the weaker members.
The way to judge your effectiveness is to assess the quality of the discontent you engender.
Scale is the enemy of creativity... Only prisons housing fewer than twenty inmates are likely to be rehabilitative.
The big change... held; the little ones have been much easier to resist.
We learn not from our failures but from our successes - and the failures of others.
By and large, organizations are simply not good at changing themselves. They change more often as a result of invasion from the outside or rebellion from the inside, less so as a result of planning.
Planning may not be effective at assessing the future, but it can be a good way to assess the present.
Strengths and weaknesses come dressed in the same clothing.
Children look at things we turn away from. Sometimes just pointing at what is going on is a valuable way to break through a barrier.
When people feel responsible for handling some situation in which they are, in fact, largely helpless, a dangerous combination of feelings is created: responsibility plus helplessness leads to abuse.
Training makes people more alike... Education... tends to make people different from each other.
the teachings of don juan
is an excellent book by Carlos Castaneda (isbn 978-0140192384). As usual I'm going to quote from a few pages
By experiencing other worlds, then, we see our own for what it is and are thereby enabled also to see fleetingly what the real world, the one between our own cultural construct and those other worlds, must in fact be like.
There is nothing wrong with being afraid. When you fear, you see things in a different way.
Fear is the first natural enemy a man must overcome on his path to knowledge.
You dwell upon yourself too much. That's the trouble. And that produces a terrible fatigue.
Are you angry at me don Juan? I asked when he returned.
He seemed surprised at my question.
No! I'm never angry at anybody! No human being can do anything important enough for that. You get angry at people when you feel their acts are important. I don't feel that way any longer.
What will happen to the man if he runs away in fear?
Nothing happens to him except that he will never learn.
He will never become a man of knowledge. He will perhaps be a bully or a harmless, scared man, at any rate, he will be a defeated man. His first enemy will have put an end to his cravings.
And what must he do to overcome fear?
The answer is very simple. He must not run away. He must defy his fear, and in spite of it he must take the next step in learning, and the next, and the next. He must be fully afraid, and yet he must not stop. That is the rule! And a moment will come when his first enemy retreats. The man begins to feel sure of himself. His intent becomes stronger. Learning is no longer a terrifying task. When this joyous moment comes, the man can say without hesitation that he had defeated his first natural enemy.
Does it happen at once, don Juan, or little by little?
It happens little by little, and yet the fear is vanquished suddenly and fast. But won't the man be afraid again if something new happens to him? No. Once a man has vanquished fear, he is free from it for the rest of his life because, instead of fear, he has acquired clarity - a clarity of mind which erases fear. By then a man knows his desires; he knows how to satisfy those desires. He can anticipate the new steps of learning, and a sharp clarity surrounds everything. The man feels that nothing is concealed.
The freedom to choose a path imparted a sense of direction through the expression of personal inclinations.
Exertion entailed not only drama, but also the need of efficacy. Exertion had to be effective; it had to possess the quality of being properly channelled, of being suitable.
To become a man of knowledge was a task that could not be fully achieved; rather, it was an unceasing process comprising (1) the idea that one had to renew the quest of becoming a man of knowledge; (2) the idea of one's impermanency; and (3) the idea that one had to follow the path with heart.
Pair Programming Illuminated
is an excellent book by Laurie Williams and Robert Kessler.
As usual I'm going to quote from a few pages
Programmers admit to working harder and smarter on programs because they do not want to let their partner down.
The pair results were also more consistent, while the individuals varied more about the mean. Individuals intermittently didn't hand in a program or handed it in late; pairs handed in their assignments on time.
Widespread use of pair programming involves a cultural shift in values of the organization - away from individual and toward team recognition and goals.
We have observed that effective pair programmers communicate with each other at least once a minute.
Interestingly enough, the more experience a developer has, the more likely he or she is to ask for help; novices are less likely to ask for help.
We used to consider a new person unproductive for their first three months. Now, we find that new people can help out almost immediately.
We still feel that a novice pair is a better alternative to a solo novice.
We believe pair programming is an integral part of XP, and it is dangerous to do XP without doing pair programming.
The Aesthetics of Change
Is an excellent book by Bradford Keeney.
This is its first set of book snippets. Here's the
second.
As usual I'm going to quote from a few pages...
All simple and complex regulation as well as learning involve feedback. Contexts of learning and change are therefore principally concerned with altering or establishing feedback.
Corrective action is brought about by difference. The system is technically "error activated" in that "the difference between some present state and some 'preferred' state activates the corrective response". Cybernetics therefore suggests that "all change can be understood as the effort to maintain some constancy and all constancy as maintained through change". [Gregory Bateson]
Occidentals ... practice in order to get a skill, which is then a tool - in which I, unchanged, now have a new tool, that's all. The Oriental view is that you practice in order to change yourself.
In the [predator/prey] example, the battle over food and territory between two species is only one half of the story. The larger cybernetic picture is that the battle is a means or process of generating, maintaining, and stabilizing an ecosystem.
For the most part, people take distinctions to be representations of an either/or duality, a polarity, a clash of opposites, or an expression with a logic of negation underlying it.
Both Don Juan and Erickson also made use of introducing confusion to bring about change.
A "dormative principle" is a more abstract repackaging of a description of the item you claim to be explaining. To paraphrase [Gregory] Bateson, this occurs when the cause of a simple action is said to be an abstract word derived from the name for the action... What one does, in this case, is to say that an item of simple action is caused by a class of action. This recycling of a term does not constitute a formal explanation.
When we encounter sufficient complexity, such as recursive organization of human interaction, our inability to discern higher orders of patterns leads us to committing what Whitehead called "the fallacy of misplaced concreteness." We then "abstract from relationship and from the experiences of interaction to create 'objects' and to endow them with 'characteristics'".
The more "fundamental" a premise, the less accessible it will be to consciousness. As Samuel Butler proposed, the more one "knows" something the less aware one becomes of that knowledge.
Mere purposive rationality unaided by such phenomena as art, religion, dream, and the like, is necessarily pathogenic and destructive of life. [Gregory Bateson]
The truth which is important is not a truth of preference, it's a truth of complexity.
Experiential Learning 3: Simulation
is an excellent book by Jerry Weinberg.
There's no isbn - you can buy it from Leanpub. As usual I'm going to quote from a few pages:
Would be writers commonly trap themselves by speaking their stories, rather than writing them.
The essential principle of the fieldstone method is "energy".
In a few days we can raise the participants' level of both creating and reviewing, which are the yin and yang of such creative work.
Really, the possibilities are endless, so there's never an excuse for saying you can't think of an experiential exercise.
If they cannot overcome their feelings that the simulation is "silly", then that is an important perception which we'll want to examine during the invention.
A simulation doesn't have to be "real" to be successful as an experiential learning too. What has to be real the feelings it stimulates in the participants, for feelings are what drive learning.
Paradoxically, realism often interferes directly with learning from a simulation.
Frequently, a VW company will sell a poem without knowing whether they can build it.
"Rules" are frozen solutions. Rules are solutions to yesterday's problem, carried forward to the present, but usually without reference to the problem they were intended to solve. Each rule is really an "if-then" rule, but "if-then" part is seldom stated.
You are not a grader, but a teacher.
Every time you jiggle one of your control points, you're ruining some of the teaching power of the simulation. Why? Because you're simulating a universe in which there are powerful hidden gods who control the world.
surely you're joking Mr Feynman
subtitled 'Adventures of a Curious Character',
is an excellent book by Richard Feynman (isbn 978-0-099-17331-1). As usual I'm going to quote from a few pages:
Radio sets were much easier to understand in those days because everything was out in the open. After you took the set apart (it was a big problem to find the right screws), you could see this was a resistor, that's a condenser, here's a this, there's a that; they were all labelled.
I finally fixed it beause I had, and still have, persistence.
They didn't even know what they "knew". I don't know what's the matter with people: they don't learn by understanding; they learn by some other way - by rote, or something. Their knowledge is so fragile.
In this room there were wires strung all over the place! Switches were hanging from the wires, cooling water was dripping from the valves, the room was full of stuff, all out in the open. Tables piled with tools were everywhere; it was the most godawful mess you ever saw. The whole cyclotron was there in one room, and it was complete, absolute chaos!
It reminded me of my lab at home. Nothing at MIT had ever reminded me of my lab at home. I suddenly realized why Princeton was getting results. They were working with the instrument. They built the instrument; they knew where everything was, they knew how everything worked. ... It was wonderful! Because they worked with it. They didn't have to sit in another room and push buttons.
I sat with the physicsts, but after a bit I thought: It would be nice to see what the rest of the world is doing, so I'll sit for a week or two in each of the other groups.
So you must be always jiggling a little bit, testing out which way seems to be the easiest.
One day I was watching a paramecium and I saw something that was not described in the books I got in school - in college, even. These books always simplify things so the world will be more like they want it to be.
I chose to play a thing called a "frigideira" which is a toy frying pan made of metal, about six inches in diameter, with a little metal stick to beat it with. ... I practiced all the time. I'd walk along the beach holding two sticks that I had picked up, getting the twisty motion of the wrists, practicing, practicing, practicing.
One day, shortly before Carnival time, the leader of the samba school said, "OK, we're going to practice marching in the street. ...
It was rush hour in Copacabana, and we were going to march down the middle of Avenida Atlantica.
It said to myself, "Jesus! The boss didn't get a license, he didn't OK it with the police, he didn't do anything. He's decided we're just going to go out."
So we started to go out into the street, and everybody, all around, was excited. Some volunteers from a group of bystanders took a rope and formed a big square around our band, so the pedestrians wouldn't walk through the lines. People started to lean out of the windows. Everybody wanted to hear the new samba music. It was very exciting!
As soon as we started to march, I saw a policeman, way down at the other end of the road. He looked, saw what was happening, and started diverting traffic! Everything was informal. Nobody made any arrangements, but it all worked fine.
One exercise they had invented for loosening us up was to draw without looking at the paper. Don't take your eyes off the model; just look at her and makes the lines on the paper without looking at what you're doing.
One of the guys says, "I can't help it. I have to cheat. I bet everybody's cheating!"
"I'm not cheating!" I say.
"Aw, baloney!" they say.
I finish the exercise and they come over to look at what I had drawn. They found that, indeed, I was NOT cheating; at the very beginning my pencil point had busted, and there was nothing but impressions on the paper.
When I finally got my pencil to work, I tried again. I found that my drawing had a kind of strength - a funny, semi-Picasso-like strength - which appealed to me. The reason I felt good about that drawing was, I knew it was impossible to draw well that way, and therefore it didn't have to be good - and that's really what all the loosening up was all about. I had thought that "loosen up" meant "make sloppy drawings," but it really meant to relax and not worry about how the drawing is going to come out.
When it came time to evaluate the conference at the end, the others told how much they got out of it, how successful it was, and so on. When they asked me, I said, "This conference was worse than a Rorschach test: There's a meaningless inkblot, and the others ask you what you think you see, but when you tell them, they start arguing with you!
the power of pairing
|
|
|
In a previous post I talked about an example where a pair performed better than either individually. Here's another small example that happened to me today. |
odd(Integer) when Integer rem 2 == 1 ->
true;
odd(_) ->
false.
filter_test() ->
?assertEqual([3, 1],
filter(fun(Elem) -> odd(Elem) end, [1, 2, 3, 4])).
I don't know Erlang at all, so Syver helped me out with this first-cut version:
filter(_, []) ->
[];
filter(Fun, [Head|Tail]) ->
filter_helper(Fun(Head), Fun, Head, Tail, []).
filter_helper(true, Fun, TrueElement, [Head|Tail], Result) ->
filter_helper(Fun(Head), Fun, Head, Tail, [TrueElement|Result]);
filter_helper(true, _, TrueElement, [], Result) ->
[TrueElement|Result];
filter_helper(false, Fun, _, [Head|Tail], Result) ->
filter_helper(Fun(Head), Fun, Head, Tail, Result);
filter_helper(false, _, _, [], Result) ->
Result
I realized Erlang is a lot like Prolog which I knew in the dim and distant past.
I stared at the code and after several minutes something about it started nagging me.
It was the splitting of the list into it's Head and Tail elements in both filter and filter_helper.
I wondered if this duplication could be avoided by making filter_helper call back into filter.
After several false attempts I came up with:
filter(_, []) ->
[];
filter(Fun, [Head|Tail]) ->
filter_helper(Fun(Head), Fun, Head, Tail).
filter_helper(true, Fun, TrueElement, List) ->
X = filter(Fun,List),
[TrueElement|X];
filter_helper(false, Fun, _FalseElement, List) ->
filter(Fun, List).
Then Syver showed me how the use of X could be collapsed:
filter(_, []) ->
[];
filter(Fun, [Head|Tail]) ->
filter_helper(Fun(Head), Fun, Head, Tail).
filter_helper(true, Fun, TrueElement, List) ->
[TrueElement|filter(Fun, List)];
filter_helper(false, Fun, _FalseElement, List) ->
filter(Fun, List).
We did some argument renaming:
filter(_, []) ->
[];
filter(Fun, [Head|Tail]) ->
filter_helper(Fun(Head), Fun, Head, Tail).
filter_helper(true, Fun, Head, List) ->
[Head|filter(Fun, List)];
filter_helper(false, Fun, _, List) ->
filter(Fun, List).
Then Syver noticed that we could pass Head,Tail as a single [Head|Tail] argument:
filter(_, []) ->
[];
filter(Fun, [Head|Tail]) ->
filter_helper(Fun(Head), Fun, [Head|Tail]).
filter_helper(true, Fun, [Head|Tail]) ->
[Head|filter(Fun, [Head|Tail])];
filter_helper(false, Fun, [_|Tail]) ->
filter(Fun, Tail).
We agreed that filter_helper was better as filter:
filter(_, []) ->
[];
filter(Fun, [Head|Tail]) ->
filter(Fun(Head), Fun, [Head|Tail]).
filter(true, Fun, [Head|Tail]) ->
[Head|filter(Fun, [Head|Tail])];
filter(false, Fun, [_|Tail]) ->
filter(Fun, Tail).
As a final polish Syver refactored to this:
filter(_, []) ->
[];
filter(Fun, [Head|Tail] = List) ->
filter(Fun(Head), Fun, List).
filter(true, Fun, [Head|Tail]) ->
[Head|filter(Fun, [Head|Tail])];
filter(false, Fun, [_|Tail]) ->
filter(Fun, Tail).
and then, again, after the dojo, thanks to Syver's comment below, to this:
filter(_, []) ->
[];
filter(Fun, [Head|_] = List) ->
filter(Fun(Head), Fun, List).
filter(true, Fun, [Head|Tail]) ->
[Head|filter(Fun, [Head|Tail])];
filter(false, Fun, [_|Tail]) ->
filter(Fun, Tail).
We agreed that the final version was definitely better than either of us could have come up with individually.
Subscribe to:
Posts (Atom)























