Lecture
Classical project management [1] identifies two types of organization of human activity: operational and project.
Operational activity is applied when the external conditions are well known and stable, when production operations are well studied and repeatedly tested, and the functions of the performers are defined and constant. In this case, the basis of efficiency are narrow specialization and increased competence. "If the tram driver starts to look for new ways, expect trouble."
Where a new product is being developed, the external conditions and requirements for which are constantly changing, where the applied production technologies are used for the first time, where the search for new opportunities is constantly required, intellectual efforts and creativity, projects are required there.
A project is a temporary enterprise designed to create unique products, services, or results.
Operational and project activities have a number of common characteristics: they are performed by people, are limited by the availability of resources, are planned, executed and managed. Operational activities and projects differ mainly in the fact that operational activities are an ongoing and repetitive process, while projects are temporary and unique.
A time limit means that any project has a clear start and a clear conclusion. Completion occurs when project goals are achieved; or realized that the objectives of the project will not or can not be achieved; or the need for the project has disappeared, and it stops.
Uniqueness is also an important difference between project activity and operating. If the results of the project were not unique, the work to achieve them could be clearly regulated, establish production standards and implement in the framework of operating activities (pipeline). The objective of the project is to achieve a specific business goal. The task of operating activities is to ensure the normal flow of business.
The project is a means of strategic development (Figure 5). The goal is a description of what we want to achieve. Strategy - a statement of how we are going to achieve these goals. Projects transform strategies into actions, and goals into reality.
Figure 5. The project - a means of strategic development
Thus, each job that a particular employee performs is linked to the achievement of the organization’s strategic goals.
Projects are combined into programs. A program is a series of interconnected projects, the management of which is coordinated to achieve benefits and a degree of controllability that are not available for managing them individually.
Projects and programs are combined into portfolios. Portfolio - a set of projects or programs and other work, combined together with the goal of effectively managing this work to achieve strategic goals.
Projects and their management have always existed. As an independent field of knowledge, project management began to take shape at the beginning of the twentieth century. There are no uniform international standards in this discipline yet. The most famous competence centers:
■ PMI, Project Management Institute, PMBOK - American National Standard ANSI / PMI 99-001-2004.
■ IPMA, International Project Management Association. In Russia - SOVNET.
About 50 years ago, humanity began to live in a new socio-economic formation, which is called the informational or post-industrial society. We live in an era of change, globalization and intellectual capital.
The era of change. Everything in the world began to change continuously and rapidly. Abundance has become the cause of intense competition. Innovation is an essential attribute of our time. “If you have slow Internet access, you can forever lag behind the development of information technology.” The practice must constantly be restructured in relation to new and new conditions. Example.
Hewlett-Packard gets a large share of the profits on products that did not even exist a year ago [2].
Globalization. Universal interdependence and interconnectedness. Multinational companies. Business goes where labor is cheaper. The Internet. Competition without limits. Example. Google. During the night, each of us, in principle, can create a multi-million dollar company in our garage. With the help of the Internet you can enter a market in which more than 100 million consumers.
Talents decide everything. Simple mobilization of funds and efforts can no longer ensure progress. Recall F. Brooks [3], "If the project does not fit the deadlines, then adding labor will delay it even more." The idea of wealth is now associated not with money, but with people, not with financial capital, but with "human". The labor market is turning into a market of independent specialists and its participants are becoming increasingly aware of possible choices. Intellectual labor begin to determine their own price.
Humanity knows two types of activity. Reproductive activity (labor) is a copy, a copy of the activity of another person or a copy of his own activity, mastered in previous experience. Activities such as, for example, labor of a turner in any machine shop, or the routine daily activities of a manager-manager at the level of once and for all assimilated technologies. Productive activity (creativity) is an activity aimed at obtaining an objectively new or subjectively new (for a given employee) result.
Reproductive activity is a thing of the past. In a post-industrial society, intelligence is the main production force. Today, from 70 to 80% of everything that people do today is produced with the help of their intelligence [4]. In any product made in the United States, the proportion of wages is 70 percent. But this is an average of all products. As for software development, almost everything that is produced in this industry is created using intelligence.
An ever smaller amount of human activity can be organized in the form of repetitive operations. The traditional example of operations is the work of accounting. But life is changing so rapidly that today, according to knowledgeable people, the preparation and submission of the annual financial report is being implemented as an independent project each time.
The project is the basis of innovation. To do what other companies have not yet thought of, to do it as quickly as possible, otherwise others will. Offer the consumer a better product or a product, the need for which the consumer can not even realize.
The objective of the project is to achieve a specific business goal, subject to the limitations of the “iron triangle” (Figure 6). This means that none of the corners of the triangle can be changed without affecting the others. For example, to reduce time, you will need to increase the cost and / or reduce the content.
Figure 6. “Iron Triangle” design constraints
According to the current version of the PMBOK standard [1], the project is considered successful if all the requirements of the customer and the project participants are satisfied . Therefore, the software development project today has not three, but four success factors:
This fourth success factor should be replicable if the enterprise wants to be effective. A successful project is characterized by a constant feeling by its participants of a sense of satisfaction and pride in the results of their work, a sense of optimism. There is nothing more disastrous for a project than indifference or despondency of its participants.
Efficiency is the ratio of the result to the costs incurred. You can not consider the effectiveness, based only on performance: the more you produce, the more you do, the higher your efficiency. With this approach, you can "slaughter the chicken that lays the golden eggs." Costs should not be confused with investments. Payment of rent, electricity, utility payments - costs. Creating and consolidating an effective team is a strategic acquisition of a company. Training project participants - investments. Investing in people is an increase in the numerator in the formula of effectiveness. Departure from the company of all professionals after the project, performed on the principle of "at any cost" - the costs, and it is very difficult to recharge. Increasing competition indicates a completely clear trend in the global economy - personnel is a form of investment, assets that need to be able to grow, manage and maintain. Today, people are capital.
A modern enterprise is obliged to treat its employees as well as its best customers. The main capital of a modern company is knowledge. Most of this knowledge is inseparable from their carrier, man. Those enterprises that do not understand this, will not survive because they can not be effective. Today, an effective enterprise is a service. The company, on the one hand, provides services and products to its customers, and on the other, jobs for professional staff. The principles of “One enterprise for life”, “Work productively, and the enterprise will take care of you” - become a thing of the past. Look at the IT labor market - the rules are set by professionals.
The organizational structure of the company reflects its internal structure, the flow of control actions, the distribution of labor and the specific features of production. The functional and design organizations are opposite poles, and the matrix organization is intermediate states. There is no one better organizational structure. It makes no sense to oppose functional structures and design organizations.
A synonym for a functional structure is a hierarchical structure (Figure 7).
Figure 7. Functional structure
The functional structure has the following features:
The functional structure assumes a multi-level hierarchy. The heads of functional units are heads of departments, heads of their subordinate services, departments, laboratories, sectors, groups. And every boss has a deputy and, sometimes, not one. Examples: ministries, departments, research institutes and enterprises of the Soviet period.
At the other end of the spectrum of organizational structures is the project structure (Figure 8).
Figure 8. Project structure
In purely design organizations:
Project organizations are not the most efficient, but sometimes the only possible ones to carry out projects that are physically remote from the performing organization, for example, the construction of a new oil pipeline.
In software development, matrix organization is most common. There are three types of matrix organizational structure: weak, balanced and strong (Figure 9 - Figure 11). Moreover, in companies that are engaged in software product development, functional units are defined in accordance with the product line. For example, the CRM systems development department, the financial systems development department, the additional products development department.
In companies that are mainly focused on custom software development, functional units are often combined in accordance with the information technology used. For example, database development, J2EE application development, web development, testing, documentation, etc.
Figure 9. Weak matrix
In a weak matrix, the role and authority of the employee who coordinates the project is very limited. The real project management is carried out by one of the functional managers. The project coordinator, often referred to as the “tracker”, helps this manager to collect information on the status of the project work being carried out, takes into account costs, draws up reports.
Figure 10. Balanced Matrix
A balanced matrix is characterized by the appearance of a project manager who actually manages the resources allocated to a project. He plans work, distributes tasks among performers, controls deadlines and results, bears full responsibility for achieving the objectives of the project, subject to restrictions.
In balanced matrices, the problem of double subordination is most pronounced. The head of the functional unit and the project manager have a roughly equal impact on the material and professional growth of the developers.
Figure 11. Strong matrix
The strong matrix recognizes that project management is an independent area of competence in which it is necessary to accumulate expertise and use common resources. Therefore, in a strong matrix, project managers are combined into an independent functional unit - a project management office (PMO). PMO develops corporate policies and standards in the field of project management, plans and implements the professional development of managers.
One of the features of matrix structures is that they become “flat”, the multistage hierarchy disappears. An enterprise, as a rule, is divided into functional departments, in which specialists of different categories work, who are directly subordinate to the head of the department. Heads of laboratories, sectors, groups are abolished as superfluous. In matrix structures, the role of the head of the functional unit in the production process is markedly reduced compared with the functional structures. In his competence remain the issues of strategic development of the functional direction, planning and development of career of employees, issues of material and technical support of work. It should be borne in mind that such a redistribution of powers and responsibilities from functional managers to project managers often serves as a source of conflict in companies as they move from a functional structure to a matrix.
Each software development project has its own organizational structure, which determines the distribution of responsibilities and authorities among project participants, as well as responsibilities and reporting relationships. The smaller the project, the more roles you have to combine one performer.
The roles and responsibilities of participants in a typical software development project can be divided into five groups:
The analysis group includes the following roles:
The management group consists of the following roles:
The production group includes:
В большом проекте может быть несколько производственных групп, ответственных за отдельные подсистемы. Как правило, проектировщик выполняет роль лидера группы и управляет своим подпроектом или пакетом работ. Стоит не забывать, что руководитель проекта делегирует полномочия, но не ответственность.
Группа тестирования в проекте состоит из следующих ролей:
Участники группы обеспечения, как правило, не входят в команду проекта. Они выполняют работы в рамках своей процессной деятельности. К группе обеспечения можно отнести следующие проектные роли:
В зависимости от масштаба проекта одну роль могут исполнять несколько человек. Например, разработчики, тестировщики, технические писатели. Некоторые роли всегда должен исполнять только один человек. Например, Руководитель проекта, Системный архитектор. Один человек может исполнять несколько ролей. Возможны следующие совмещения ролей:
Крайне нежелательно совмещать следующие роли:
Не раз приходилось наблюдать, как в критические периоды проекта его менеджер-разработчик с увлечением правит очередные баги, а проектная команда в полном составе стоит у него за спиной и наблюдает за этим процессом. Это плохой пример руководства проектом.
Программисты любят и умеют программировать. Пусть они этим и занимаются. Не стоит загружать программистов несвойственной для них работой. В каждом проекте разработки программного продукта много других работ: бизнес-анализ, проектирование эргономики, графический дизайн, разработка пользовательской документации. Эти работы с программированием не имеют ничего общего. Для них требуются совершенно другая квалификация и другой склад мышления.
При кустарном производстве программ эти задачи, как правило, поручаются программистам, которые это делать не умеют и не любят. Получается обычно плохо, да еще и дорого. В силу своей интроверсии, граничащей с аутизмом, программист просто не в состоянии увидеть свою программу чужими глазами — глазами пользователей. Никто уже не хочет работать с программами с технологической парадигмой навороченного пользовательского интерфейса — кустарным творением программистов — когда для того чтобы работать с системой, надо обязательно знать, как она устроена. Это типичное творение программиста, которому гораздо важнее видеть, как работает его программа, чем разбираться в том, что она делает для пользователя. Поэтому, необходимо привлекать в проектную команду бизнес-аналитиков, эргономистов, художников-дизайнеров, документалистов. Разделение труда и специализация — залог перехода от кустарного производства к более эффективному промышленному производству.
Из профессиональных программистов получаются отличные тестировщики. Лучшая команда тестирования, которую я встречал, была в Luxoft. Это были маститые программисты из одного академического НИИ с опытом 20-30 лет. Они не осваивали новые программистские технологии, но исключительно эффективно ломали то, что было сделано на их основе. Однако, совмещать одновременно роли программиста и тестировщика — плохая практика. Хороший программист убежден, что он пишет программы правильно и ему психологически тяжело допустить, что где-то в его коде может быть ошибка. А ошибки есть всегда!
The organizational structure of the project must necessarily include an effective reporting system, assessing the progress of the project and a decision-making system. We can recommend weekly meetings on the status of the project, at which risks are analyzed, the results achieved in the previous week are evaluated, and the tasks for the new period are specified.
The Scrum model recommends daily meetings on the status of work - the “Stand Up Meeting”, but it seems to me that this is applicable, rather, for small working groups of 3 to 5 developers. Although during critical periods of the project, daily meetings had to be held.
It is important to remember that the organizational structure of the project is a “living” organism. It begins to take shape at the planning stage and may change during the course of the project. The instability of the organizational structure (frequent replacements of executors) is a serious problem in managing complex software projects, since there is a time to enter the project context, which can be measured in months.
Comments
To leave a comment
software project management
Terms: software project management