Posts Tagged ‘competent programmer’

A Practical Approach to Create a Balanced Community

Wednesday, July 25th, 2007

The current generation of programmers are doing what Edsger Wybe Dijkstra hoped not would happen. They are the cause of the mess we are in. They forgot to keep the balance between structure (Thinking) and meaning (Emotion).

The Managers of the Programmers are “out of tricks” and have become cynical. They don’t believe there is a way out. They are “muddling trough”, reacting on every major critical event with an impulsive re-action. It will be hard to convince them that there is a solution to their problems.

The major target are the Users within or the Customers of the companies. They feel very stressed and don’t have a clue why this is happening to them.

Their asset is that they Know How they are doing their job and they are able to Articulate What they are Doing. The only thing they don’t see is the Cycle. They are Part of a Whole without seeing it. This is normal.

When we ask the User what they are doing we give them a simple tool to paint a picture of the flow of their activities. If they have done this we generate the processes that are supporting them instantly. This will motivate them to go on.

In the next step we make a connection between Action and Meaning. We ask the user to define the meaning of the terms they are using. We could use Wiki. Wiki makes it possible to start a dialogue about the meaning.

This dialogue will create mutual understanding (Consensus) and in the end a Shared Convention, a mapping of meaning from person to person, culture (community, context) to culture (community, context). The next step is to transform Meaning into Structure.

The person that was an expert in the transformation of meaning to structure was Sjir Nijssen. He developed a method called NIAM. NIAM has generated many dialects called ORM, FORM, RIDDLE, FCO-IM and DEMO.

The basic idea of all these methods is to analyze human communication in terms of the sentences we speak and the commitments humans make to the each other.

NIAM takes out of a sentence the verbs (Action) and the nouns (Structure) and of course the numbers and creates a semantic model (the so called Universe of Discourse).

What Nijssen understood was that a computer is able to register Facts (reality we agree upon). The facts are stored in memory. If we all agree about the facts we can use them to start reasoning.

When we know what the user is doing and what he means we can move to other actors he has defined in his activity-diagram. We just perform the same process over and over again. Every time a new user (actor, role) is added we restart the dialogue about meaning.

At a certain point in this process of inquiry we will notice that the meaning in the context is stabilized. It has turned into a shared convention. What we also will notice is that a faint cycle (or a cycle in a cycle) becomes visible.

It will be full of strange loops and useless activities. Some people in the context will produce and others will just throw away what the others are producing. They don’t know because they don’t communicate on the level of their community.

This is the moment to start a new dialogue. The dialogue of Reflection (Why?). We are able to show to the actors in the community the whole. We call this tool a Monitor.

We will give them the opportunity to start a shared process of innovation (using the imagination). We can give them tools to Explore, to Design new activities and to Analyze the Facts (find patterns). We can even give them tools to Play with (games, simulator). All the time the Monitor will show them the state of their joint effort. I am certain the community will clean itself, get into balance, with joy.

In communities and organizations and of course society there are many stable invisible infrastructures. The visual activities of the users have to be connected to these layers. This has to be done by programmers. They have to define interfaces. User-Data is converted into messages that jump out of the layer when a human interference (mostly a decision) is really needed.

The consequences of this approach will be enormous. Many people will be out of work but they will be needed in the next step of Collective Innovation.

Want to read more about Dijkstra

Why Good programmers have to be Good Listeners

Friday, June 29th, 2007

Edsger Wybe Dijkstra (1930-2000) was a Dutch Computer Scientist. He received the 1972 Turing Award for fundamental contributions in the area of programming languages.

One of the famous statements of Dijkstra is “Besides a mathematical inclination, an exceptionally good mastery of one’s native tongue is the most vital asset of a competent programmer“.

Why is this so important?

People communicate externally and internally (!) in their native tongue. If they use another language much of the nuances of the communication is lost. When people of different languages communicate they have to translate the communication to their internal language.

A computer language is also a language. It is a language where every nuance is gone. With the term nuance (I am a Dutch native speaker) I mean something that also could be translated into the word meaning. A computer language is formal and human communication is informal. We communicate much more than we are aware of when we speak.

So Programming is a Transformation of the Human Domain of Meaning to the Machine-Domain of Structure.

A programmer with a mathematical inclination (being analytical) AND an exceptional good mastery of one’s native language is the only one who can built a bridge between the two worlds.

When he (or she, woman are better in this!!!) is doing this he knows he is throwing away a lot of value but it is the consequence of IT. Machines are not humans (People that are Mad act like Machines).

Machines are very good in repetition. Humans don’t like repetition so Machines and Humans are able to create a very useful complementary relationship.

The person that understood this very well was Sjir Nijssen. He developed with many others something called NIAM. NIAM has generated many dialects called ORM, FORM, RIDDLE, FCO-IM, DEMO. The basic idea of all these methods is to analyze human communication in terms of the sentences we speak. It takes out of a sentence the verbs and the nouns (and of course the numbers) and creates a semantic model of the so called Universe of Discourse.

What Nijssen understood was that a computer is able to register FACTS (reality we don’t argue about anymore) and that facts are stored in a database. If we all agree about the facts we can use the facts to start reasoning. Want to know more about  reasoning. Have a look at this website.

To create a program that supports the user a good programmer has to be a good listener and a highly skilled observer. Users are mostly not aware of their Universe of Discourse. They are immersed in their environment (their CONTEXT). Many techniques have been developed to help the observer to make it possible to recreate the context without killing the context (Bahktin). Have a look at User-Centered-Design to find out more about this subject.

Want to read more about Dijkstra read The Lost Construct.