" Creation of the software as collective game ", Alister Koubern
On materials of clauses(articles) Alistera Kouberna for the period 1997-2004 гг1
The program engineering (software engineering) represents an incorrect metaphor for the majority of projects on development ON. Using a technical metaphor, we forget about true nature of programming - activity social and intellectual, but in any way technical. It is no wonder, that the problem of " mythical человеко-month " is alive till now, in fact arguing about development ON, we continue to consider(examine) people as " zamenimye components for programming " and to employ " group of Java-programmers ".
Peter MakBrin, the author of the book " Software Craftsmanship " 2
Introduction (from translators)
What is the development of the software? What includes this concept, and it(he) can be carried to what kind of activity? What rules need to be followed, that the project has terminated successfully? Why under equal starting conditions the project And with a crash fails, and the project Would bring money and glory to the developers? Everyone who works in our area and is engaged in management and statement of process, sooner or later starts to ask to itself these questions.
Answers to them are not present. More truly, their set, that, as a matter of fact, the same. And the unique variant becomes a combination of own experience and study at another's opening and mistakes(errors).
Alister Koubern (Alistair Cockburn, http: // alistair.cockburn.us) - one of the few metodologov with which all the researches support with a long-term operational experience among programmers. Its(his) clauses(articles) and the book - not the academic researches, it is the annals of successful and unsuccessful projects, invaluable experience which it(he) generously shares, not hiding the last mistakes(errors) and errors.
" Development of the software today can be compared to creation samurajskikh swords, boards, tactics and strategy of conducting fight. You create some swords and send them in battle. You simply do not have other way to learn(find out) what of swords will prove to be in the best way. Then you analyze the received experience, create a following party(set) of swords, and so on. It is impossible to define(determine), what of swords will appear better another, sitting at home. It is necessary for you to see these swords in business - in fight. I can not present myself, as though I could learn(find out) that I know now, simply reflecting in an armchair from myself at office. Moreover, that I thought out and predicted(forecast) thus, it has appeared full nonsense. Therefore, if you similar questions interest, you should work as the programmer or the adviser. Only so you can directly observe of process and collect initial data for the theories " .3
Substantive provisions which Alister protects in each work, concern(touch) chelovekotsentrichnosti process of development ON. The main thing in any project - people, they solve all. They can pull out the project from deep crisis, but, on the other hand, they create problems with discipline, do not carry out a rule and the instruction. Hence, concludes Koubern, it is necessary to define(determine), what approach will be is better to use strengths of human character, suppressing and adjusting(regulating) weak.
For last seven years Alister has written some clauses(articles) and books on this theme. Some of them have entered into already classical set of works on so nyzyvaemym " flexible metodologiyam " .4
One of its(his) favourite themes whom it(he) lifts in many works - model of development ON as the collective game directed on achievement of certain result (creation of the software) under the certain set conditions (limitation in human, time(temporary) and financial resources). This model allows to look in a new fashion at branch, working in which we have got used to operate with exclusively technical and engineering metaphors. Problems of success and neuspeshnosti the project get other painting, allow us to find non-standard outputs(exits) from complex(difficult) situations.
But we shall address to works Alistera on this тему.5
The engineering model of programming does not justify itself
Development of the software not always concerned to engineering sciences. That it(her) have suggested to consider(count) in 1968 to provoke people to participation in work of new branch [Naur-Randell]. Provocation has appeared very successful. Unfortunately, it(this) it is impossible to tell about utility of such model for those who in it(her) works. Even after 35-years experience of use of engineering model the percent(interest) of successful projects in sphere of manufacture ON continues to remain low [Standish]. We cannot define(determine) interrelation between success of the project and "cleanliness" of process of its(his) development [Cockburn 2003a]. At last, we see, that this model does not help(assist) professionals to solve practical questions, to find a way out of complex(difficult) situations in real projects.
The some people can object, that the "engineering" model does not work, because we insufficiently well follow it(her). However during " analysis of flights " it is quite often found out, that projects in which developers did not follow any precise process, terminated successfully while strict processes far not always led the project to safe end. Certainly, it is possible to result(bring) and return examples, but it at all does not clear up a situation. More likely, on the contrary - so it is even more difficult to guess, that is the keystone to success of the project. However, what it was, it has no the slightest attitude(relation) to "cleanliness" of used process or zeal of following of "engineering" model. [Cockburn 2000a, 2003a].
The engineering model of programming does not pass(take place) one vital test, namely, does not offer correct decisions in complex(difficult) situations. If we shall advise the project head or the programmer " to do(make) more than program engineering ", whether they can even
- Correctly to interpret this phrase?
- To understand, what exactly is meant words program engineering?
- To gather from these words efficient advice(council) which will help(assist) them at work above the project?
When I ask a question " As you understand words: you need to be engaged in program engineering more? ", people look at me bewildered. If has put all the same reaches the answer usually speak about more careful modelling system with the purpose of creation of initially correct architecture; more exact estimations of time and expenses; and in general, about creation of the software like manufacture of products of mass consumption. As we shall see further, all this does not concern to engineering and that is worse, is not the mortgage of success of the project on development ON.
Thus, our branch should find other model which could
- To explain, why one projects go right, and others - are not present;
- To list those aspects of development which are really necessary for success of the project;
- To prompt participants of the project the correct decision of the problems arising on a course of the project.
Model of collective game
Kinds of games, collective games, sequence of games
Though dictionaries define(determine) game as "entertainment", value of this term for last century has essentially changed. The idea of is impossible to many heads that it is possible to consider(count) manufacture of the software game: " We here serious things are engaged ", - one of them has discontentedly bellowed at me. Naturally, heads would not like, that people spent working hours in entertainments. The reason is simple - manufacture of the software is, from the economic point of view, the game extremely limited in resources (below we shall consider(examine) it more in detail). Yes, the term "game" often enough means a certain element of entertainment, and in my opinion, it is fine, when people consider(examine) work above the project as entertainment (it refers to "command" or " working spirit "). However now the term "game" even more often loses the easy(light), frivolous and unproductive component.
In a modern science in a category of games such quantity(amount) of various kinds of activity that is sometimes difficult to find in them something the general(common) gets. Vitgenstein [Wittgenstein, 1953] considers(counts), that an obligatory condition of game is following to rules. As soon as participants of game cease to follow its(her) rules, game stops (thus, game can be named only voluntary activity provided that participants always have an opportunity to stop it(her) and to operate(work) with other image). Any game consists of "movements" in a direction to or from the purpose and a certain account of distance between the purpose and the player.
Some games are calculated on one participant, in others play the whole groups of people. One games are directed on achievement of the purpose, others - on interaction of participants. Thus duration of games can vary from several minutes or even seconds, about one years or all life of the player. Defining(determining) a place of manufacture of the software among other games, I am guided by three basic characteristics:
- It can be final or infinite.
- It can be based(founded,established) on a competition or on mutual aid.
- It can be stopped after achievement of a specific goal (including the termination(discontinuance) of game on the expiration of the certain term) or at it(him) in general can not be any certain final point (when will end then will end).
The purpose of infinite game - in its(her) continuation [Carse]. People, the organizations and the whole states play infinite game under the name "survival". Some people play game which refers to "Promote" (it is possible to raise(increase), for example, the market cost due to the project), etc. Easily(Easier) to guess, that separate infinite games can stir(prevent) to an optimum course of the big project, therefore struggle against such handicapes usually is a part of strategy of a management(manual).
Among final games it is possible to allocate what objects in view come to an end after achievement in advance; others come to an end at any moment when that will be wanted by participants. In both these categories there are games-competitions and the collective games based(founded,established) on interaction and mutual aid of participants. Tennis and a chess, for example, carry obvious spirit of rivalry and come to an end after achievement of the purpose. " King of mountain ", game in which children like to play, (one player protects top of a hill from other children(guys) who should push off therefrom it(him)) too is under construction on rivalry, however comes to an end only when absolutely will darken, or when participants will call home: the place of the first king borrows(occupies) following, then following and so indefinitely. Poker - one more example of game of the same sort. And here the jazz or dances can be carried to the open collective games. In both cases participants of game concentrate the attention to quality of interaction and performance(statement) of all group, and such game proceeds so much, in it(her) participants how many will want to play.
So, we still had one more category: collective games which come to an end after achievement of a definite purpose. Here it is possible to carry mountaneering and rock-climbing, any research expeditions(dispatches) and, at last, development of the software. The final purpose for group of climbers - to subdue top. It will be a criterion of success of expedition(dispatch). However after returning climbers will ask, has how much well passed(has how much well taken place) an ascention, whether there were the interesting transitions, dangerous situations, etc. Nevertheless, all over again the group should finish an ascention.
Whether the lie, in it(this) is something from development ON? The Main and basic purpose - to put the customer working system. So the success or unsuccess of the project will be estimated(appreciated). Subsequently people will already ask, this project was how much interesting, whether well over it(him) supervised, whether beautiful the program has turned out, and whether it will be easy(light) to support(maintain) it(her) in the future. If the command(team) of developers will not put the customer any program, everyone will find(consider), that the project has terminated in failure. Sometimes there is an opportunity to leave game when it becomes clear, that the purpose of that is not necessary, and this opportunity does not need to be neglected. Pay attention: it is fair both for mountaneering, and for development ON.
However, between mountaneering and development of the software there is one essential difference: development ON proceeds from one project to another while climbers make only one ascention. Having finished(stopped) creation of one program, developers there and then start to work above its(her) following version, above other program which continues or supplements the first, etc.
Thus, unlike climbers, programmers put before themselves two purposes:
- To put the customer system;
- To create a basis for following game.
The estimation of the come to the end project too is made doubly: first, it is estimated(appreciated), whether the program in general has been put and, secondly, how much(as far as) the advantage-ground is borrowed(occupied) now with a command(team) of for the beginning following game.
Both these purposes compete among themselves and apply for the limited resources of a command(team). Developers can put the customer a product much more quickly if in the future it will not be necessary to change and supplement this product. (and how much more quickly it could be made if to not be engaged in correction of mistakes(errors) in the program!) on the other hand, developers can waste time on creation of thought more over architecture of the appendix, a writing(spelling) of the documentation and transfer of system to a command(team) of successors - but all this will postpone term of delivery of ready system (and sometimes can and prevent in general to successful end of the project).
At all this the command(team) is limited in time(temporary), financial and human resources - they simply will not suffice on that ideal image to cope with both problems(tasks). The majority of developers remain are happy(enough) with that have managed to reach(achieve) the first purpose and to make though something for achievement of the second. Even those companies which possess enough of resources, hardly probable presume to pay to themselves to the second purpose the big attention as it(she) is truly boundless. As a whole, to best of realistic variants will put the customer system of comprehensible quality during stipulated time and to make though any preparations for following games.
More evidently to show, strategy when we deal with sequence from several games how much(as far as) varies, we shall take other example of collective game. Imagine race through marshland, which purpose - to create a certain artefact (probably, in the beginning participants at all do not know which) in any certain place. The command(team) participating in competition, for certain will pick up to itself scouts and other experts who will create cards(maps), to lay a route, will not erect bridges through fenny places, etc. thus our command(team) to try, that its(her) cards(maps), tropki and bridges have been made at a high commercial level. Otherwise, they will spend for this all available resources. Instead of it(this) they will define(determine), what width the road should be cleared away for them, be how much strong owes the bridge, which landmarks to leave on a bog, and t.d.: all with one purpose - as soon as possible to execute a task in view.
If such competition passes(takes place) in some receptions in the end of the first game (when they will find or will create a demanded artefact) there will be a command(team)-successor which should transfer(carry) the received artefact on a new place. In this case, the first command(team) should spend some time for improvement of quality of roads, bridges and cards(maps) because the following command(team) will use them. Thus everyone will remember, that this work removes end of their primary goal. The first command(team) can leave also the several person which well know the passed(taken place) territory that they have entered into the second command(team) and have helped(assisted) them to cope with their problem(task) more quickly. As you can see, strategy of individual game and sequence of games can differ essentially enough from each other.
On light there is no the formula, allowing to win in games. There are only strategic receptions and skills which can be useful in this or that situation. Even one understanding of it(this) can justify all "game" approach to process of development ON. The people working above real projects, start to realize, that for a victory over game it is necessary for them to use constantly the reason and sharpness - to observe of a changing situation and to do(make) corresponding(meeting) conclusions, to remember and apply known strategic receptions, there and then to invent and test new. And thus always to remember, that in area such complex(difficult) and overloaded by requirements as the project on development ON, to reach(achieve) both purposes it is impossible, therefore it is necessary to define(determine), what of them has the greatest priority and to move to it(her) to the detriment of another.
Projects with the open initial code - too games, but a little other sort. First, in them there are no restrictions on resources, and secondly, a final point. Linus Torvalds could not tell: " Now here we shall let out(we shall release) the decent version of Linux - and on houses ". No, Linus remains in game, therefore game spreads, develops, and will develop. Game proceeds until bothers the participants. Can play any quantity(amount) of people - without any time(temporary) ramok or restrictions. As soon as to players it becomes uninteresting, game will end. In this sense development of the software with the open initial code is similar on musical jam-sessions or on designer LEGO more. It is collective game which is not directed on achievement of a ultimate goal and does not provide a management(manual) or distribution of the limited resources. Therefore those receptions which will perfectly work in projects with the open code, will not work in usual projects on development ON - limited in resources and directed on achievement of a ultimate goal collective games
|