Why 9 women can not give birth to a child for 1 month or About the use of simulation modeling in project management
Introduction
I think many of you have heard the expression “9 women cannot give birth to a child in 1 month!”. The context of this expression is obvious - in software development it is used as an allegory when they protest against completely unacceptable compression of terms . Here, under the compression understand the reduction of development time by expanding the team while maintaining the overall complexity of the development.
It is quite obvious that it is impossible to compress timelines to infinity. There is a certain limit. For example, a well-known expert in assessing the complexity of software development by Steve McConnell (Steve McConnell) this threshold is defined as 25% of the original estimates (see my previous article ). But this topic is not about the estimates of labor intensity ... So I wrote above "quite obvious ...". Think it's really obvious? Anyone? My recent experience has shown that this is by no means all. The project was very large and the deadline was inexorably approaching. It was decided to dramatically expand the team in order to be in time. The argument about "9 women" no one accepted. The team was expanded and we still did not have time on time. Could it have been somehow, except in words, to show how events will develop? Here is how to simulate such a situation, and will be my article. I am sure that many of you had to make some decisions, on which a great deal later depended. How did you take them? What guided? Did you know for sure exactly how events will develop depending on what choice was made? But the higher the position in the management hierarchy, the more far-sighted the decisions must be and the more expensive the mistakes are from wrong decisions. In most cases, decisions are made intuitively, based on life and professional experience. Making decisions, on a subconscious level, we take into account many factors, take into account the knowledge that we received earlier. But what if you need to explain to someone why you are so confident in your decision? Here, of course, you can apply all your persuasion skills, just “push” your position and calm down. For example, you can categorically say: "Yes, I'm just sure of it!", And ignore all other arguments. But this does not always work, especially if you are lower in rank than those to whom you prove your position.
It would be nice to be able to translate your "intuitive sensations" into some more tangible form. In a form that would allow:
Realize your own feelings
Check various guesses
Explicitly and clearly explain to the others why this or that solution will be more effective.
It is clear that with inadequate perception, no models will convince a person of the wrong decision. The model helps not so much to convince someone as to sort out your own arguments. ')
Decision Support Systems
Decision support systems come to the rescue to solve the problems posed. Such systems “make it possible to make decisions in difficult conditions for a complete and objective analysis of objective activity.” Just what we need when managing projects. To support decision-making using various methods. We are also interested in a method that will be most visible in order to solve the problems indicated above.
Simulation
Most fully these tasks correspond to the simulation method. This method allows you to build models that describe the processes as they would have been in reality. Such a model can be “lost” in time for both one test and a given set of them. However, it is worth remembering that the model always remains a model. It will never be able to take into account all factors, but with a certain degree of reliability it allows you to make informed conclusions.
Modeling tools
There are many different modeling tools. Among them are AnyLogic , GPSS and others. Each of them has its own advantages and its own shortcomings. Each of them has its own priority areas of application. I will not try to compare these systems, as this is beyond the scope of this topic.
In this article, I will consider the iThink system of isee systems, inc as an example. I chose this system, firstly, because it was I who heard about it for the first time, after reading Deadline’s book by Tom DeMarco, and secondly, because it seemed subjective to me to be the easiest to carry out modeling tasks specific to project management.
Example
Formulation of the problem
For ease of understanding, let’s take as a basis an example from the very book I mentioned above — Deadline. In it, the main character, Mr. Tompkins, and Dr. Jamid simulate the change in team performance depending on different conditions. Our “situation with women” is very similar, so the example is quite appropriate. To be fair, it should be noted that, in fact, the original source of this example is the book “Introduction to Systems: Thinking and ithink”.(Hanowr, NH High Performance Systems, Inc., 1994) . To build a model, create a new file in iThink and on the “Model” tab I will start adding its elements. But first you need to select factors and numerical values for modeling.
Factors
In order to reduce the lengthy reasoning in the romantic style, I will briefly highlight the factors that can influence the model:
Recruitment to the project
The cost of integrating new members into the team
Negative scale effect
The effect of merging from collaboration
Numbers
Next, we need to identify quantities that can be measured in some way. In this case, without this simulation will be impossible. So, our numerical values are:
The number of employees
The volume of the implemented functional in arbitrary units ( functional units )
Build a model in iThink
In order to make it easier to perceive the model, I will begin its construction from the end. Take two containers . One - complete, will symbolize the work that needs to be done. The second - empty, will symbolize the work that the team has already done. Connect them through the valve , which will determine how quickly the work from the first container will move to the second. Thus, this valve will characterize the performance of the team to perform the necessary work. Unfortunately, iThink is not very good friends with Russian signatures, so I’ll do all signatures in English. In the next step, we need to introduce the process of accepting new staff (for example, developers) to the team. It is also worth remembering that effectively the staff does not start working immediately. To start new employees, you must "enter" into the project. Even if they are very experienced and qualified people, they still need to delve into the project: to understand the accepted approaches, to clarify the nuances, etc. The diagram below shows:
a cloud - a resource pool, where new employees come from (for simplicity, we consider it to be infinite)
valve Income Staff - shows the speed with which people come to training
container New Staff - reflects the employees who are on training
gate Integration Level - shows the speed with which people join the team after training
Effective Team container - contains employees representing an efficient team
Next, we need to relate the staff (number of employees) and the change in the amount of implemented / unrealized functionality (in arbitrary units). To do this, we introduce another element in our model - the converter . A converter is a formula (rule) that converts one numeric value to another. In this case, the converter will reflect the so-called negative scale effect - diseconomies of scale , i.e. how much less effective each subsequent team member will be. This amendment I laid in the form of speculative graphics. In iThink, converters can be defined both graphically (a set of values through which the curve passes) and analytically - as a formula. In order not to overly dive into the details of the model and not to create a basis for disputes, I will not give formulas here. I am sure that everyone will have his own formulas. At the next stage, we will add one more converter - the “integration cost” - Integration Cost. This converter will show how the effectiveness of the team decreases when new employees are introduced (the “old-timers” are forced to distract from their main job in order to help the newcomers). Another interesting factor in teamwork is known - the “merge effect” - Join Effect. Sometimes over time, people in a team become more than the sum of individuals. People become a team! Supporting each other, they begin not only to work more efficiently than if they worked alone, but it is also easier to take on new members of the team - it’s easier to join the friendly team (unfortunately, it happens and vice versa). To simplify the model, we point out that this factor in a certain way influences the integration cost factor. At the last stage, we will add one more arrow so that after work is finished, stop hiring new people. In fact, it is necessary to stop taking it even earlier, but for now we will not complicate the model.
Model improvement
Of course, that the presented model is not perfect. Naturally, there are mistakes in it, there are ways to clarify and add new factors affecting the process. For example:
You can add that the “merge effect” affects the overall performance of the work and the speed of integration (and not just the cost of integration).
You can add that the training staff is also able to perform some useful work.
You can add the factor of staff leaving the project (for example, due to a change in corporate policy)
In general, there is enough space for creativity. :)
Decision-making
Now, actually, about making a decision. The resulting model helps to decide on how long the “infusion” of new members into the team is still quite effective. In order to understand what will happen, run the model.
As a result, we obtain the following graphs. The first chart shows how quickly the backlog will be converted into completed. The main thing that can be seen here is that the process is non-linear. But the second graph is more interesting. He is already showing exactly how the performance of the team changes as more team members are introduced. From the graph, for example, it is clear that in the short term, productivity drops. Notice how far it is from straight lines. In order to understand how many people a team can take into their ranks relatively painlessly, you need to adjust the Income Staff valve, set different values, and re-scroll the model.
Conclusion
In this topic, I briefly told you how to simulate your feelings, check your guesses and try to show someone the reasons and arguments of a decision being made. Unfortunately, this does not guarantee you that you can convince anyone. As always, the "silver bullet" does not exist. Simulation will not be able to make decisions for you and convince others. No software (at least at the level of development that we have now) will not reach your premonitions from the depths of your subconsciousness itself. But, fortunately, we have very effective tools that help us not only better understand our arguments, but also predict the situation.
UPD: At the request of the workers , the model itself is available here . You can experiment.