
Myths are attempts to understand the picture of the surrounding world, inherent in primitive culture.
Material production (processing of objects of the physical world) has tens of thousands of years of history. It went from stone caves to modern skyscrapers, from signal bonfires to mobile communications, from navigation through the stars to navigation through space satellites. On this path, a huge amount of knowledge of the natural sciences was accumulated: mathematics, physics, chemistry, geography, geology, biology, and so on.
What programmers produce is intangible - this is brainware, the result of the collective thinking process of the project team, materialized in one of the programming languages. Software engineering is just over half a century old. If we compare it with material production, then it is necessary to state that software development is still in its primitive state.
')
For a short history in the industry has developed a large number of myths, superstitions and religious delusions. These myths, superstitions and delusions, are sometimes very similar to the truth. They are widespread and have a detrimental effect on managers who have never professionally developed software themselves. The consequence of this is the use of inadequate methods and approaches in the management of programmers, which is guaranteed to lead the project to failure.
Here are the most common myths and facts that refute them.
Myth # 1. Software development can be accelerated
Nine pregnant women will not give birth to a child for a month. Adding people to a lagging project will only increase the lag. (
Brooks )
There is an optimal, in terms of costs, schedule execution time for the first delivery. TIME [month] = 2.5 (LABOR INPUTANCE [person * month]) ^ 1/3. The cost curve rises sharply if the planned schedule is shorter than the optimal one. Virtually no project can be completed faster than 3/4 of the calculated optimal schedule, regardless of the number of people employed in it. (
Barry Boehm )
Programmers work most efficiently without tight deadlines. Overtime and rush jobs reduce overall productivity. (
Demarco )
Myth # 2. Software development problems can be solved with tools and processes.
The use of new tools reduce productivity, but if lucky, it can increase by 2-20% (
Glass )
There are
dozens of methodologies, but none guarantee the result.
Coburn did not find a correlation between the success / failure of the projects and the methodologies used in the projects, be it CMMI Level 5 certified processes or “as it is” processes. His conclusion. The success of a software project is 100% determined by people.
Myth # 3. Developing software is easy
For many years, only 1/3 of projects fit into the triangle: quality-cost-time (
Standish Group ). Industry productivity growth is 3-5% per year (Demarco). The performance of programmers with similar experience and experience may differ 10 times (Brooks) or even 28 times (Glass).
Myth # 4. Iron Triangle Project
Product development lasted 5 years instead of one year. The project budget was exceeded by more than 5 times. Is it a failure? No - it was
Microsoft Word !
Limited efforts can bring tremendous effect. Most outstanding software products are created by students "in the garage."
Myth # 5. The work of programmers can not be measured
You can not measure the work of an individual programmer. What we measure, we get. But we must measure the work of the project team. Required.
- Percentage of tested use cases.
- Average productivity, SLOC per day for each member of the project team.
- Product flaws, bugs / KSLOC.
- The quality of architecture. I suggest that readers specify the unit themselves as an exercise.
Myth # 6. Anti-bureaucratic programmers
Programmers are anti-idiotic. Programmers eschew those who complicate their work. Programmers organize themselves around those who facilitate their work.
Myth # 7. Programmers work for money
Not. Not for the money. But for the money. Feel the difference.
The programmer is simple. It consists of four components: body, heart, mind and soul. The body needs money and security. Heart - love and acceptance. Reason - development and self-improvement. Soul - self-realization.
Give it all to your programmers, and you will get maximum efficiency. Something you will not find - go to your competitors.