It is my site!
           Alex Shell

 Starting 

My work
Methodology   of management  

  Analytics
 Picture albums
 Humour
 Puzzles
 Games
 Music
 VAU!
 Extreme Programming
 Archive


 

Google
Web
On a site

" People as nonlinear and most important components in creation of the software "

Alister Koubern (arc@acm.org)


Humans and Technology, October, 1999

The summary

We, metodologi, project(design) complex(difficult) systems, but we do not consider performance data of an active component of these systems, a component which is known for the nonlinearity and variability - the person. In this clause(article) those theories and projects are in brief listed, which to me should be studied(investigated) to realize this abundantly clear fact, and also to define(determine), what qualities of human mentality should be considered in creation of methodology and more the general(common) recommendations of a concerning(touching) process of development. On these qualities it is possible to do(make) the most true forecasts concerning the future current of the project and applicability to it(him,them) any methodology.

Introduction

This report is based on my personal experience which I have got, having studied(investigated) about 40 projects for last 20 years.

The basic idea of this clause(article) consists in the following: metodologi develop complex(difficult) systems which have rather changeable and nonlinear components - people. Thus they somehow manage to not notice at all these components and that influence which they render on projected(designed) system. After some reflection such state of affairs seems absurd, however, in our branch at all many researchers, finding time to serious studying of influence of the human factor on development of the software.

The most appreciable exceptions of this rule are Dzherald Vajnberg (Gerald Weinberg [Wei]) and Volume Demarko (Tom DeMarco [Dm]), whose books are published now in anniversary (!) editions. Their works so are popular in our branch, that, apparently, they should raise(increase) only interest to this subject and cause activization of researches in this area. Now the increasing quantity(amount) of advisers starts to concern to people as to a primary factor in development ON [B99] [Hi], however, as a whole, the community of software developers continues to ignore that fact what exactly the person should be the central theme of researches. It is represented to me serious omission - all the same what to not consider metal overlappings(blockings) within the precincts of and to complain of bad work of a radio receiver.

Earlier and I considered(examined) the people participating in projects, as any minor factor. It proceeded until after several years of work as the researcher and metodologom, I have not noticed, that my recommendations as metodologa mismatch my own experience in development ON. The problem was not that my developers (they did(made) coped work most advantageously). The problem was in other: that I wrote, mismatched that we did(made).

Within last five years I painfully tried to define(determine) (me difficultly it to make even now) " that is at me before eyes ". Gradually it became clear to me, that in mine (and any the friend) the methodological equation there is no one variable - influence on methodology of such concept as "person".

Now, when I have started to consider this parameter, my methodological forecasts and conclusions began to correspond(meet) to that I see in a real life. Now I consider(count), that people are the main, prime engine of the project.

Than it differs what wrote in "Peopleware" Demarko and Lister (Lister)? They have expressed opinion, that people represent the important factor, and have specified some specificity of a question. Me interests, how group and specific features of the person influence designing of ways of development ON (differently, on methodology), in application to the various groups working above different kinds of tasks.

My ideas are rather similar to what stated Vajnberg in the chapter(head) "Teaming" (" Work in a team ") the book " The Psychology of Computer Programming " (" Psychology of programming "). Especially all that, as to opposition of two styles of a management(manual) - managements of tasks (task management) and managements of support (maintenance management). It is rather close to that I - try to receive certain characteristics and recommendations which of them follow. Vajnberg is based on those projects which it(he) investigated(researched) in 60th years. However its(his) conclusions remain fair and useful and now, 30 years later, that once again confirms stability and importance of the human factor in development ON. It seems to me, there has already come(stepped) time carefully to study(investigate) similar factors, and to start to concern to the following from them to recommendations as to bases of development ON, instead of to open them for itself each 30 years.

In this clause(article) I shall tell about that work, which have done to understand what exactly people are the main keystone to success of the project. Now for forecasting I use the human factor. I write this clause(article) from the first person because formal, academic style not so approaches(suits) for the description of searches to something abundantly clear and thus not absolutely clear. Is better to submit it in the form of the story from the first person.

Way of mistakes errors

To year edak in 1987 when I was engaged in formal development of the software, there was a following belief: " ON the problem consists In development that at statement of a task and designing too many discrepancies are supposed. All will be good, if we can force to work people with a mathematical formalism ". However, having worked it is a little in this direction, I have found out, that before us cost(stand):

  • Problem 1. To the people borrowed(occupied) in the project, is absolutely uninteresting to study(investigate) our system.
  • Problem 2. They can quite manage both without metodologov, and thus successfully create the software.

I have left from formal development while my colleagues have put forward new idea: " All problem - in training. All will be good, if we shall give developers necessary mathematical knowledge much earlier, in high school ". However my knowledge of people prompted, that such desire is impracticable. Not that I put under doubts obvious advantages of formal development ON, simply I doubted of our ability to convince 10 million person to borrow(occupy) in mathematics. Would be correct to raise the question as follows: " Under what circumstances and for what it is necessary to include in the project of the expert on formal development? "

I have passed to development of tool means, and began to work so etnotsentrichno, how much(as far as) it was possible(probable). Thus I observed of those who projected(designed) communication reports and discussed with them, what problems arise at them during work. And my colleagues, and I send(have come) to a uniform conclusion: " All problem consists that people till now prefer to draw on a board. All will be good, if we shall give the special program tool by means of which they can draw directly in a computer in their order and to see, how their projects at an early stage of work " will be realized.

We have spent some years to develop the special generator transforming the diagrams of sequence and interaction in architecture of software product and system of rules [Ci]. Many companies worked (and work) above similar tasks, for example, carried out final automatic devices Kherela (Harel's executable finite state machines) [Ha].

So, having worked above this project some years, we have made the prototype, and have decided to show its(his) group of our potential users. As we have been amazed(struck), having heard the following: " Is not present, thanks. We like to draw on a board more, and it would not be desirable to waste time on bringing all these figures in a computer. Though... We, probably, would take from all your set of means the graphic editor ". As it has appeared, other developers of similar programs received similar responses. Usually users agreed to use, eventually, " only the graphic editor ". In other words, before us stood:

  • Problem 1. To the people borrowed(occupied) in the project, is absolutely uninteresting to study(investigate) our system.
  • Problem 2. They can quite manage both us, and thus successfully create the software.

Such state of affairs already started me to disturb, and I began to be engaged metodologiyami development ON (projected(designed) object-oriented methodology under order IBM Consulting Group (1992-94)). This time, to not attack the same raker, I in advance have interrogated more than dozen various companies which worked above OO projects in the various countries, and have carefully written down everything, that they to me have told. Studying(investigating) these(it) of a note, I have made some interesting conclusions:

  • Those commands(teams) which successfully work above the projects, use incremental processes of development [Co95]

  • At designing any technics(technical equipment), is more complex(difficult) than "CRC-cards" [B87] it is considered too complex(difficult) and is not used [Co94].
  • Those who is engaged in designing, always have an opportunity to refuse any software product or technics(technical equipment) which do not like them. It is enough to tell to the chief: " It slows down work. If I shall use it(this), I shall not meet the deadline ", and it(he) will allow to act to designers under own discretion. At that time this supervision not seemed to me especially important, but, nevertheless, I have written down it(him) and have named " design restriction " methodology.

After that I have developed rather attractive and as it seemed to me, so not formal, how much(as far as) it is possible(probable), methodology and has tested it(her) on one of projects. Our experience is described in the documentation under project Winifred [Co98]. The basic idea of technics(technical equipment) of designing which I recommended to use and in which I trained developers, were CRC-cards.

Some months later, I have solved, that now it is time pobyt not the adviser, and the ethnographer, and began to observe of how my team of developers behaves. That I have seen, has shaken(amazed) me:

  • Working process which was used with my team, was so complex(difficult) and confused, that hardly probable it(he) in general could be described. However, even if I would manage to make it, anybody could not repeat it(him) [Co98p]. This process reminded my methodology only rather and rather remote image.

  • Any of those two dozens of designers which I have trained in the methodology, did not use a CRC-card.

In other words, though I also used the " the ethnographic approach ", all the same before me stood:

  • Problem 1. To the people borrowed(occupied) in the project, is absolutely uninteresting to study(investigate) our system.
  • Problem 2. They can quite manage both us, and thus successfully create the software.

Such process repeated some more time, and I was finally disabused of the ability " to see that occurs(happens) actually ". I could tell only, that in development of the project there is any very much a prominent aspect which we cannot calculate in any way. Not so long ago I have tried to solve this problem, working in pair with the ethnographer. To me the help simply to denominate was necessary to an event [Ho]. In general, it is good to adviser to work together with the ethnographer, however this time we hardly probable could begin work. The problem was very simple and insuperable: it is impossible to tell, that you see, until at you are not present for this suitable name. It was obvious, that our dictionary does not have not enough adequate concepts.

For today my track record develops of participation, detailed interrogation or studying of the documentation more than three dozens projects (I have generalized their separate aspects in Table 1).

Table 1. Projects and methodology which I studied(investigated). The information in the table, certainly, should be given in shorthand form. Here I specify year, the working name of projects and the brief remark on each of them. Some of projects are described in other literature. References(links) to sources are specified in square brackets.

1980. "CT5". It is successfully completed. 26 person, 3 years (a year later, than it it is necessary), had crucial importance for the company. Precisely certain macroprocess is studied(investigated) during the training, microprocess is absent.

1986. Projects "Cleanroom" [Mi]. Are successfully completed. Federal sector IBM, greater(big) commands(teams) of developers. Numerous success at use of the heavy methodology demanding the big discipline.
1986. Projects "Sherr" [Br] are successfully completed. Process can be described as follows: " make so, that all has earned, but do not work overtime ". The basic emphasis on non-standard creative decisions, process is not certain.
1980. " Broooklyn Union Gas " [Co98]. It is successfully completed. New OO technology, 150 person, the project for the decision of crucial tasks.
1992. "Tracy" [Co98]. A failure. The small team of developers blindly followed methodology according to which it is necessary was " to model the world, and then to transform model into a program code ". There was an access only to casual users and not trained personnel.
1992. "BlackKnight". It is successfully completed. The small team of developers successfully combining use explanatory zametok and active dialogue
1992. "Manfred" [Co98]. A failure. The small team of developers, limps the discipline, the facilitated methodology. " We shall develop it then ", a failure of work because of constant creation of the prototype.
1992. "CSPITF". It is successfully completed. The small team of developers carefully supervised iterations. The facilitated process, everyone sit next. Successful teamwork of the head of technical process and the project head. The technical head has remained to re-structure internal structure of a code for a following team.
1992. "OTI" [Co98]. It is successfully completed. Small commands(teams) of developers. " Give the good worker the good tool and leave it(him) alone ". Numerous success at work with the facilitated methodology focused on the person.
1993. "Reginald" [Co98]. A failure. The team has grown from two developers up to three commands(teams) in two different counties. One of these commands(teams) blindly followed heavy methodology with an abundance of the documentation, and and has not written lines of a code before closing the project.
1993. "Ingrid" [Co98]. It is successfully completed. 26 person, 2 years. Incremental makro process, mikro process is absent. The first inkrement has failed. Have replaced all programmers, eventually have developed(produced) the facilitated methodology, with a stress on communications.
1993. " Synon in NZ ". It is successfully completed. The Project head approved(confirmed), that the success has been provided by that " four persons worked in one room and used fast iterative toolkit ", and that it does not approach(suit) such projects where developers not can communicate freely among themselves.
1994. "Udall" [Co98]. It is successfully completed. The greater(big) team of developers firstly worked, and has failed. The success is caused by that " have begun with zero and have made of a bad big team small, but good ".
1995. "Winifred" [Co98]. It is successfully completed. 45 person, 20 months. Success very good workers " have provided " inkrementnost the development, well put communications and some. It was used makro process, mikro process was absent. Successful application of average on weight of the methodology focused on the communications.
1996. "Reel". A failure. 150 person whom was veleno to update the documentation at each change in the project. The project is closed. One of participants of development has summed up: " How many do not try, the bad technique all the same will give bad result ".
1997. "Caliper". A failure. 90 person, the project had crucial importance for the company. Has passed(has taken place) six years, but even the first basic version of the project till now is not handed over. Too courageous expectations, new technologies, absence of incremental development, on all positions the personnel which is not possessing adequate working skills.
1997. "NorgesBank". It is interrogated six commands(teams) of developers. Everyone repeat approximately the same: " the Success is provided by the good communications, both in the team of developers, and between developers and users ".
1998. "C3" [C3]. It is successfully completed. After the first failure 26 person have decided to replace with eight. Extreme Programming [EP]. Successful application in a small team of the methodology demanding high discipline from employees. The basic emphasis - the communications.
1998. " NB Banking ". It is successfully completed. The project initially calculated on three person and two months of work, has unexpectedly grown up to 10 person which have worked 14 months. Communication(connection) by means of video. Has not liked. makro process, mikro process was absent. The success managed to be reached(achieved) by means of " the incremental development, correctly picked up people and the good communications ".
1998. "M.A.D." [Ch]. It is successfully completed. The small team of developers was engaged in studying of an environment of end users and used prototypes. Successful use of the methodology which is based creation of prototypes and the communications.
1998. "Insman". It is successfully completed. In a team six person, the methodology " Crystal (Clear) " [Co00] was used. The success managed to be reached(achieved) owing to a special emphasis on " close dialogue, moral spirit of a team, iterations in length in three months and training of developers ".
1999. "Cinch". Proceeds now. 40 person work together, however thus formal delivery of works still(even) are required. Everyone realize the price of a writing(spelling) of the documentation, however cannot pass to more individual approach yet (not clearly why - because of personal qualities, on a habit or in it(this) the culture is guilty?).
1999. " Hill AFB TSP1 " [Web]. It is successfully completed. Seven person, CMM 5-th level, is used PSP/TSP. The small team successfully used the methodology focused on process in which observance of strict discipline was required.

What me has surprised in all these projects? That they clearly testify to the following:

  • Practically any methodology can be applied with success in any project.

  • Any methodology can lead to a failure of the project.

  • Heavy methodology too can be applied successfully in work.
  • Facilitated to methodology lead to success is more often, and, that is more important, developers speak, that the success of the project has been provided by methodology.

I have not found any theory, which would explain, why facilitated methodology is more often (in what not enough place is given all formalities), lead to successful end of the project, rather than heavy methodology where formalities play very much a greater(big) role (casual exceptions in our list make only Cleanroom and PSP/TSP). Certainly, the bad head - rather essential factor which strongly influences all course of works, however it is impossible to carry it(him) to methodology. However, even if to consider and quality of a management(manual) of the project, all the same authentic forecasts it will not turn out.

And here I at last have understood, that is direct before us always there is something that we do not notice: people. Human qualities provide success to this or that project, they are the factor of vital importance, being based on which it is necessary to build forecasts about the project. Now I consider(examine) all upside-down - all over again people, and then methodology, as a minor parameter.

All my experience of the adviser could be described, proceeding only from several properties of a human nature. Now, putting the knowledge into practice, I can predict is much better development of projects and give much more useful recommendations. It seems to me, has come to recognize officially time, that the main thing in researches should be a question: " What qualities people who are engaged in development of the software, and what influence they possess render on designing of methodology? "

Four basic properties

People - devices active, and at them are modes of successful work and modes of failure. Here some basic such modes which I have defined(determined) and with which I use and to this day:

  1. The person - an essence for which dialogue is necessary. And to communicate it(he) prefers in a mode of direct dialogue, personally, as "question-answer".

  2. To the person difficultly constantly to work overtime.

  3. The person - an essence changeable, it(he) varies in dependence both on time, and on space.

  4. As a rule, the person has a feeling of a civic duty, it(he) can well be guided in a situation, take the initiative and do(make) " everything, that is necessary " that the project has come to the end successfully.

There is also a number(line) of other characteristics which I shall not describe here in detail:
  • The person needs time, both for reflection, and for dialogue (see [Co98], [Cs], [Dm]).

  • The person well works, leaning(basing) on examples (this thesis demands the further studying, see [J-L]).
  • The person prefers to fail more likely because of the conservatism, rather than to risk, but to make something unusual image [Pi]; it(he) has more to like to invent, instead of to find ready decisions, it(he) can hold simultaneously in a head of very few(not enough,very poorly) data, it(he) does(makes) mistakes(errors) and hardly changes habits.
  • The separate person can easily prevail over the project.
  • Ability of the person to carry out those or other tasks in a greater degree is defined(determined) by its(his) personal qualities.

The person - an essence sociable

Major factor in development of the software is the opportunity of the communications. In figure 1 a certain curve by means of which I illustrate the methodological reasonings is represented. In this figure it is visible, as efficiency of the communications if its(her) modality and synchronization disappears falls. Some researches (see [Pl] and [Si]) besides the same dependence confirms and Vajnberg which described projects about 30 years ago [Wei] are devoted to this theme.

The most effective kind of the communications is direct, personal contact (for example when you discuss something and draw thus on a board). If we shall clean(remove) one behind another all properties of the dialogue inherent in two people, drawing at a board, we shall see, how efficiency of the communications falls. We shall clean(remove) following properties:

  • Physical reach. I do not know, how it to explain, but physical reach of interlocutors influences their dialogue. Whatever underlay this influence - tridimentionality, synchronization, a smell or undistinguished visual signals - at the communications it is of great importance.
  • Various modalities. The person communicates not only words, but also by means of gestures. The person can often state the judgement gesticulation, for example, lifting an eyebrow or specifying on something a finger.
  • Intonation and synchronization of speech. To emphasize importance of any statement or, for example, the surprise, speaking can accelerate or slow down tempo of speech, do(make) pauses or change intonation.
  • Conducting dialogue in real time (question-answer). By means of questions listening finds out for itself that to it(him) was not clear in speech of the interlocutor or receives additional data which it(him) does not suffice for full understanding of a subject. Synchronization of questions and answers is basic definition of type of the communications.

Figure 1. Kinds of the communications

So, what will occur(happen), if we shall start to clean(remove) one behind another all these properties?

  • We clean(remove) only physical reach. We shall place interlocutors on the opposite ends of visual communication. Basically, thus the basic properties of physical presence, and nevertheless, effect any more that are kept all. When we have tried this way in Norway where one part of a team of developers was in Oslo, and another - in Lillekhammere it has appeared, that a team found true design decisions, only when all managed to gather. Even that time, which people spent together to reach an electric train, it was more productive for work, rather than a videoconference.
  • We clean(remove) gesticulation and visual synchronization, we leave intonation and vocal synchronization (in other words, we we use for dialogue phone). The majority of people during conversation by phone draw. If the person draws a line which connects two rectangulars, it means, that it(he) is going to tell something important, that it is necessary to note especially. Visually-acoustical synchronization of the information fixes its(her) essence in consciousness of the person. When people speak by phone, this synchronization disappears, and together with it(her) from the communications gesticulation, a look of the interlocutor, etc. disappear
  • Now we shall clean(remove) voice synchronization and intonation, we shall leave only an opportunity to ask questions (e-mail). Without voice synchronization we cannot neither make an effective pause, nor wait, whether will be at the interlocutor of objections or questions, to accelerate or slow down tempo of speech, to make the statement. Having deprived with itself an opportunity to use intonation, the person cannot express with its(her) help the idea expressed in the letter is how much surprising, boring or obvious.
  • Now we shall clean(remove) an opportunity to ask questions (but we shall restore one of listed above factors). Not having an opportunity to hear questions of the interlocutor, speaking should guess itself, that that knows or does not know, what questions could set and include in the speech answers to these nonexistent questions. And it(he) should make all this, not having a feedback with the listener. This kind of the communications supposes presence visual (videocassette) or acoustical (audiocassette) of the information.
  • And, at last, we clean(remove) all properties of the communications - visual, acoustical, voice, to ask questions - that we receive synchronization of dialogue, an opportunity? Correctly, paper documentation. On resulted(brought) above model you see, that the documentation is the least effective way of the communications from all possible(probable). The one who writes the documentation, should build guesses concerning the audience without any feedback, it(he) does not have opportunity to use either synchronization and others emfaticheskie signals, or gesticulation and intonation.

But if the model constructed by us is fair, with its(her) help it is possible to understand how to improve operating conditions. And it is quite real. Moreover, there is a set of complex(difficult) projects which most advantageously put the ideas stated by us here into practice.

" Plant(Put) all developers in one room ". " It is not necessary for Me more than four person, differently we shall not be located in one room and we can not communicate ". Here standard recommendations which are given by heads of successful projects. Such heads plan work, being based on the most effective kind of the communications - direct dialogue between people.

" Be convinced, that in all building boards for drawing and corners where it is possible to have a drink coffee " suffice. Such companies as Hewlett-Packard and IBM for a long time have understood all efficiency of informal dialogue, and now in our industry there was usual a position, that the most effective environment for designing development ON can be created specially encouraging and resolving(allowing) assemblies of small groups of developers. Vajnberg has fixed(recorded) special cases when informal conversations of developers rendered significant effect on the general(common) productivity of work of all group [Wei]. Quite often successful decisions come, when people " simply talk ".

Now there are rather new three methodologies where one of substantive provisions - accommodation of all developers in one room or is simple in immediate proximity from each other. It Adaptive Software Engineering [Hi], Extreme Programming [B99], [EP], and Crystal (Clear) [Co00]).

The model of the communications which we have considered(examined) above, allows to give, among other things, the recommendation on arkhivirovaniyu to the documentation:

Let the person, engaged designing, it is short (5-20 minutes) will tell to the several colleagues not familiar with its(his) development, that it(he) has made. These people will act in role of those spectators which will look the future record on a videocassette. Let they simply discuss the offered variant of designing and ask questions as required. Discussion write down on video. In the end reproduce those figures and examples around of which discussion was conducted, or put(apply) to videorecording those figures which were used at designing. They will serve as a mnemonic sheaf between discussion and its(his) subject.

I very much was delighted, when Lizett Velaskes (Lizette Velasquez) from " Lucent Technologies " it(she) has told to me, that not only with success uses this technics(technical equipment) in work, but that I have forgotten to mention one more important moment: it is very important to mark(celebrate) especially those places of discussion when " there was something interesting ". Usually discussion proceeds easy enough, but there are moments when any question causes the whole stream of additional questions and comments. In that case, spectators for certain will want to return and see(overlook) this place once again.

Now still it is possible to place similar discussions in a network and to supply with their hyperlinks.

And that who till now prefers books to all other means of transfer of the information, I shall suggest to make the following: take, for example, remarkable, but very difficult book Design Patterns. Now present, that instead of assorting value of a pattern "Decorator" from book page, you have an opportunity to click a mousy and to see a videoclip in which authors explain this pattern. Certainly, in this case for transfer of the ideas they will use intonation, gesticulation and synchronization of dialogue.

What conclusion needs to be made rather this property of a human nature? We should try to lift the communications in a team of developers on as much as possible high point of our curve - so, how much(as far as) it circumstances allow.

People are changeable

When it is a question of people, to speak about modes of failure it is necessary cautiously. Englishmen have an ancient proverb: " If you will give a dog a bad name it is better than it(her) to shoot down at once ". Really, as you will see from resulted(brought) below examples, simple changes in style of management and local culture can lead to huge changes of visible behaviour of people. And still, all my experience speaks what to expect from people of sequence and a constancy of actions it is practically impossible. As Jim Khajsmit (Jim Highsmith) [Hi] writes:

"... In this box not vintiki and gears, and people. People can do(make) constantly, over and over again, similar things, but they never can make the same. In step-by-step methodology we expect, that, setting identical data on an input(entrance), we shall receive identical results on an output(exit). However reaction of the person to the introduction information can depend on various conditions, and the most part of these conditions can not have any attitude(relation) to a task carried out by this person ".

People like absence of exact instructions concerning their own behaviour. One of two most difficult for the person of tasks which I can present is of to force the person to do(make) something very accurately and uniformly day after day (other most difficult task will ask it(him) to change the habits). Below I result(bring) endurance(quotation) from recently heard dialogue which as well as possible illustrates this idea.

" How to me to consult with all these papers which come to my office? " - asks one. Another answers: " Well, it is completely not complex(difficult)! Simply watch(keep up), that your table always was empty - four baskets on corners, some folders in the top box... ". It(he) could not finish. " That the table was empty?! " - have cried all. " But in fact it is impossible! "

Pay attention, that the adviser has suggested them to change simultaneously the habits, and also to make the certain action constantly and uniformly.

If people possessed sequence and a constancy, they could clean(remove) papers from a desktop, prevent caries, get rid of excess weight, stop to smoke, and can be, even to develop the software, keeping within in an operating schedule.

As Charles Vigert (Karl Wiegert) has sarcastically noticed: " We are not short on practices, we are short on practice "(" we do not have not enough practices, instead of rules "). And such rules, really, it is a lot of. David Griz (David Gries) in the book " The Science of Programming "(" the Science of programming ") gives detailed instructions how it is necessary to create correct programs [Gr]. Good means of designing is represented with CRC-cards [B87]. In methodology under the name " Extreme Programming " [EP], known pair programming and automatic testing [Je], too uses well-known effective techniques. Components of methodology "Cleanroom" [Mi.] Uots KHamfri are in detail described all (Watts Humphrey) gives detailed instructions to programmers who wish to work more effectively by means of " Personal Software Process " (PSP) [Hu]. Consecutive and constant application of any of these(it) metodology is remarkable would improve any project from what I saw.

Problem in one - in words "constant" and "consecutive". If PSP and Extreme Programming to apply only from time to time they lose the sense. The code written half cannot be correct. In the same way, as well as in case of with superfluous papers on a table, the methodology needs to be applied completely, consistently, day by day.

Inconsistency - the usual reason of a mode of failure at the person. Exist methodology which demand from the adherents of strict sequence of actions. Such methodology I name "highly disciplined". As show the interrogations spent in various projects, such methodology are most vulnerable, however in some projects they are used successfully enough. Here an example of application of methodology PSP in the organization with fifth level CMM. It(he) seems to me rather instructive: [Web]:

In the summer of 1996 small group of programmers have acquainted with methodology PSP. In spite of the fact that everyone have been adjusted(have been set up) concerning training rather positively, right after its(his) terminations(endings) the new methodology began to be used more lesser(ever less) and less. Soon anybody from those who was specially trained in this methodology, did not use it(her) in work. When these people have asked, why they do not use PSP, the answer was practically the same: " PSP - very strict methodology, therefore if nobody demands from me the report, to me to work in an old fashion " easier.

That such there was no, in metodologiyakh, demanding a high discipline, there should be certain adjusting(regulating) elements which would force people to be more consecutive. In methodology "Cleanroom" there is a rule forbidding compilation which is supported by the certain way of management. For Extreme Programming "instructor" ("coach") which watches(keeps up) observance of all instructions of this methodology is necessary. In PSP such functions have not been stipulated, therefore it is no wonder, that the group of developers of our example has ceased to use to it(her) - at this methodology it was not simple any structure of support. It is supposed, that these factors will be stipulated in TSP [Web].

However, despite of all this, there are people who can do(make) during long time the work consistently and distsiplinirovanno (it once again shows, how much(as far as) all we differ from each other). Sometimes to affect(influence) discipline of group it is enough to change its(her) head. Thanks Tryugve Reenskaugu (Trygve Reenskaug) for history which perfectly shows how style of management influences personal qualities:

Nearby from here there was small notions magazinchik, a terrible place. The goods in the disorder, saleswomen polish nails or stir(chatter) by phone, nobody pays attention to buyers. Soon it(he) was closed, and on the same place other shop has opened. About, here business(affairs) have gone(send) in another way! This shop was pure(clean), accurate, saleswomen are always precautionary... Only here strange business - saleswomen in fact were the same!

Actually well-known, that personal style of the head has huge value. To year in 1997 those who worked above project Chrysler Comprehensive Compensation [C3] have learned(have found out) it on own experience. First main principles of development were " to think beforehand ", " indistinct, but extensible planning " and " a program code - the private affair of the developer ". Then all team was reconstructed (the main motive power of these changes there was Kent Bek (Kent Beck)), and by main principles of steel " do(make) all simple and clear, then it is possible to make necessary additions ", " all code should be popular, and any pair programmers can make to it(him) any changes ". Thus, the same people could accept principles of work absolutely new to and pass(take place) a way from the full disorder, absence of the communications and default from obligations on deliveries to consecutive application new vysokodistsiplinirovannoj techniques and to regular performance of obligations within three years of work.

Feeling of a civic duty and ability to be guided in a situation

The problem of human inconstancy concerns to so-called to " a mode of failure ", but at the person is also " modes of successful work ". Here their three versions:

  • As a rule, the person has feeling of a civic duty,
  • The person prefers to take the initiative,
  • The person well is guided in surrounding conditions.

When I spend(take) interrogation under any project, I always ask people, that, in their opinion, have led to final success of work. More often I receive the same answer: " During the key moment of development some(a little bit) person have incured the initiative and have made all from them depending(dependent) to execute the project ". Here one of such typical answers, who is published NASA in work " Deorbit flight software lessons learned " (" the Lessons received as a result of works above the software for withdrawal of spacecrafts from an orbit ") [NASA]:

Probably, the most important (in the long-term plan) the fact was that during work above the project the rallied team of the developers was formed, capable to carry out fast system engineering GN*C. Formation of a team developed of search of new talented people, their training, accumulation of an operational experience with toolkit, process and methodology, and the subsequent integration into the uniform soldered collective.
Having worked together above the project the whole year, all team has acquired good knowledge in a subject domain, and also in methods and means of development. Creation of an atmosphere of friendship and mutual aid among developers promoted their mutual training and in every possible way encouraged it(him). Readiness of members of a team to be engaged in any and all aspects of the project repeatedly appeared invaluable help in work... (my italics, A.K.)
... Such team will be necessary in the further both to the given department, and all agency ".

What has forced people to behave thus? One of the possible(probable) reasons - feeling of a civic duty.

Perhaps, our projects would come to an end with success if we simply tried to strengthen " feelings of a generality of interests and a civic duty " in a team of developers is more often. However, I do not wish to tell, that it is basic my recommendation, because on the average these feelings and so are well developed, and bad heads do not miss a case to take advantage (the sm, for example, " Death March " [Yo]).

This simple idea specifies an element which seldom enough recollect at designing methodology: " the Generality of interests and feeling of a civic duty " should be in the list of the basic ideas and parameters of development of the project, at least, level with " viewing of a code and testing ". I was very glad to learn(find out), that among several projects with which I had to work recently, is also such at which these two ideas are allocated as a separate kind of activity. At them these two principles serve for maintenance of channels for interpersonal dialogue (unduly to speak, that in all these projects the basic emphasis is done(made) on direct, personal contact between developers). However, I yet did not see, that these principles have been officially included in the description of any methodology or working process.

The second " the mode of successful work " is when people take the initiative. This principle works in full conformity with two others - feeling of a civic duty and good orientation in a situation. Together all three lead to that everyone consider(count) as the most usual reason of success in work: " during the key moment of development some(a little bit) person have incured the initiative ".

" It is good to be guided in a current situation " - a phrase uncertain enough, but having far-reaching consequences. People who are engaged in sorting of documents, often simply display all papers on small kuchki (using thus sorting by a method of the Shell). The most surprising consists that is frequent they these(it) do not assort kuchki further, on separate documents. It is quite enough often approximate knowledge, in fact in case of need they can always thumb through this or that kuchku and find demanded (the future researches will show us, what mnemonic technics(technical equipment) for this purpose are used).

Here an example already from area of development ON. We try to make the documentation under the project qualitative, we update the out-of-date versions. However, knowing, that - one of the most usual of " modes of failure " at the person, it is possible to predict(forecast) inconstancy safely, that the documentation all the same will not be updated often enough. As to me I yet did not see any successfully come to the end project at which would be by way of the documentation (unless the code or the documentation were created automatically). But saw the project which has failed just because to developers ordered to update the documentation after each made change. Cost of development thus has so grown, and productivity so has fallen, that the project should be closed soon.

I asked those who is engaged in support of system as they manage to make to the program of change, using the out-of-date documentation. They answer, that " look here and there ", that is they in any case not begin to rely on the documentation. They will read a program code.

Now I already know, that by ability of people " well to be guided in a situation " it is quite possible to rely - and by development of the project, and by development of methodology.

As to create and support(maintain) the documentation which would correspond(meet) to a current state of affairs in system, the expensive (especially considering inability of the person to routine actions), I would suggest to support(maintain) the documentation at "good enough" level. Differently such, that in it(her) always it was possible to understand approximately where to search for more concrete information. And for the rest will be even small abilities and diligence enough. However, "good enough" condition of the documentation - an impracticable task for the majority of projects (nevertheless, it somehow does not play the big role as the person will ask the one who knows more likely, instead of will rummage in the documentation).

Tryugve Reenskaug has told to me somehow one more history. Once it(he) has offered system of automatic designing to the engineer who was engaged in development of sea oil-extracting platforms. Tryugve has offered, that the system automatically traced all kinds of works which were spent on any part of a platform, and specified their parameters. However in the answer has heard: " will be enough, that phone numbers were stored(kept) in system only. I shall call and I learn(I find out), that has been made ".

In methodology I designate it the term " low accuracy " (low precision) [Co98]. I come to conclusion, that the majority of projects can be conducted, being guided (true) not so exact descriptions: not so exact documentation under the project is easier for reading, putting in order and discussing. The architecture of system represented with a low degree of accuracy, it is easier to remember; in tables with not so precisely described requirements it is easier to place priorities and it is easier to estimate(appreciate) scales of the made work at early stages of the project. The design documentation executed not so precisely transfers(transmits) "idea" of the project then the reader can start " to be guided in a situation " is better.

Creation of artefacts with a low degree of accuracy allows to lower cost of works due to strong qualities of a human nature. For this purpose it is necessary to do(make) a special emphasis on such properties as " good orientation " and the direct interpersonal communications, and to try to not pay attention that updatings occur(happen) not so often as it is necessary. I use these principles since 1994, and I can safely recommend them as the main methodological element.

All people different

One people like to make lists, and others - are not present. One prefer to work at night, others - in the afternoon. One like to establish(install) dedlajny, another - is not present. It is In the same way separated also in group of people. In one cultures the public criticism is in every possible way welcomed, in others the vanity of people is protected better, etc.

Methodology, as a rule, represent a set corrected for co-ordination of work of group of people, and that approaches(suits) one person or group, categorically will not approach(suit) another. That suits work in the group making of the decision together, is not necessary for culture where it is accepted to wait for the decision of the boss.

Coming back to the list of projects resulted(brought) above, I wish to note, that two examples of successful application "vysokodistsiplinirovannoj" methodology were observed in the project for federal sector IBM and for Military-air forces. In the field of commercial development I such did not see. It is possible to make such imprisonment before trail from this: in the state and military sector of economy there are certain additional factors which provide successful application of heavy methodology. Those few interrogations which I spent in these areas, dazzle with phrases: " we would like to work in easier(lighter) and effective manner, but.. ". References(links) or to standards of manufacture ON for the military industry, or on difficulty in monitoring work of subcontractors further follow. It would be interesting to learn(find out), whether such factors are internally inherent in these areas or military and state cultures simply "prefer" ponderousness in development.

Now methodology are created to define(determine) type of behaviour and a manner of work of the whole organizations. As we already spoke above, the organization can simply refuse methodology (that often and occurs(happens)).

Variations of behaviour of cultures metodologu to consider even more difficultly, than variations of everyday behaviour of separate individuals. For today I do not know any methodology at which creation would take into consideration cultural features (my methodology - not exception). However, I know people who consider local cultural features at a formulation of methodological recommendations.

And others

Here some more properties of a human nature on which I rely. They are resulted(brought) here briefly, in the form of the list:

Training. The person is trained by means of supervision and practice. It kognitivnyj and a social principle, well-known in the certain circles [La], however till now not used properly by development of the software. I try to find an opportunity to put this principle into practice, but yet have not thought up for this purpose suitable methodological structure.

Stream. In a context of program development "stream" means time allocated(removed) for quiet effective reflection above a task [Dm], [Cs], [Co98]. This time should be counterbalanced by time allocated(removed) for communications. How to establish(install) similar balance at the intense process of work above the project - above my understanding. Nevertheless, many especially emphasize, that time allocated(removed) on quiet reflection, plays an appreciable role in final success of the project.

Work by examples. kognitivnye psychologists convincingly prove the some people, that our mechanism of deduction is based(founded,established) on creation of separate examples of problems [J-L]. CRC-cards and variants of use (use cases) - two ways of development of the software, constructed on examples. By the way to tell, those who them use, repeatedly testify to their efficiency. Beginners often prefer " diagrams of copies " (instance diagrams) to correct object-oriented designing. However, skilled designers use them even. The idea of creation of the documentation based(founded,established) on examples, yet has not found the due response at metodologov, and represents a theme for the further work in this area.

Kinetic and multi-touch thinking. CRC-cards, playing of roles at the analysis and designing, drawing on a board, creation of prototypes of interfaces on a paper, these kinds of activity mean all, that during reflections the person speaks and moves. While on this theme there are no researches, I can tell only, that in program development it is possible to use productively all these(it) of technics(technical equipment).

Personal properties of character. You and, probably, not time saw the extremely unsociable main designers who leave to the mercy of fate the team. And, not looking on what, these fine programmers continue to borrow(occupy) posts which demand from the person of the big sociability! Quite often we can meet and heads of projects who are not able to make of the decision. However for final success of the project very important, how much personal qualities of the person approach(suit) for a post borrowed(occupied) by it(him). These qualities need to be considered and from the point of view of professional growth of the person, however quite often such posts are unique way of promotion on a service ladder.

Defeat because of conservatism. People prefer to suffer(bear) defeat, but to operate(work) on-старинке, than to go on risk for the sake of success [Pi]. It explains, why people already so much years use a method of a falls in spite of the fact that it(he) already some tens years do not bring anything in work, except for problems, and has set of alternatives on behalf of a spiral, incremental and iterative kind of development.

Change of habits. The most difficult thing on light from everything, that I know is to force the person to change the habits. Thus people change habits almost spontaneously if to change their system of values. For 20 years of work I saw, how it did(made) (purposely and meaningly) time two, and I shall tell, that it impresses.

" Small heads ". Even from skilled designers constantly you hear: " I can keep in a head only a small share of the information ". There are some ways of conducting the documentation which are called to facilitate similar tasks, however any of them yet does not unite in itself use of the working artefacts created with " a low degree of accuracy ", and the active interpersonal communications.

I am assured(confident), that there are also other properties of a human nature which render strong influence on process of development ON, and also on those recommendations which we should give, metodologi. I have described here only what now itself I use in work.

The conclusion

The basic properties of a human nature have paramount value for development ON, instead of minor as it is considered to be. Hence, the main task of our researches should be studying of influence of the human factor on process of development. I suggest to make this theme the basic in the field of program development the nearest 20-50 years.

In this clause(article) I have resulted(brought) some prominent features of a human nature which play an essential role by development of methodology.

First, we, people, rather strongly react to time(temporary) synchronization and modalities of the communications. I consider(count), that physical reach to the interlocutor and convenience of dialogue have here crucial importance.

Secondly, people are changeable. I consider(count), that all of the methodology, demanding from the followers of strict discipline, it will be complex(difficult) to carry out in practice.

Thirdly, all people different, and not only depending on time, but also depending on group in which are. Now by development metodology cultural distinctions are not considered, however it is necessary for correcting in the near future.

Fourthly, people have feeling of a civic duty, well are guided in a situation and take the initiative. Of these qualities also there is the most frequent reason of successful end of work above the project: " During the key moment of development some(a little bit) person.. ".

Human inconsistency is resisted with such positive qualities, as ability to dialogue and orientation in a current situation. I am inclined to believe, that in methodology it is possible to use the various artefacts executed with a low degree of accuracy (developers will fill blanks during the communications) with success. This assumption proves to be true archives of already completed projects (it(him) it is possible to consider(count) true under condition of presence of necessary qualification, both at developers, and at heads).

In the name of clause(article) I name people "components". It is accepted to do(make) it in the works, the processes devoted to designing and metodology. A mistake(an error) in such approach is that "people", unlike "components" rather changeable and nonlinear, and each person in case of success or failures behaves in the unique image. These factors have prime value, they cannot be neglected. Inability of founders of processes and metodology to take them into consideration results(brings), as we quite often see it, to various unexpectedness in realization of the project.

And the last. I hope, I managed to show, that us categorically does not suffice researches on this theme. Can be now, reading clause(article) which I have written 30 years later after Vajnbergom, researchers will accept my call. From my point of view, psychological and ethnographic researches during which it will be possible to reveal other major factors which I here do not mention are especially necessary.

The bibliography

[B87] Beck, K. and Cunningham, W., " A laboratory for teaching object-oriented thinking ", Proceedings of the OOPSLA Conference, 1987, ACM Sigplan Oct., 1987, pp.1-7.

[B99] Beck, K., Extreme Programming Explained: Embrace Change, Addison Wesley Longman, 1999.

[Br] Britcher, R., The Limits of Software, Addison Wesley, 1999.

[Ch] Christensen, M., et al., " The M.A.D. experience: multiperspective application development in evolutionary prototyping ", in the ECOOP ' 98 proceedings, Lecture Notes in Computer Science, Vol. 1445, Goos, G., Hartmanis, J, van Leeuwen, J., eds., 1998, pp. 13-41.

[Ci] Citrin, W., Cockburn A., von Kaenel, J., Hauser, R., " Using formalized temporal message-flow diagrams, " Software Practice and Experience, 1995.

[Co94] Cockburn A., " In search of methodology, " Object Magazine, July 1994.

[Co95] Cockburn A., " Unraveling incremental development, " Object Magazine, Jan. 1995.

[Co98] Cockburn A., Surviving Object-Oriented Projects, Addison Wesley, 1998.

[Co98p] Cockburn A., Position statement for " Software development and process " panel, ECOOP ' 98, online at http: // members.aol.com/acockburn/papers/Ecoop98panel.htm

[Co00] Cockburn A., Crystal (Clear): A human-powered software development methodology for small teams, Addison Wesley, in prep. Online at http: // members.aol.com/humansandt/crystal/clear.

[Cs] Csikszentmihalyi, M., Flow: The Psychology of Optimal Experience, Harper Perennial, 1990

[C3] The C3 Team, " Chrysler goes to ' Extremes' ", in Distributed Object Computing, October, 1998, pp. 24-28.

[Dm] DeMarco, T., Lister, T., Peopleware 2nd Edition, Dorset House, 1999.

[EP] Extreme Programming, web notes, start from www.extremeprogramming.com.

[Gr] Gries, D, The Science of Programming, Springer Verlag, 1987.

[Ha] Harel, D., Politi, M., Modeling Reactive Systems with Statecharts, McGraw-Hill, 1998.

[Hi] Highsmith, J., Adaptive Software Development, Dorset House, 1999.

[Ho] Hovenden, F., " An ethnographic account of writing use cases on an IT project ", Humans and Technology Technical Memo, 1999.10.30, online at http: // members.aol.com/humansandt/papers/ethno1.htm.

[Hu] Humphrey, W., A Discipline for Softwrae Engineering, Addison Wesley, 1995.

[Je] Jeffries, R., " Extreme testing ", in Software Testing and Quality Engineering, March/April, 1999, pp. 23-26.

[J-L] Johnson-Laird, P. and Byrne, R. Deduction, Lawrence Erlbaum Associates, 1991.

[La] Lave, J., Situation Learning: Legitimate Peripheral Participation, Cambridge Press, 1991.

[Mi] Mills, H., Dyer, M., Linger, R., " Cleanroom Software Engineering, " IEEE Software Vol 2 (1984) No. 9, 19-24.

[NASA] JSC38609, " Deorbit flight software lessons learned ", NASA Johnson Space Center, Jan 19, 1998 online at

[Pi] Piatelli-Palmarini, M., Inevitable Illusions: How Mistakes of Reason Rule Our Minds, Wiley and Sons, 1996.

[Pl] Plowman, L., " The interfunctionality of talk and text ", Computer Support of Cooperative Work, vol. 3, 1995, pp.229-246.

[Si] Sillince, J.A., " A model of social, emotional and symbolic aspects of computer-mediated communication within organizations ", Computer Support of Cooperative Work vol. 4, 1996, pp. 1-31.

[Web] Webb, D., Humphrey, W., " Using TSP on the TaskView Project ", in CrossTalk, The Journal of Defense Software Engineering, Feb 1999, pp. 3-10, online at http: // www.stsc.hill.af.mil/crosstalk/1999/feb/webb.asp

[Wei] Weinberg, J., The Psychology of Computer Programming, Silver Edition, Dorset House, 1998.

[Yo] Yourdon, E., Death March Projects, Prentice Hall, 1997.



© Copyright Alistair Cockburn, 2001, all rights reserved
© Copyright maxkir.com, translation(transfer), 2001

Email me