📜 ⬆️ ⬇️

Sergey Arkhipenkov - Theory and Practice of Adaptive Project Management

Sergey Arkhipenkov - an expert in software development management, more than 30 years in software development, PMP® PMI, vice-president of the Guild of Software Project Managers . Active "promoter" and "zadvigator" of the theory and practice of project and people management in software development projects. An active assessor of program committees. From the latter - the chairman of the program committee of the conference “Software Project Managment Conference” (November, St. Petersburg).

Below is the report by Sergey from the CodeFest conference, on the topic “Theory and practice of adaptive project management” .


')
Video report:
.

Audio report
polazhenko.podfm.ru/my/14/download/arhipenkov.mp3

Slides
www.slideshare.net/codefest/s-arkhipenkov-codefest

Text of the report:
Thank you, Artyom, thanks to all the organizers who invited me to speak in front of such a representative audience.
Good morning, dear colleagues, or rather, not colleagues, but brothers in mind. Because the programmer is not a profession ... Who said the diagnosis? (laughter in the hall) - No, not a diagnosis, a programmer is a way of thinking and a special mindset.

Task : Baratino was given 5 apples, he gave three of them to Malvine. And now the tricky question - how many apples does Pinocchio have?
Only programmers know the correct answer (options from hall 5, 10). Well, the managers gathered in the hall - I understand.
And the correct answer, - very simple - is not known! Why? And because in the initial conditions it is not said whether the cell with the address of Buratino was initially zeroed before 5 apples were added there.

Well, here they have already said that I have been developing software for 35 years. Well, in recent years, of course, I have been developing less, I am leading more. And now I will try for half an hour to tell all the most important thing that I have managed to accumulate over the years.
There is no one BEST way to solve differential equations. Alistern Cobburn - the initiator of the Agile movement - he investigated hundreds of projects over the past 20 years and concluded that there is no correlation between the processes through which projects proceed and the result - a successful or unsuccessful project. I will argue that there is such a process and it is called adaptive control.
We will talk today about principles, because knowing a small number of principles, as Helvetius said, frees us from having to memorize many facts. Essential principles will be seven, they are the most important. But before turning to them, I will tell you what adaptive control is.
Out of 35 years during which I develop software, I developed software in the Flight Control Center for 20 years. That had such a happiness, had such an experience. And I know very well how our missile control systems work. And here you will not believe, the analogy is one-on-one if you compare the history of the development of ballistic missile control systems and the history of the development of approaches to the management of software projects. The first way to control missiles is ballistic flight.



Well, that means more than 1000 years ago, remembering history, gunpowder was invented in China and there were ballistic rockets and one of the tales from The Tale of Bygone Years, if I’m not mistaken (I’m worse acquainted with programming than about history) about how princess Olga besieged the city of Drevlyane, and then, according to legend, she gathered a dove and a sparrow from each yard and, tying a tow, lit the city. There is an opinion, well, the version, so to say. There is no history - there are versions of different people about how this could be. One of the versions in the essay “Memory” of Chevelikhin is that Olga sat and waited half a year for these missiles to be brought to China. They were brought and she rocket this city lit. Well, it means, then here are the rockets and the programs flew in the same way - “as it will”. They exhibited a certain starting angle, which they believed was aiming at the target ... Yes, you can fly like this, but not very far and not very accurately. So it lasted until the mid 50s of the last century. When the complexity of the tasks increased by 4 orders of magnitude - they used to fly one kilometer and this was a super achievement, but now it is necessary to fly 10 000 km and not miss the country is desirable. Began to introduce management systems. The first control systems were based on analog calculators, when from the resistances, inductances and capacitances a scheme was typed, which simulated a flight along a given trajectory. On board was an inertial system for measuring speed and location in space. Every time the deviations reached unacceptable limits, the control system returned the missile to the falling trajectory. An analogue in our software industry to all this is the “waterfall”. Everyone heard the wonderful music video by Maxim Dorofeyev “Raise and fall of waterfall” about how the waterfall was invented by Walker's father. Although he invented something completely different. Look, the Internet is.
So the idea is very simple - there is a regulator, there is a deviation and we return to the reference trajectory.



So you can manage, but very inefficient. Why? Because the return to the reference trajectory is very expensive, although it is not always necessary to go according to the originally planned plan. And when the onboard digital computers (BTsVM) already appeared - a flexible approach was applied. In rocket science it was called the terminal control method.



When every time when a certain amount of deviations has accumulated (out of the permissible trajectory tube), we are not trying to return to the previously calculated trajectory. But we are trying to see, and how can we better get to our goal from the point at which we are already, maybe we shouldn’t do anything, just come early? Nothing wrong. So a similar approach (tied to Agile) is “plans are nothing, and planning is everything.” Yes, we plan, reschedule, and again reschedule, holding before us the end result (our goal). Everything works well, if we clearly know where our target is located, and it remains in place during our flight. In software engineering, this is absolutely not the case, because, as a rule, we formulate the goal in the most general terms. I come to the customer, asking: "Customer - what do you want?". "Well, I want an information system that will bring me happiness." We begin to clarify: “And happiness is what? The program and testing methodology - how are we going to write? ” Yes - the goal changes along the way; requirements change along the way. And in the missile control systems, an additional office has emerged that is trying to detect the goal and change the way in accordance with the new forecast of the position of this goal. In the modern software development approach, this method is called iterative and incremental. When we most often try to deliver the product to the customer for its evaluation, to get feedback. Those. we clarify goals.



Well, all this does not work if we do not know well the object we manage. If its structure and properties are not well known to us, or change during the flight. It means that a “adaptive control” method was invented in rocket production - another contour is added, besides all the others, which is trying to understand what kind of object we control, build a more accurate model and more adequately apply control action to it, as a direction to movement in this phase space, and aimed at changing the properties of the object itself necessary for movement.



What we manage in a software project is people and their interaction. According to my long-term observations - on average, 50% of a software developer’s time is spent on negotiations. Well, of course - the managers chat all day. Programmers, testers are a little bit smaller, but on average we speak to all project participants 50% of the time in order to synchronize our mental models of what we do.
So here I will try to explain to you my vision of how an adaptive approach to managing software projects allows you to make a project of any complexity with a team of ordinary developers. We will talk about principles. And I will try to illustrate them with examples.



One person - Joseph Stalin said - If two communists cannot agree, then one of them is an enemy ... or both.
So, colleagues, this is the first rake on which I naprygalis enough. When I became, and it was quite early, the head up to 30 years. In Soviet times, it was a great achievement. I had a clear classification of people according to their types. And I had two types of personality:
1) The right people who think and do as I do.
2) All the rest, which with an iron hand must lead to happiness.
Life corrected me and now the most used personality types include 16 types - this is the Myers-Briggs model. If someone has not read - I recommend, it is very well applied to programming.
16 personality types, two personality types are described here:
- Logic - Winnie the Pooh
- ethic - Piglet
These are normal people, it is happiness that God created us different, due to this we get great products, due to the synergy of different views on the final result.



Once all people are different, then there is the principle number 1. The principle of the necessary and sufficient diversity. This is not what I came up with. Fifty years ago, it was written in Ashby’s Introduction to Cybernetics. Therefore, the project manager comes to work at 9:00 and begins to observe. Then he communicates, mostly listening to people. Our task is to understand people, for this we must listen to them. And give instructions only last. Analyzes what is happening, trying in his practice to find something like that. In an adaptive control system - the most effective methods are based on precedents. When in BTSVN thrust a bunch-a bunch of samples. If an abnormal situation occurs, she begins to sort out cases and look for suitable ones. Similarly, the software project manager works. He gets two or three or four examples from his experience and tries to synthesize some solution from them for the current situation. And in order to understand whether the right decision or not, naturally it is necessary to try it, it is necessary to implement it, it is necessary to generalize and continue everything in a circle - to observe - to analyze - and the program project manager should have such an endless cycle.



History 2 . We do everything by the rules.
A competent effective specialist who is motivated to create the best solution, who has the fastest algorithm and at the same time has minimal resources - he likes to use all the best patterns that he knows, most of all he likes to use what he doesn’t know, but Vasya Pupkin said That new technology is cool.
Is there a problem here? It depens ...
If we make a utility for compression, data compression, image, sound, which is 10 times more effective than analogs, then probably that’s what we need to do. But here, as a rule, when I meet with this kind of behavior - this is a pattern, this is a frequent variant of behavior, which even has its own name - perfectionism. Premature optimization.
I'm trying to fix a person. What are we doing? We do not develop the best program in the world, we earn money with programs. And the problem of this situation is that the programmer does not remember the purpose of the work.



Principle 2 . Four necessary and sufficient conditions for effective work.
In order for the programmer to effectively solve the set, it is necessary that he:
1) Understand the purpose of the task. Clear - make money
2) How to do the work, be able to do it.
3) If we force a programmer to write a program, then we need to give him hours of free time, well, it is also desirable to have a computer, although in real life we ​​wrote on the sheets, then we donated to the puncher and did not see computers, but now the computer is still needed. Those. man must be able to solve this problem.
4) The task can not be solved for any time allotted to it, if a person has no desire. This person will tell you 101 reasons why this one he broke another term. If there is no motive, he will not look for at least one opportunity that will help him solve this task. Therefore, transfer the task to another programmer, and give it something interesting to it.



History . The programmer Ashmanova.
Why programmer Ashmanova? He did not work for Ashmanov, but there is a cool article that has been on the Internet for a long time, “Profanity of programmers”, this is completely a quote from there.
Also very typical behavior. Everything on my computer works. Programming is creativity, why clone it. On Friday, the finished will not, but on Monday for sure, well, or on Tuesday. Everything is fine, everything happens. Here in high schools we are taught environments, programming languages. Even students came who know what programming patterns are. But none of the universities do not teach students to work in industrial production, which is not called software development.

Therefore, this is due to a lack of experience, so we recall four necessary and sufficient conditions and, accordingly, the four roles should be performed by the manager if he wants to achieve the success of the project.



Does not understand the goal - to lead should be the navigator.
Do not know how to do - teach or find another more experienced employee who teaches.
Well, the assistant provides: a chair, a table, a computer.
And finally, you need to be able to motivate people. This is very important, it is one of the most difficult problems of software development. You need to be able to inspire people to be able to get the desired results.

The next story is Starstar.



He likes to argue, everything has his point of view. It can endlessly defend it, when even in the eyes it can be seen that he doubted, but no - he cannot be wrong. Clever. Some unnecessary terms, buzz-words use in the discussion of business issues. But this is not the worst, as a rule, the worst - that he has high self-esteem. He believes that he may be less interested in the project than his less qualified colleagues. This is a chilling effect on the team.
Somehow in St. Petersburg at one of my trainings there was once a fairly mature leader. 45 years. And so on all the cases that I represented, since then they have changed very little, he said - “dismiss nafig.” I tried to correct it - this is what should be taught, but this is the right goal to set. But when he said for the third time “dismiss nafig” - a colleague from another company, he handed him his business card through the aisle and said: “if you fire, call me”.



This is what I need. This is when one black sheep ruins my apple basket. I'd rather sacrifice one qualified player. But I will benefit from more effective communications. There will be less unnecessary discussions, there will be fewer transitions to personalities, there will be less disputes about how to do it properly, how beautiful to do it. Why? Because the presence of such a person does not allow the team to take shape.
Everyone in our industry came to the conclusion that the most efficient processes are formed in self-organizing, self-governing teams. Scrum, Agile Methodology - it's all about that.
The latest achievements of Carnegie Malone University are the Personal Software Process, the Team Software Process. The Team Software Process says that the main task of the project manager is to recruit the right people and make them work as a team. So DeMarco wrote a lot about this in his book Peopleware. Those who have not read it, I will not even ask you to raise and count your hands — go read it urgently. Without knowledge of this book in software development, in project management certainly nothing to do. Well, they - De Marco and Lister wrote that they do not know what to do in order to form a team. We need to recruit good people, water, fertilize and if God sends, the team will be formed. Based on my experience, I can reveal the secret - I know how to make such a command.
There is no leader without teams. And in my 50 years not only in the professional field, but also in sports, I have not seen a single team, such a Team with a capital letter, in which there would be no clear, clearly defined leader. A quote from a beloved classic: “we didn’t make a scandal, we lacked a leader. There are few real violent ones - there are no leaders. ”
One more thing, what's important, you just won't become a leader. Leader appointed - can not in any case. A person can become a leader himself if he deserves respect for his professional qualities and the trust of a team with his personal qualities. Another quote from another classic: "the leader chooses himself and asserts himself."

Okay - first an example, before we call the following principle.



Example. Quiet

The men behave restrained, try not to stick out, not to attract the attention of the boss., Hides, avoids any situations related to conflicts, hides up any negative information. At the trainings, we discuss cases with the audience, these are the options. Here is a wonderful option - one of the listeners said, listen - maybe he had a strict mother. Well, yes, I tried to describe the experience of a person who had a bad boss at a previous place of work, and he came to me, a priori no longer trusting his supervisor. This is the behavior of a person who is subject to violence, not in a physical sense, but in a psychological one.



And in different ways people get into the leaders. And let's start with the lower quadrant: no confidence, no professional recognition. When does this situation arise? When a “parachutist” is lowered into some established team and they say - he will be your boss. No one knows about his experience, nor about his human qualities. And therefore, for such a “parachutist”, software was developed - there is only one method, this is a strict assignment - setting short tasks, monitoring deadlines - everything goes pretty tough. So you can manage, but it is very inefficient, so we usually strive to move into the fourth quadrant.
Another situation. Trust team - is. Vasya Pupkin is a good programmer, half the project’s past. The manager of the last project went on increasing. Vasya was told - well, now you will be in charge. The team has confidence. Because not one pood of salt is drunk with Vasya. , ++, , — . , , . . Those. , , . , – .

Another situation. , . , -, . , , , . , . , , , . , . , , , . - . , . . , . , , . , - . . – . - . « , ». , , .

, , – – , . . – , – , – . – .
, .

. .



. , . , : , , . , , , . , - , 13- , , .



, , : , forming, storming, norming, performing – , , , Storming. , – - . , . , – ? – , , : 10 000 , 250 000 . , , – .
– , , , - . , , -. .

.



– , – , - . - , open source , , , , – , , - , . , , . , – . , – , – . – , .
, .
, ,

7. «».



, , , , . . ., . – . , , – …
, , , , , - – , , , , , .
– , . , .
. , , – , , .
– – - , . , , Scrum. . , . , . . . RUP, , , .
, – , , , best practices.
. – , , , , .
, , . . , , , . , , . , . , , , , , . , , . , – , — , , 4 500 , – , . – -, , . . , , , , – , – , , , , - , , – – .

Source: https://habr.com/ru/post/131866/


All Articles