|
Extreme programming
The foreword
XP considers(examines) coding as the key factor during the project. The code is a link in dialogue between various commands(teams) razdelenymi geographically. Life cycle and behaviour of complex(difficult) objects is defined(determined) by means of the test-cases, i.e. besides through a code. Reports on mistakes(errors) also contain the test-cases, detailing a problem. Thus all development leans(bases) on a code. However procedure of development means not only « reliable coding », but also delivery of this code according to the schedule, and it is already much more complex(difficult). For this purpose it is necessary to use the best techniques, and in particular XP, including unit-testing, programming in pairs, and refaktoring.
To put it briefly XP promises to reduce risk of default of the project, to improve reaction to changes in requirements, uchuchshit productivity and simultaneously to take pleasure in work in a team
The prologue
This book
This book helps(assists) to be adjusted(be set up) on perception(recognition) XP, to understand its(his) roots, philosophy, myths. Its(her) purpose – to help(assist) to draw a conclusion on applicability or inapplicability of technique XP in your project. For those who already uses XP, this book allows to understand it(him) even better.
Acceptance XP in many respects depends on readiness of engineers and the managers unsatisfied with a developed practice of programming to risk and try(taste) something new. Frequently recommendations on XP contradict the developed stereotype and experience of the previous projects, therefore the author of the given book tries to explain why it is necessary to follow these recommendations.
What is XP
What is XP? XP is an effective, flexible, predicted, scientific and at the same time amusing way of development of the software. Besides the given approach is characterized by small risk.
From others metodology XP differs:
¨ Use of a short cycle of development with an anticipatory feedback, concrete and continuous
¨ Inkrementalnym the approach in the planning, allowing quickly to pass to the plan of the project as a whole, corrected(adjusted) on protyazheniii all life cycle of the project
¨ Flexibility in terms of realization of separate functions according to varying inquiries of the market
¨ Reliability of software product based(founded,established) on procedure of automatic testing, tests for which are developed in common by programmers and customers. postoyanoe testing allows to supervise process of development revealing defects at early stages.
¨ Reliability of software product based(founded,established) on evolutionary design, proceeding during all life cycle of a product.
¨ Reliability of software product based(founded,established) on constant dialogue of programmers, possessing ordinary abilities
¨ Reliability of software product based(founded,established) on a combination of short-term "instincts" of programmers and long-term interests of the project.
Раздел1. Statement of a task
In this section problems which can be solved at use XP of methodology are discussed.
Глава1. Risk: the Basic problem
One of the basic problems of development programnogo maintenance, is risk. Below some examples of risks are resulted(brought):
¨ – in day of prospective delivery you inform Shift of the schedule of delivery to the customer, that the software will be ready not earlier than in 6 months
¨ the Project is closed – after numerous shifts the project is closed at all not being peredanym in manufacture
¨ the System "has turned sour" - the software has been successfully transferred(transmitted) in manufacture, but in couple of years cost of changes and quantity(amount) of mistakes(errors) has so increased, that the system should be replaced
¨ Intensity of defects – the system is transferred(transmitted) in manufacture, but quantity(amount) of defects so is great, that it(she) cannot be used
¨ Misunderstanding of requirements of business - the software is transferred(transmitted) in manufacture, but it does not solve those tasks which have been put originally
¨ Changes of requirements of business - the software is transferred(transmitted) in manufacture, but requirements for the sake of which it has been developed, 6 months ago have been replaced by other more actual
¨ Presence of irrelevant opportunities – the software has a lot of interesting opportunities not necessary to the customer (money not bringing to it(him))
¨ Turnover of staff – in two years of work above the project all good programmers start to hate the program which develop and leave
In what image XP solves a problem of risks listed above?
¨ Shift of the schedule of delivery – XP assumes performance of the project in the form of short releases prodolzhetelnostyu no more than several months so, that a delay of each of them. Inside of each release XP uses 1-4 week iterations on inclusion funktsiy, demanded by the user , that pozvolet it is easy(light) to trace a current state of affairs. Inside of each iteration XP everyone plans separate tasks, for 1-3 days. And at last XP assumes prime realization of functions with the maximum(supreme) priority so, that if any function and will be detained, it(she) will not be very important
¨ the Project is closed – XP asks the customer to choose the least on volume release, but having the maximal advantage(benefit) from the point of view of business
¨ the System "has turned sour" - XP assumes creation and support of a comprehensive set of tests, which are spent after each change (some times in day) to guarantee quality next “baseline”. Thus the system is supported(maintained) in a condition « postoyanoj readiness ».
¨ Intensity of defects – XP assumes testing a product both from the programmer, and from the customer, i.e. razrarabotkoj tests two independent parties(sides) are engaged.
¨ Misunderstanding of requirements of business – XP assumes, that the customer is constantly operating(working) member of a team. The specification of a product constantly improves during all development so, that all last information which has become(begun) known programmer and-or the customer finds the reflection in software product.
¨ Changes of requirements of business – XP are assumed with carrying out of development in the form of a series of short releases so, that the quantity(amount) of changes within the limits of one release not so is great. Thus the customer is allowed to correct operatively a set of functions and what especially valuably to replace, if it is necessary for function yet realized (carried on the subsequent releases) new functions.
¨ Presence of irrelevant opportunities – XP obyazyvaet to begin development only with the function, possessing the highest priority.
¨ Turnover of staff – XP predrolagaet what exactly programmers spend an estimation of terms of performance of work and by that osoznanno incur the certain responsibility for duly performance of projects. Thus programmers regularly spend the analysis of the schedule of work and reconsider it(him) if necessary.
1.1. Our mission
If we recognize risk as one of problems which should be solved what can be the decision? Clearly, that for this purpose it is necessary to choose a way of development of the software which would consider these risks. Procedure of development should be as much as possible clear to programmers, managers and customers. Procedure of development should consider necessarily conditions and features of the concrete organization.
Глава2. Episodes of development
The programming which is carried out day after day , making a start from the task put by the customer, provides communication(connection) between separate properties of a product, their development, testing and the subsequent integration. Each action on ztom can be considered(examined) ways as a separate episode. Below the example of one of episodes of development is resulted(brought). It is described the real actions which were carried out at the decision a separate engineering task (the least element which is present at the schedule of works) and its(her) integration into the general(common) system.
I look at a pile of cards with the list of tasks. Top contains a task: « Export Quarter-to-day-Withholding ». I recollect, that on morning meeting you have informed me, that have finished programming procedure “Quarter-to-day”. Therefore I ask you (my comrade on a team) whether you could help(assist) me with procedure “Export”.
We spend pair minutes discussing work which you have made yesterday. You tell about the elements added by you, what tests they could be checked up. Shortly we stop that in pairs it is better to do(make) programming if the monitor will shift back on one foot.
You ask, « What scripts of testing (test case) are available for the given task? ».
I answer, « When procedure of export will be started, values of sizes in records should correspond(meet) to values of elements »
« What fields should be filled? » You ask.
« I do not know. Give we shall ask Eddi. »
We interrupt Eddi for 30 seconds. It(he) explains purpose(assignment,destination) of five fields which interest us.
Then we look at structure already existing test-case and we find out, that the part from them can be directly used in our case.
The part test-case demands small updating. Except for that it is necessary to write a little new test-case. We start to prepare immediately for a set test-case for testing our task and we finish it(him) within an hour.
When we try to start prepared test-case they naturally do not go. We start test-case under a debugger and quickly we find a mistake(an error). I was engaged in correction of mistakes(errors) in a code, and you tried to explain, how it is possible to simplify a code. At last it has bothered me, I have moved the keyboard to you and have suggested to do(make) corrections most. At last all test-case have passed(have taken place). Except for that you have processed some more test-case having simplified them.
We have seen, that a computer on which integration is spent was released(exempted). We have loaded last changes and have received last release. Then have banished all available test-case, developed by us only-that and that has been created earlier by other members of a team. All worked. We have received new release.
We have just described a typical cycle of development within the limits of XP. It is necessary to note, that:
¨ Programming is carried out in pairs
¨ Development makes a start from tests. First you prepare and debug tests and only then code. While tests work it is necessary to move further.
¨ Pairs are engaged not only debugging of tests. They also spend constant redesign of system. Changes concern(touch) not only any one area. It can be the analysis, design, integration and testing of all system. Works in each area are spent as required.
¨ Integration immediately follows development, including integration testing.
Глава3. Economy of development of the software
By development of software product it is desirable, that its(her) economic efficiency was above due to slower raskhodyvaniya money, faster reception of profit and increase in life expectancy of your project. But it is the most important to give greater(big) opportunities of a choice for decision-making.
Strategy of increase in profit can be described as follows:
¨ To spend it is less, that is usually complex(difficult) as everyone begins practically with identical tools and umenem.
¨ To earn it is more, that is possible(probable) only at presence of excellent branches of marketing and sale.
¨ To spend later, and to earn earlier i.e. to give more attention to reception of money, than their expenditure.
¨ Increasing probability of that the project will not be frozen you raise(increase) chance of reception of greater(big) payments in the further
3.1. Options
There is also other sight at economy of software product – as on a set of options:
¨ the Termination(Discontinuance) of the project – always can for something be taken from the project even if it(he) is stopped. And the more it is possible to take, the better.
¨ Switching – the direction of works under the project can be changed. From the point of view of the customer more tsenen that manager of the project who allows to change requirements in the middle of the project. And the it is more often and more essential these possible(probable) changes, the more conveniently to the customer.
¨ the Delay – is possible(probable) a situation when you do not invest means for the decision of any problem, and expect, when the problem to be resolved by itself. From the point of view of the customer more tsenen that manager of the project who can postpone investments but not lose an opportunity to make it later. Than more size of a delay, and the a greater(big) sum of money not istrachena, the better.
¨ Growth – if the situation in the market is favorable, you should be ready to increase quickly volumes of manufacture to use the created situation. Than more quickly it is possible uvelicht volume and the longer this increase can proceed, the better.
In definition of the price and the importance of these options 2 parts of art, 5 parts of mathematics and 1 part of the sustained whisky of Kentucky are put.
Thus it is necessary to consider five factors:
¨ the Volume of the investments necessary for realization of the given option
¨ the Price which you are ready to pay for that the given option has been realized
¨ the Price of an option at present
¨ Quantity(Amount) of time which you are ready to spend for realization of the given option
¨ Uncertainty of a final price danoj options
Last factor is most important as allows to expect a situation.
Let for example we wish to develop(produce) strategy for management of the project, using following options:
¨ the Exact and regular feedback about a course of performance of the project
¨ Presence of opportunities on significant decrease(reduction) in number of changes of requirements
¨ Small initial investments
¨ the Opportunity to move more quickly
Than uncertainty there is more, the correct choice of strategy of management is especially important. Whether it mpravedlivo in all cases irrespective of results uncertainty from technical risk or from changes of a condition of business or from fast izmeniya requirements.
3.2. An example
Let's assume, that you during programming have found out, that can add some property and it will cost to you $10. You raschityvaete, that this can be sold options for $ 5. Thus, the net profit from realization of the given option will be $5.
Let's assume, that in gubine showers(souls) you not are assured what will real potrebitelnaya cost of the given option for the customer. Let uncertainty of costs of this option makes 100 %. Then the minimal cost will be equal: $7.5 (it is valid 7.5 + 100 % = 7.5 + 7.5 = $15).
Let's admit(allow), that stomost expenses in a year will not change and will make the same $10.
How quantitatively to estimate(appreciate) a variant of strategy: to realize an option now or to postpone for the future.
Let's accept a profit level for 5 %. Then you bydite to sell the given option for $ 7.87 ($7.5 + 5 %). This size is more than $5 (the maximal net profit). Therefore it is more reasonable to postpone realization of the given option for the future.
Глава4. Four variables
XP offers model of process of development in which as managing directors four are chosen peremennye-cost, time, quality and frameworks of the project (scope).
Procedure of development of the software within the limits of the given model consists that external forces (customers, managers) have an opportunity to influence three from these variables. The team of development can adjust(regulate) rezultiruyushchee value of the fourth variable.
Some customers and managers consider(count), that can operate all 4-мя variables. Actually it is necessary to choose the variables which are a subject the control and to analyse their influence on remained. If the result does not arrange, it is possible to change values of entrance variables or to replace their set.
4.1. Interaction between peremenymi
¨ Cost – additional money can help(assist) a little at present but if it is put them too much as a result it will create more problems, than them will solve. On the other hand lack of the money allocated for the project can lead to that it(he) will not be executed in full conformity with requirements of the customer.
¨ Time – the increase in time allocated for the project can improve quality and expand frameworks of the project. As the data acting as a feedback from products being in manufacture have much greater value, than other kinds of a feedback the longer the project is in development, the worse. If time allocated for the project few(not enough) quality while other variables will practically be in norm(rate) first of all suffers from it(this).
¨ Quality – quality approaches(suits) as an operating variable a little. It is possible to reduce a few terms of performance of the project (to days or weeks) having sacrificed quality, but cost of resources (human, technical and t.d) it will be huge.
¨ Frameworks of the project – the already frameworks of the project, the better quality there will be a developed product. Thus it is necessary, that the basic requirements of the customer nevertheless are executed. On the other hand narrowing ramok the project, allows to develop more quickly and more cheaply.
It is impossible to simplify however attitudes(relations) between these(it) 4-мя variables. For example, if you spend more money it does not mean, that the project can be executed essentially more quickly. It is known, that nine women cannot give birth to the child within one month. Sometimes add, that it cannot make and eighteen women.
Generally speaking, cost this size which can be limited by many factors. In the beginning of the project we cannot spend at once too many money. Since some moment it is possible to master greater(big) sums.
Once the customer has declared, that for realization of all properties it is necessary to have 40 programmers. My answer was those, that 40 person are not necessary from the very beginning. It is possible to speak about one-two programmers, then their number is admissible to increase up to four, and only in 2 years it is necessary to employ 40 engineers.
On the other hand cost is closely connected with other variables. At presence of sufficient means it is possible to carry out additional researches, or to expand frameworks of the project, or to improve quality, or partially to reduce time of delivery of a product for the market. Except for that additional means allow to get faster computers, to employ the best experts, to equip office.
Quality is strange enough variable. Often there is that if you nastaivaite on improvement of quality the project goes even more quickly or your productivity increases. It happens is connected with that, how much successfully pass(take place) tests. Each executed test adds to you confidence, removes stresses and as a result allows to program more quickly. Thus it is necessary to consider and the human factor. Everyone wishes to do(make) the work well, and the team works better if feels, that work goes successfully. It is possible to weaken(easy) meaningly certainly requirements to quality raschityvaya that the team will work more quickly, and the customer will not notice decrease(reduction) in quality. But it is the erroneous approach as after a while occurrence of a plenty of mistakes(errors) can simply demoralize a team and as a result lead to a failure of the project.
4.2. Frameworks of the project
Many people well imagine, cost, quality, and time as operating variables, but at all do not understand, that is put in concept of a framework of the project. By development of software product of a framework of the project it is the most important variable which needs to be meant. One of the most important decisions of the project head this narrowing ramok the project. If it is necessary to influence actively frameworks of the project it is necessary to enable managers and customers to operate cost, quality and time.
Programmers frequently speak, that customers cannot explain, that it is necessary for them. Also it is the absolute truth. Requirements in the beginning never happen clear.
During development more precise understanding of that should be made comes. Having received the first release the customer can formulate more precisely requirements to the second release. The knowledge can come only from experience. Not trying to receive it(him), by performance of additional work we miss an opportunity to reach(achieve) necessary quality during necessary time.
During development, having received the additional information programmers change also frameworks of the project.
However, if in the end of each phase of development utrachivatsya it will not make any important properties of a product of the customer happy. To avoid it(this) XP uses two strategy:
¨ It is necessary to practise constantly carrying out of estimations with use of a feedback by real results. Prvilnaya the estimation reduces probability of loss of functionality.
¨ Realization of requirements of the customer are spent by way of their priorities. Therefore, if during realization of the project you are compelled(forced) to narrow functionality that the least important properties will be lost only.
Глава5. Cost of changes
Under the certain circumstances, eksponentsialnyj growth of cost of changes of the software can be led horizontal asimptote. If it can be made, old representations about the best way of development of the software any more do not operate(work).
Always was considered, that the later correction of a mistake(an error) is made, the more dearly(expensively) it manages to the developer. 
Figure 1.
Modern researches show, that the curve of growth of cost presented above can vyglyadit is essential differently.

Figure 2.
XP, leaning(basing) on a number(line) of simple principles by development of software product allows to have the minimal expenses on updating a code even after the product is in manufacture some years:
¨ Simple design, without any redundancy – anything that it should not is necessary to be included only in the future in current design
¨ Presence of system of automatic testing raises(increases) reliability of that at modification and passages of all tests the system continues to function to adequately initial requirements
¨ the Constant practice in redesign of a product allows you to not be afraid to modify system when it to become necessary
Being based on these elements – simple design, tests and constant improvement of design it is possible to receive the curve of cost presented on Figure 2. Therefore there is no necessity to try all large changes to spend in the beginning of the project, carrying out in in final phases only fine corrections. Accepting this model, it is desirable to spend all changes as soon as it to become necessary, carrying out obligatory automatic testing and is constant uchuchshat design as soon as become clear as it can be made.
Глава6. We study to operate the car
We should operate development of the software by introduction of set of small amendments, instead of by several greater(big) changes, i.e. approximately as you operate the car. It means, that the feedback that the nobility when we have slightly gone off-course that it is necessary to make correction and that the price of these corrections is reasonable is necessary for us.
Now we should consider(examine) a problem as a whole – huge cost cost of risk and an opportunity of management of a degree of risk by means of a choice: whether to execute any change now or to postpone it for later term without substantial growth of cost.
Managerial process by the project is similar to management of the car when little changes of a direction of movement are constantly corrected(adjusted) by small turns of a rudder.
Really this example as a matter of fact also is the sample for management of the project. There are no such situations when all goes smoothly without any deviations(rejections). Even if all seems well impossible to tear off an eye from road.
Change - here, that is to constants.
By development of software product all varies: requirements, design, business, technology, a team, members of a team. Only the problem – inability to cope with changes when they occur(happen) in essence does not vary.
The driver in our case is the customer. If the software product does not do(make) that want from it(him) means you have failed. Naturally customer frequently precisely does not know, and that the software product should do(make), therefore development and is similar to management of the car, and the received feedback lets to us the know when we again are on road.
Developing software product according to XP it is necessary to allocate its(his) four most valuable features:
¨ Interaction
¨ Simplicity
¨ the Feedback
¨ Boldness
These features considered(examined) in detail in the following chapter(head) allow us to understand a condition of software product during its(his) development.
Глава7. Four features
Our development will be successful if it(she) is spent considering some features serving both human, and commercial needs, it: interaction, simplicity, a feedback and boldness.
Before to begin development it is necessary to choose and coordinate(agreee) criteria, whether allowing to understand in a correct direction we go.
Short-term objectives of separate individuals often contradict long-term objectives of a society. The society for a long time is familiar with these problems and for their decision leans(bases) on the certain set of values such as: myths, rituals, system of punishments and encouragements. Without these values people as a rule try to pursue only the personal short-term interests.
So XP has four most valuable features:
¨ Interaction
¨ Simplicity
¨ the Feedback
¨ Boldness
7.1. Interaction
The first особенностьXP this interaction. The matter is that frequently presence of a problem is ignored, for example the programmer can nobody inform on a critical condition of design, or can ask the necessary question to the customer therefore the incorrect decision will be accepted.
In any case bad interaction does not arise on an empty place and has the reasons. For example, the programmer has informed the manager unpleasant news and has been punished. The customer has informed the customer something important, and that has not given to it(this) value.
One of purposes XP – to support(maintain) vzaimodejstvi up to the mark by use of such receptions which demand interaction without fail. This unit-testing, programming in pairs, an estimation of tasks in view. All this forces programmers, customers and managers to communicate with each other.
All this certainly does not mean, that in XP there are no failures in connection with interaction, but for this purpose and the trainer (сoach) serves, one of which duties consists in excluding these failures.
7.2. Simplicity
Second feature XP is simplicity. For example, the trainer asks a team: « What elementary thing which can probably work? »
Simply it does not mean easily. Perhaps one of the hardest things on light it to not try to think of that should be realized tomorrow either next week or next month. On the other hand postponing realization on the future you constantly feel fear because of eksponentsialnogo growth of cost of introduction of any changes tomorrow, instead of today.
One of postulates XP consists that it is better to make a simple thing today and tomorrow to pay a little more for entering of little changes, than to do(make) today a complex(difficult) thing which tomorrow can be not be necessary.
Simplicity and interaction is two things which in the wonderful image strengthen each other. The more you communicate, the more clearly you represent, that should be made and the more confidently you syabya chuvstvuyute what to do(make) it is not necessary. The easier system, the less you are compelled(forced) to spend time for discussion of its(her) properties, but each discussion is more productive. Except for that simplification of system allows to reduce number of the programmers participating in the project.
7.3. A feedback
Third feature XP is the feedback. The concrete information on a current condition of the project poistinne is invaluable. Optimism – should be considered(examined) as a professional risk in a trade of the programmer. A feedback some kind of a medicine for this illness.
The feedback can work in various time(temporary) scales:
Interval of time from several minutes about one days.
For example, programmers write unit-tests for all elements of system which can contain a mistake(an error). Programmers have an every minute feedback about a condition of system. Customers spend the analysis of the schedule of performance of the project each 2-3 weeks to make sure, that all goes under the plan. Correction of the schedule of works is in case of need spent.
Interval of time from several weeks about one months
Customers and testers develop futktsionalnye tests for check of all properties of system. They receive neposredstvenuyu a feedback about a current condition of system. Customers each 2-3 weeks analyze the plan-schedule of performance of works and correct(adjust) it(him) if necessary.
Some remarks in occasion of transfer of a product to manufacture.
The first approach consists in that transfer to manufacture to carry out probably more quickly. It will allow programmers to receive a feedback about that the product developed by them and what lacks are available is how much good.
Unfortunately, opposite strategy frequently gets out. For some reason it is considered, that after transfer of system to manufacture it is impossible to lead "interesting" changes, therefore the longer to hold system in a condition of development, the better.
Actually all on the contrary. The condition of "development" is a time(temporary) condition of a product. And its(his) duration makes only small part from its(his) general(common) life and the more quickly the product receives an independent life, the better.
The feedback is indissolubly connected with such features as "Interaction" and "Simplicity". The the feedback, the easier vzaivodejstvie is more informative. If someone has doubts in a code which you have written also it proves to be true tests, it tsennee thousand hours of discussions about an aesthetics of design. The easier the system, the is easier to test it(her).
7.4. Boldness
Even if you follow the principles stated above: interaction, simplicity and a feedback – nevertheless is not enough of it(this). If you will not move forward with the maximal speed, somebody will overtake you and will eat your lunch.
Below the real example of boldness is resulted(brought). In the middle of 8-th iteration, at 10 planned the team has found out a fundamental mistake(error) in architecture. Correction of one mistake(error) generated others, that was sledstvem the miscalculation in architecture. The team has made all correctly. As soon as the reason became clear, the mistake(error) in architecture has been corrected. It has immediately led to that half of tests became unsuitable. Some days of the concentrated work have allowed to correct all tests. It has demanded the certain boldness.
As other example the situation when you reject already written code can serve and replace its(his) new.
Strategy of design within the limits of XP can be compared to a mountain ascention. In the beginning the elementary design is spent, then it(him) complicate a little, then spend simplification and so on.
In otryve from first three features listed above "Boldness" by nothing means. However in a combination to them its(her) value becomes conclusive.
"Interaction" supports(maintains) "Boldness" as allows to work in conditions of the raised(increased) risk. For example, after discussion of a code the team has come to conclusion, that it is necessary to replace it(him). You understand, that it conducts to additional risk, but meaningly go on it.
"Simplicity" as supports(maintains) "Boldness". The easier system, the is easier you agree on any changes in it(her).
It is necessary to understand however, that all our reasonings have no any practical value if the team will not be monolithic and everyone will work in itself.
XP is not panacea, and can help(assist) only with development, yavlyas svoebraznoj the greasing reducing friction of cooperating parts.
Глава8. Main principles
Four features which were discussed in the previous chapter(head) generate a dozen or about that the cores printsipovlezhpshchikh in a basis new (XP) the approach of development.
The example on training to driving reminds us, that it is better to do(make) many little changes and never to tear off an eye from road. Four most valuable features - interaction, simplicity, a feedback and smelost-allow us to estimate(appreciate) how much successfully chosen decision. However these features are rather indistinct to help(assist) with a practical life. It is necessary to develop(produce) concrete principles which can be used really on their basis.
These principles can help(assist) us at a choice of alternative decisions.
8.1. Fundamental principles
Below we shall result(bring) the fundamental principles used in XP:
¨ the Fast feedback
¨ Prospective simplicity
¨ Inkrementalnye changes
¨ Acceptance of changes
¨ Qualitative work
8.1.1. A fast feedback
The psychology learns(teaches), time between action and a feedback is critical from the point of view of training. Experiments with animals prove, what even the slightest changes render huge influence on a learning efficiency. The delay in some seconds between stimulus and response and is unable to remember the mouse, that the red button means food.
In business the optimum delay makes some days or weeks, anyway it not months or years.
Programmers learn(find out) the design is how much good, separate options are how much successfully included or system testing within seconds or minutes instead of days, weeks or months is lead.
8.1.2. Prospective simplicity
Consider(Examine) each problem, as ridiculously simple. Time which you will save on the decision of 98 % of problems for which it will fairly give you the certain reserve for the remained 2 %. Experience shows, that this principle is the most difficult to take on belief. To us traditionally advise to plan the future, to carry out design so that was possible(probable) “reuse”. Instead of it(this) XP suggests to work well above the sanction of today's problems (testing, refaktoring, interaction, etc.) and to trust in the abilities to add more complex(difficult) properties of a product in the future when it will be necessary. The similar approach is economically justified.
8.1.3. Inkrementalnye changes
Greater(Big) changes executed at once as a rule are not efficient. Any problem is solved in the form of a series of little changes. A principle inkrementalnykh changes offered in XP we shall apply in various situations: changes of design, the plan-schedule, structure of a team should be carried out by small portions. Even introduction of methodology XP is spent gradually.
8.1.4. Acceptance of changes
The best strategy is that which keeping the basic properties of a product helps(assists) to solve most acute problems.
8.1.5. Qualitative work
Nobody loves astable work. Everyone wish to do(make) good work. From four variables offered within the limits of XP of model (frameworks of the project, cost, time and quality) quality is not completely independent. Whether unique vozmozhnmi estimations can be excellent"(different") and is "madly excellent(different)" depending on that it is staked a life or not. In other words, if you do not admire with the work and do not do(make) it(her) it will not be good the project successful.
8.2. Additional principles
Below additional principles are resulted(brought) some:
¨ Training to process of knowledge
¨ Small initial investments
¨ To play on a prize
¨ Concrete experiments
¨ the Open, fair interaction
¨ To work according to human instincts, instead of against them
¨ Acceptance of the responsibility
¨ Management of movement
¨ Fair measurements
8.2.1. Training to process of knowledge
Instead of using maxims of type: « Alexander should carry out testing as well as XYZ », it is necessary to concentrate the efforts to training to procedure of testing as those and what quantity(amount) of tests should be developed. Except for that it is necessary to define(determine) volume of design, refaktoringa and all the rest, that should be made. Some actions are necessary for making with all definiteness; necessity of others can be unevident at present. Really it is necessary for developer to make the concrete decision on each considered(examined) situation.
8.2.2. Small initial investments
The excessive resources allocated for the project in its(his) most beginning a true way to make its(his) unsuccessful. The rigid budget compels(forces) programmers and customers to work in common at development of requirements and vyriantov their realizations. Another osobenost the rigid budget consists that encourages you to do(make) work well that it(she) should not be altered. On the other hand absence of necessary resources can lead to that a number(line) of obligatory experiments will not be lead. Therefore the most optimum to have resources hardly menshne, than it would be desirable.
8.2.3. To play on a prize
Vseda it is pleasant to observe of game of professional basketball commands(teams) of the maximum(supreme) league. Usually they stremyatsya to crush the contenders literally. And even if up to the end of game there are some minutes they do not dump(reset) rate, and stremyatsya to fix success or to pull out a victory trusting, that it it(him) on a shoulder. This belief is based that they did(made) it already repeatedly. They do(make) that should do(make) and again win.
There is a difference between the game aimed at a victory and game in which you try to not lose.
In most cases process of development pursues last purpose - to not lose. Frequently developers try to take ideas from any books or other official sources. It is done(made) not of any special reasons and that in case of failure it was possible to tell, that the choice of the decision was not otsebyatinoj, and is based on opinion of authorities.
8.2.4. Concrete experiments
Each time when you make a decision also it it is not tested there is a probability of that this decision is incorrect. The more decisions is accepted, the above probability of occurrence of a mistake(an error). Therefore result of regular session of design (imetsya in view of, that redesign is spent after each change) should the formal document, and a series of experiments is not, each of which serves as the answer to one of the questions which have arisen within the limits of given session.
Result of discussion of requirements a series of experiments also should be. Thus, each abstract decision dozhno to be tested.
8.2.5. The open, fair interaction
This position so establishing(basic), that it at all is not a subject to discussion. Probably nobody can tell, that it(he) does not wish it(this) to do(make). Programmers should be ready to explain to other people the reason of acceptance of those or other decisions, to explain in what area of a code there is a problem. They should speak freely about the fears and get support. They should have an opportunity to inform bad news to the customer or a management(manual) not being afraid of punishment.
If before answering a question the lecturer looks around, and who listens to it(him), it is a true attribute of that with the project of something not by way of.
8.2.6. Work according to human instincts, instead of against them
People like to win. To people to like to study. To people to like to communicate with other people and to be members of a team. To people to like, when to them trust.
To people to like to do(make) work well.
Short-term interests of individuals should coordinate necessarily with long-term interests of the project. Any metotodologiya (including XP), applying for the standard regarding development of the software should provide the decision of current problems. If it(this) does not occur(happen), the technique obviously will not get accustomed.
8.2.7. Acceptance of the responsibility
Anything so does not injure a team and its(her) separate members as the instruction(indication) as well as that it is necessary to do(make) under the project especially if offered work obviously nevyponima.
Having received a similar guideline that to whom it has been addressed will find one thousand ways to show the displeasure, that as a result will harm both to a team and the carried out project.
Alternatives osoznanomu to acceptance of the responsibility are not present. And it does not mean, that you always do(make) that khochete. You a part of a team and if the team has come to conclusion, that opredelelennaya work should be executed, someone should do(make) it(her) even if it(she) otvpatitelna (an old principle of democratic centralism).
8.3. Adaptation to local conditions
Everything about what be written in this book should is adapted for concrete conditions of your organization and the accepted process of development. It does not mean, that the given book learns(teaches) you to directly process of development. It(she) simply helps(assists) to understand, that it is possible to make better. Process of development is your care and the responsibility. Also it is impossible to forget about it(this).
8.4. Some remarks
otpravlyas it is impossible to move to travel which refers to XP quickly at presence of huge quantity(amount) of luggage. It is necessary to take in road only the most necessary. The basic criteria by which it is necessary to be guided thus are the following:
¨ Small volume
¨ Simplicity
¨ Value
The XP-command to become group of the intellectual nomads always ready quickly to curtail(turn) the tents and to follow the shepherd. In our case the shepherd is surrounding conditions and new technology which became unexpectedly demanded, or a new direction the member of a team which leaves, or can serve in business to them or design which on a unexpected way, either the customer frequently suggests to follow, or.
8.5. Fair measurements
Management of process of development assumes presence of the certain measurements. Unfortunately the standard tools do not support(maintain) and a demanded level of detailed elaboration. It is better to tell, that performance of some task will borrow(occupy) two weeks or about that, than to name concrete figure, we shall tell 14.176 days if you do not have real way to estimate(appreciate) duration of the given work.
We also should try to choose the metrics the most adequate to our work. Navprmer, the number of lines of a code will be possible(probable) useless in a situation when the volume of a code constantly decreases as a result of improvement and optimization of the program.
Глава9. Back to bases
We wish to do(make) everything, that we should to provide stable, predicted procedure of development of the software. But we do not have time to be engaged in something moreover.
During development it is necessary to allocate four basic kinds of activity:
¨ coding
¨ testing
¨ skill to listen
¨ designing
Then it is necessary to define(determine), that such frameworks of the project. What sort of a problem it is necessary to consider, and what can be ignored.
I recollect, when for the first time have decided to write the program on Bejsike has found out, that I can not write the appendix more, than 20 lines. Having tried to write the text of the program on a paper before filling it(him) on a computer I has come besides to result having written only 3 lines. Here I have understood that, that it is necessary to be able not program, but the nobility, something(something else).
9.1. Coding
Coding the most direct way to feel a problem and the best opportunity to understand structure of the program. Whether coding also bears(carries) in itself the certain signs on that well you have understood this structure.
When you are engaged in coding have an opportunity better to understand structure of the program. Except for that coding helps(assists) with dialogue between members of a team. For example, if someone tries to explain to you the idea there is a high probability of wrong understanding. If you code together the logic of the program is clearly visible to you and ideas of the author are clear. Similar interaction is easy(light) can pererasti in training. Analyzing another's idea you can develop it(her) and offer the . If it is heavy to you to explain the idea you can express it(her) besides by means of a code.
Thus the code can be used in various situations as that: expression of the tactical purposes, the description of algorithms, instructions(indications) of possible(probable) ways of expansion of opportunities of system in the future, etc.
9.2. Testing
English philosophers – positivists Lock, Berkeley, YUm approved(confirmed), that if it is impossible to measure something, it does not exist. Primenimo to a code the similar statement quite right. Functions of software product which cannot be revealed by testing – simply do not exist.
Generally speaking testing confirms, that the program carries out for the sake of what it(she) has been written. Only when pass(take place) all the tests written in view of check of all conceivable and inconceivable situations, it is possible to approve(confirm), that the program is finished.
In most cases delivery of software products is carried out without a set of corresponding(meeting) tests. Why tests should be present at the list of obligatory deliveries by development of software product? There are two vozvozhnykh the answer.
The first concerns(touches) the long period of time. Is available in view of, that presence of tests allows to support(maintain) the program in operation longer time. If development of tests constantly proceeds, the confidence as system constantly grows. Except for that presence avtomatichechekikh tests allows to bring more izmeniny, than without them.
As already it was spoken earlier to one of main principles XP – never to go against human instincts. If the only thing, that you are capable to make it to result(bring) arguments in favour of a writing(spelling) of tests for a long time after the termination(ending) of the project, it is possible to forget about it(this). At occurrence of any critical situation anybody will write new tests, and probably and in general to test the program.
So that to support(maintain) carrying out and development of tests it is necessary to find incentive motives, following which gives fast effect and satisfy egoistical aspirations. Fortunately similar motives exist. Programming at presence of tests is much more interesting, than at their absence. Thus the received code contains much less mistakes(errors).
Programming at joint testing also is faster, than simple programming. At first sight it sounds a little bit improbably, but it so. However presence of tests allows to reduce essentially time of debugging, as you do not need to peer hours into a code to find a mistake(an error). Having it can be made tests within several minutes.
However there is a danger of that if tests are inefficient, the erroneous sensation of reliability of the program so tests pass(take place) all is created.
It is possible to allocate two groups of tests:
¨ Unit-tests - are developed by programmers to convince themselves that the separate subroutines written by them work how they understand it.
¨ Functional tests – are developed or at least are specified by the customer to convince itself that the system as a whole works how in its(his) understanding the system as a whole should work.
9.3. Skill to listen
Programmers do not know anything (the new task with which they did not collide(face) earlier means). Moreover they do not know there is nothing that is of interest for people of business. Also it is possible to be assured(confident) in if biznesmenny they could do without programmers instantly have refused their services.
The sense all of these reasonings is reduced to that time the programmer of anything about a task facing to it(him), means it(he) should someone ask about it(this).
Thus skill to listen is a third kind of activity, characteristic for process of development.
Programmers should communicate actively with the customer at discussion of a problem as a whole what to understand in what an essence of a problem. They explain to the customer, that from its(his) requirements can be realized easily, and that demands greater(big) expenses. The similar feedback helps(assists) the customer to understand the problems better.
However the simple recommendation of type: « you should listen each other and the customer » a little, that gives. It is necessary to structure, create somehow the certain standard describing procedure of dialogue from the formal party(side). It is necessary that during discussions and the analysis of requirements nothing has been missed. First of all it is necessary to understand, and that is a subject to discussion. Thus all details should be taken into consideration and reached(achieved) full clearness on realization of each of them.
9.4. Designing
Why it is impossible to present process of development simply as sequence of discussions, a writing(spelling) test-case their run, repeated discussion, etc.?
Because it simply does not work. The matter is that constant izmenie programs by which you are compelled(forced) to do(make) by virtue of many reasons leads to necessity constantly to alter tests and to add new, that demands more and more and more time which as a result is more on what does not remain.
To avoid a similar situation there is only one opportunity is a carrying out of design of system. The design allows you to create structure of system and to give to it(her) a certain internal logic. The good design allows to make changes to one part of system not mentioning(touching) thus the others. Thus if the system demands expansion it will be necessary to do(make) respective alterations only in one place or the limited number of modules instead of to alter the program.
It is necessary to understand, that the unsuccessful design forces you to alter all system at entering the next changes, the logic of the program frequently is repeatedly duplicated, it is impossible to add new function not having broken(disturbed) all rest.
In the further it will be shown, that performance of design within the limits of XP in many respects differs from design in habitual for us understanding.
The design is a part of daily activity of all programmers by which they are borrowed(occupied) in breaks between coding.
Skilful design – a key to success of the project.
9.5. The conclusion
So you should be engaged in coding because if you are not engaged in it(this), means you do not move forward regarding realization of the project.
You should be engaged in testing because if you are not engaged in it(this), cannot answer a question, whether process of coding is completed or not.
You should listen to the customer because if you do not do(make) it(this), will not know, that it is necessary to code or test.
Besides you should have good design that it was possible to code, test and communicate with the customer successfully.
Thus, successful performance of the project is helped(assisted) by four components:
¨ coding
¨ testing
¨ skill to listen
¨ designing
Раздел2. Ways of the decision
Now we know problems which are necessary for solving, the basic kinds of activity inherent in process of development are known. To us strategy of process of development of software product is clear. We can move further.
Глава10. The brief review
Our confidence of successful performance of the project is based on sinergizme simple procedures of known decades in current, but rejected as impractical and naive.
Initial material for development of software product within the limits of XP can sluzhat:
¨ History about training to driving of the car
¨ Four features – interaction, simplicity, a feedback, and boldness
¨ Main principles
¨ Four basic kinds of activity
Basic our purpose to order four basic kinds of activity. And it not simple mechanical ordering, and ordering in a view of the long list of inconsistent principles. At the same time we should try to improve economic parameters of process of development.
As to be put an explanation as all this should work as the purpose of the given book below the list of the main principles underlying XP is resulted(brought):
¨ Business game "Planning" – fast definition ramok following release by a combination of priorities of business and technical estimations. If the reality crosses out the preliminary plan – to correct the plan.
¨ Short releases – fast start in manufacture of the elementary system and then release of new versions during very short time.
¨ the Metaphor – a brief management(manual) for the team, the representing popular explanation of that as works system as a whole.
¨ Simple design the-system should be designed so simply how much(as far as) it probably for each moment of time. Excessive complexity should be eliminated(erased,removed) as soon as will be found out.
¨ – programmers constantly update Testing and expand a set of unit-tests which are used during all development and should be carried out correctly at any updating a product. The customer rarabatyvaet the tests to confirm working capacity of all zayavlenykh functions.
¨ Refaktoring – programmers re-structure system not changes of its(her) behaviour. It is done(made), with the purpose to eliminate(erase,remove) duplication, to improve interaction, to simplify system or to add flexibility.
¨ Programming in pairs – coding completely to be spent by two programmers on ONE computer.
¨ the Collective property – any can change any part of a code in any place of system and at any time.
¨ Continuous integration – addition of the new or modified modules and the subsequent construction of system provoitsya repeatedly within each day after end of the next task.
¨ 40-hour working week – duration of working week should not exceed as a rule 40 hours. Processing within 2-weeks is successively inadmissible.
¨ the Representative of the customer – the real representative of the customer should be a part of a team of developers and constantly be at it(her) within all working day, to answer arising questions.
¨ Standards of coding – programmers write the program according to rules, obepechivayushchimi interaction by means of a code.
Further the principles resulted(brought) above are explained in more details.
10.1. Business game "Planning"
At performance of the project of a reason of business and a reason tekhnichiskie should not prevail the friend of the friend. Development of software product assumes dialogue during which the compromise between Possible(Probable) and Desirable is developed(produced).
Thus Business should answer questions:
¨ Frameworks of the project – with what properties should are realized, that the system was in demand? Business should define(determine) that border below which the area lays "insufficiently", and above – it is "Too much". Priorities – if needed to be chosen between "And" and "In", what from your point of view should be realized first of all? Business can answer this question much better, than the programmer.
¨ the Maintenance(Contents) of releases – that should be relizovano that business went better at presence of the given product rather than at its(his) absence? In the given situation the intuition of the programmer can give absolutely incorrect answer.
¨ the Date of issue of releases – what dates of issue of the final version of a product or its(his) components are most important from the point of view of inquiries of the market.
Business cannot make the decisions in vacuum. During development technical decisions are a basis for decision-making in business.
Thus technical experts should give answers to following questions:
¨ the Estimation – what is the time is required on realization of concrete function?
¨ Consequences(Investigations) – exist strategic decisions of business which can be accepted only in view of technical opportunities.
¨ – process explains Process as work and its(her) team carrying out should be organized. Process also assumes the certain culture of dialogue inside of a team. Though it is necessary to understand, that a writing(spelling) of a code, during development is the core – all rest again.
¨ the Detailed schedule – is necessary for planning, what functions should be realized first of all. For reduction of risk the most complex(difficult) and risky functions should be realized first of all. Within the limits of these restrictions first of all it is necessary to carry out development of options of the prioritiest from the point of view of business. It allows to avoid danger of that by the end of the project, in conditions of shortage of time the most important properties will not be realized.
10.2. Short releases
Each release should be so short on time how much(as far as) it probably. Thus it(he) should contain functions the most valuable from the point of view of business. It is natural, if is present certain funtsiya it(she) should be realized in full. It be no point to let out(release) release to which certain funtsiya it is realized only half.
Much more tselesobraznee to have the plan for one-two month, than for six months or for a year forward. In conditions of modern business so remote plans can be not realized simply. Thus the cycle of release of the next release should be minimal.
10.3. A metaphor
Everyone XP the-project should be guided by one general(common) metaphor. The metaphor allows to understand work of basic elements of system and their interaction.
The metaphor in XP replaces with itself that other people name architecture. The words used to describe technical essence should undertake from the chosen metaphor. During development the metaphor undergoes the certain changes, to become more mature and giving(allowing) a team new ideas.
10.4. Simple design
The correct design always means, that:
¨ tests Are carried out all
¨ there Is no duplication in logic.
¨ Each purpose is important for programmers.
¨ the Design contains a minimum quantity of classes and methods.
Each part of design of system should bear(carry) the certain semantic loading. Having executed preliminary design try to remove from it(him) all those components without which the system can work and carry out the functions appointed(nominated) to it(her). That you execute simplification of design.
It is opposite to volume to the approach to which developers frequently follow: « Write a code now, and design for it(him) will make tomorrow ».
It is one of the deepest mistakes(errors) at conducting the project. Always it is necessary to do(make) at present that it is necessary at present and to not postpone it for the future.
10.5. Testing
Any program module without a set of tests for automatic testing simply does not exist. Programmers write unit-tests to be more confident in working capacity of the concrete module. Customers write functional tests to be convinced of correctness of functioning of the program.
All this leads to that the program to become more and more reliable, and necessary changes are easier and easier for carrying out all.
Naturally there is no necessity to develop tests in each elementary situation. Tests are necessary when the mistake(error) in the program leads full nerabotosposobnosti systems.
10.6. Refaktoring
At modification, programmers always search for a way of modernization of the existing program that addition of a new option has passed(has taken place) easier. After as the option is added, there is a question on simplification of the program that nevertheless it(she) possessed demanded functionality and tests were carried out all.
It also refers to refaktoringom. It is necessary to note, that sometimes you carry out greater amount of works, than it is necessary for inclusion of new function. Then you add one more function, and then more and more. At any stage you find out, that the part of a code is duplicated. It speaks that is required refaktoring.
If you see, that it is possible to realize function within 1 minute, but the code will not be optimum or 10 minutes is required to you to lead detailed design – spend 10 minutes.
Fortunately always there is an opportunity to lead radical changes in the form of sequence of small steps. And performance of each of them is not connected with greater(big) risk.
10.7. Programming in pairs
All code is written by two people sitting for one computer, using one keyboard and the mouse.
In each pair a role delyatsya as follows: the first partner is engaged neposredstvenym in coding and decides as to realize a concrete option better.
The second partner thinks more strategically:
Whether ¨ the chosen idea Will be efficient?
¨ Why tests which should work do not work?
Whether ¨ there Are any ways to simplify system as a whole and by that to eliminate(erase,remove) current problems
Programming in pairs is dynamic procedure. For example, the pair created still(even) on morning can be disbanded by a dinner and its(her) members will work in other pairs.
If you are responsible(crucial) for performance of work in unfamiliar area for you it is expedient to have in pair a skilled member of a team.
10.8. The collective property
Any who sees an opportunity to improve any part of a code should make it at any moment.
It contrasts with two other models of the responsibility for a code: - full absence of the responsibility and an individual responsibility.
The techniques of development applied earlier assumed, that nobody is the proprietor of any certain part of a code. If someone had a desire to change a code, they did(made) it trying to solve the prblemy not thinking of that changes how much entered by them are joined with already sushchestvuvuyushchim a code. Result was the chaos. Fast growth of volume of a code sharply increased its(his) instability.
For the control over a situation the individual property on a code has been entered. Only the owner of a code could change its(his) any part. Any another who saw necessity of change of a code should make inquiry to its(his) owner.
Result of strict possession of a code became that the code has ceased to be understood a team as people with a reluctance addressed to the owner of a code if its(his) change was required. Thus the code remained stable, but could not evolyutsionirovat so quickly as it was necessary. And if the owner of a code left(abandoned) a team ….
XP the technology means, that each member of a team bears the responsibility for all system as a whole. Nobody knows each part of a code equally well though everyone knows about its(her) work. If the programmers working in pair see an opportunity to improve a code, they move forward, spend improvement and it does(makes) their life easier.
10.9. Continuous integration
Integration and testing of a code is spent everyone some hours, a maximum once a day. Most a simple way - to use a separate computer specially intended for this purpose. When this computer is free the next pair with a code prepared for integration loads current release, loads the prepared changes and banishes all tests to be convinced of full working capacity of the next version.
Integration of a new code necessarily should end with run of all tests: developed earlier and written last changes developed earlier specially for testing . Thus preliminary debugging of new tests is supposed.
Thus, upon termination of current integration we receive new, completely checked up code and a set of the debugged tests ready to use at following integration.
10.10. 40-hour working week
10.11. The Representative of the customer
10.12. Standards of coding
Глава11. How all this can work?
11.1. Business game "Planning"
11.2. Short releases
11.3. A metaphor
11.4. Simple design
11.5. Testing
11.6. Refaktoring
11.7. Programming in pairs
It is obvious, that it is impossible to write all code working in pairs. It will be too slowly. And what if two persons do not get on with each other? Nevertheless, the reasons resulted(brought) below essentially smooth a similar situation:
¨ Presence of standards of coding reduces quarrels because of trifles
¨ If each participant feels fresh and had a rest it reduces an opportunity unproductive … khm … .obsuzhdeny
¨ the Writing(Spelling) of tests in pairs allows to improve mutual understanding before undertaking realization of a concrete option
¨ Presence of a metaphor allows participants of "Pair" to coordinate(agreee) the reasons under names of separate modules and bases of design.
¨ Presence of simple design allows both participants to understand a current condition of the project distinctly(clearly).
Having got a certain operational experience in pairs, it is possible to try to write all code in a similar way. Besides work alone leads to a lot of mistakes(errors), frequent changes of design and refusal otsledovaniya to Process, especially in conditions of shortage of time.
11.8. The collective property
Obviously it is impossible, that each member of a team made changes to all modules and at any moment so it will lead to essential increase in time falling integration. Nevertheless:
¨ Integration is spent during enough short time that reduces risk of possible(probable) conflicts
¨ the Set of banished tests constantly extends, therefore the risk of occurrence of serious problems in a code constantly decreases
¨ Programming in pairs reduces risk of entering of mistakes(errors) in a code. Except for that clear what useful changes can be brought.
¨ Following to standards of coding allows to avoid the problems connected with misunderstanding of the another's program because of various styles of programming
In due course, probably it will be authorized to each member of a team to make corrections in any place of the program and at any time. Besides absence of the collective property essentially reduces speed of evolution of design.
11.9. Continuous integration
You cannot probably spend integration everyone some business hours. Besides integration demands enough big time and always there is a danger of any random error which will brake process. Nevertheless:
¨ you can banish tests after each change so, that danger of occurrence of mistakes(errors) is rather insignificant
¨ Programming in pairs, you reduce twice a stream of the changes demanding integration
¨ Presence of procedure refaktoringa, allows to carry out changes by small portions that reduces an opportunity of occurrence of conflicts
In due course you can spend integration everyone some hours. Besides if integration is not spent quickly danger of conflicts and accordingly expenses for integration increases.
11.10. 40-hour working week
Probably you work more, than 40 hours per week as have not time to execute the plan. Nevertheless:
¨ Business game "Planning" helps(assists) you to perform the most significant work
¨ the Combination of business game "Planning" and testings reduces probability of the unpleasant surprises connected by that the amount of works essentially exceeds planned.
¨ the Constant practice helps(assists) you to program with high speed
In due course your productivity will be those, that for 40-hour working week you can execute all planned amount of works. Besides if members of a team will too tired their productivity sharply will fall.
11.11. The Representative of the customer
Probably you will not manage to attach to a team of developers of the representative of the customer for all time of performance of the project. The customer can use it(him) with greater advantage(benefit) for business somewhere in other place. Those not less:
¨ the Representative of the customer can render advantage(benefit) at work above the project developing functional tests
¨ the Representative of the customer can render advantage(benefit) at work above the project helping(assisting) programmers in arrangement of priorities and decision-making at the analysis ramok the project
Absence vzamodejstviya with the customer through its(his) representative increases risk at planning and coding when requirements are not clear and consequently not clearly what tests should be used, and what should be ignored.
11.12. Standards of coding
You cannot probably force to code a team according to the uniform standard. Programmers are deeply individual and more likely will refuse work in the project, than from habitual it(him) of style of work. Nevertheless:
¨ as a whole technology XP does(makes) for programmers attractive work in the team, achieving success
Probably in due course programmers will change the style of work a little. However it is clear, that absence of standards of programming causes additional friction in a team and considerably complicate programming in pairs and refaktoring.
11.13. The conclusion
Any separately costing(standing) technique cannot lead the project to success. Their all set is important allowing to keep the general(common) balance. Thus one technique not only compensates lacks another, but also strengthens its(her) positive
|