agile

Scrambled Eggs

Back when we lived in Brazil, we did not use the television other than as an output device for the video-games and the DVD/blue-ray players. I got rid of tv channels around 12 years ago, for there is not much television add to our lives and there is so much that it takes from us.

It is far too easy to spend many hours, not having fun, not learning, not resting, just burning through time with absolutely no benefit, being spoon-fed with needs we don’t really have and having our brain slowly turned off.

Cable channels are even worse than open channels for they charge you for the disservice.

Now that we moved in to Montreal, we have the need to learn french, and so we figured that it would be good to have the television to rise the language immersion. So we now watch tv, mostly Baby TV, as we thought it would maximize learning for our son and for ourselves.

I would give it, there are some good sketches with some educational value, but I am starting to figure it is targeted more as baby’s time sink than as proper educational.

In particular, there is a sketch that, in my opinion, actively does harm for it helps even that early in the baby’s life to inculcate this wicked culture of the only one right answer and fear of being wrong.

The sketch is named Eggbirds and it is about a flock of painted eggs with feet and beaks, they walk in formation following a boss, differentiated by having hair, as he is the boss, he is “special”, he goes a little further in the front but sometimes he stops and let the flock pass by as he inspect the others.

There is a bland one that is the “intern”, he is an unpainted smaller egg lagging behind the group, walking alone. At some point they find hanged cloths and the boss decide it is time to play, he announces which will be the play from a podium, and he order someone to be the puppet in the play, which of course is thrust upon the intern egg by the others.

The intern then hides behind the clothes and reveal himself slightly painted or with some part of a costume, at which point the others try to guess what is his intended costume, they guess something that always is perfectly plausible and acceptable given the bits shown, the boss looks and patronizingly refuses the answer.

Then the intern hides again and add a little bit more to the custom, show himself again, someone gives another good answer, and this time the boss straight laugh at his/hers face humiliating him/her for not having it “right”.

For the last time the intern hides, and somebody hazard a guess just after he comes back and he is identical to the guess, the boss audits the answer to see that it is EXACTLY the same and then approves it.

All along the sketch reinforces the bad stereotypes that the group must follow and be controlled by the boss, unable to decide on theirs own what to do, with him having the only right answer to the problems, micromanaging people and auditing every single act and trampling those that do not conform to the expected norms and solutions, destroying the very source of creativity and rewarding sameness.

It is even factually wrong for birds flying in formation do that through an emergent pattern with no single bird controlling it and the head of the flock changes over time, as the front birds get tired they fall back and others become the front.

Much more likely to a team where each member is independent and has skills to add to the group and does when the skill is required by the situation than the command and control view imposed.

Wired to pair

The more I think of the practices the more I like pair programming, it is the one practice with a plethora of benefits from code review without attrition to source of social interaction, enforcement of good practices and code style, diffusion of information among team members, activation of learning part of the brain associated with social interaction…

I just came across an article that I again see relation to pair programming, we are wired to handle better stressful situations by sharing the burden as it is shown in this article.

I think it was twitted but for the life of me I can’t find the original reference, this was sitting on my bazillion of tabs to be read for some time.

The Human Connection

Born to share

From the moment we are born to the moment we die we are wired to connect and share everything we do. It is our connections that give meaning to our lives and they shape how we think and what we are. Even before we are born we start learning language, we learn the sounds of the language and the accent of our parents.

We come out and we are sponges for language, babies keep on running those learning algorithms making out which sound are each phoneme in a given language, as we are told in this TED Talk of Dr. Patricia Kuhl.

Babies exposed to language in the first year learn at amazing pace the sounds of the language, but the most striking is that in two weeks a baby not previously exposed to a language catches up, if a person comes to talk to him in a new language, and here is something very intriguing: it must be a person, not a television, not a radio, there must be firing of social neurons in order for the learning to occur.

But this is not the only learning that is shaped by our social interactions as we can see in another inspiring talk, this time by Professor Sugata Mitra who stumbled upon a great discovery with his experiment Hole in the Wall where he leaves a computer exposed to the street and finds out that the poor children, who had no previous contact with computers and without external assistance, are able to teach themselves all sorts of things. He explores this idea further and reports again in his next talk in his finding he observes that there must be more than one child, they must interact, even at first being wrong and advising one another wrongly, they end up building knowledge.

The birth place of ideas

But the benefit of human interaction for learning does not end in adolescence, we carry on “sinergizing” with others to produce and create as Steven Johnson explores on his Where good ideas comes from, we are nodes in a great human network load balancing ideas and knowledge and the interactions that allow the ideas to make sex are the real geniuses of the human race.

Programming is comunicating

Enter programming, one can argue that human languages are messy and ambiguous, on the other hand computer languages are clear and precise, besides you just need to make the computer understand what is said. It is easier than with humans. Right?

Computer languages are just like human languages, there are many ways to achieve the same result in a given language, more in some than in others(Perl comes to mind), specially on those with a high level of abstraction. The abundance of bugs on every program just shows how hard is to really get the message through the computer thick mind.

Having the computer to understand your meaning is just half the story, for there is maintenance, making the computer understand is never enough, unless you produce throw away software, you have to write code in an way that the non-native speakers, us humans, understand clearly the concepts intended for the computers.

On top of that, those concepts are not just something you knew all along. They are new ideas to solve the problems of the system being written, the act of writing computer programs is not just a passive activity of writing down something well known. It is a creative, engaging, challenging processes of creating new knowledge and writing it to be understood by two completely different beings.

The connection solution

Thus we have in programming the full stack, from learning what is needed to be done, how to do it and pass the knowledge around. Programing does benefit fully from keeping our social neurons firing and interacting at which pair programing excels. It provides the needed social context for the act of programing to keep our brains going, working full steam.

Programing is not the mechanic act of typing code, for that we have IDEs, what slows down to a stop development is the lack of ideas, even worse: bad ideas that creep in and if left in the system cause all kinds of misunderstandings(A.K.A.:bugs) and troubles like the time taken to understand a piece of code to fix it that will accumulate cost along a project.

Pair programing, by satisfying our social cravings, as seeing in the prevalence of social networks, reduce time spent on them, for that need is supplied in the act of programing itself. Through positive peer pressure it keeps the quality of code high for no one likes to show bad coding style. It homogenizes knowledge among the team both from the application inner works as with technical knowledge and knowledge in general.

It also builds bounds among the team and sthrengtens confidence which make people work more motivated.

Conclusion

Pair programing makes the endeavor of programing more humane, rises the quality of the software produced and generates knowledge. It is a very powerfull tool that works in tandem with agile values and is too valuable to not be applied even outside agile environment.

Join Take Back Agile

Taking Agile Back

Recently with his post I Want Agile Back Tim Ottinger launched a movement of rescuing the agile movement and it’s values. I heartily agree with him that the state of agile is disheartening this days. Agile has being kidnapped by the very machine that it rose to stand against.

Agile is not fast

Agile does not mean fast, half-backed, ill thought of code. Agile means being able and ready to react soon to changes in the environment so that you do not spend time and energy producing something that has not value. The very idea birthing from the wish to produce quality.

Agile is human first

Agile is about recognizing that software is an human process and understanding and valuing humans in the process instead of hammering them down to bits into the process.

Agile is being honest

Even if it let income go, it is to be transparent and let the customer let the project go if it is not giving him value anymore. It is not about squeezing profit at the expense of everything else.

Agile is not about titles

Agile is not about being master, manager, boss, ├╝ber developer, or any title of power or lack of it. It is about the power of collaboration with everyone being equally important to the success of the enterprise and contributing to the mix of skills without adding one more pretty initials to the business card.

Agile is about satisfaction

Satisfaction in working with others and having the feeling of the job well done. Satisfaction of the craftsman over a piece produced with mastery. Satisfaction of seeing the customer happy with value added through the software.

Join

If you believed the agile manifest and want to see a world where software is written thusly, join the movement to take agile back:
Google plus community
Google groups
Twitter@TakeBackAgile

— may the code be with you