Thursday, 21 April 2022

The project is the basis of innovation

 
 


 

Classical project management distinguishes two types of organization of human activity: operational and project.


Operating activities are applied when the external environment is well known and stable, when production operations are well studied and repeatedly tested, and the functions of the performers are defined and permanent. In this case, the basis of effectiveness is a narrow specialization and increase in competence. 


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, intellectual efforts and creativity are constantly required, there projects are required.


A project is a temporary enterprise designed to create unique products, services, or deliverables.
Operational and project activities have a number of common characteristics: they are performed by people, limited by the availability of resources, planned, executed and managed. Operations and projects differ mainly in that operations are a time-consuming and repetitive process, while projects are temporary and unique.


A time limit means that any project has a clear start and a clear end. Completion occurs when the project objectives are achieved; or be aware that the objectives of the project will not or cannot be achieved; or the need for the project has disappeared and it is terminated.


Uniqueness is also an important difference between project activities and operational activities. If the results of the project were not unique, the work to achieve them could be clearly regulated, establish production standards and implemented within the framework of operational activities (conveyor). The task of the project is to achieve a specific business goal. The task of operational activity is to ensure the normal flow of the business.


The goal is to describe what we want to achieve. Strategy is a statement of how we are going to achieve these goals. Projects transform strategies into action and goals into reality.

Thus, each work that a particular employee performs is tied to the achievement of the strategic goals of the organization.


Projects are combined into programs. A program is a series of related projects whose management is coordinated to achieve benefits and a degree of manageability that are not available when managed separately.


Projects and programs are combined into portfolios.

 

 A portfolio is a set of projects or programs and other works combined together to effectively manage these works 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. 


About 50 years ago, humanity began to live in a new socio-economic formation, which is called an information or post-industrial society. We live in an era of change, globalization and intellectual capital.
An era of change. Everything in the world began to change continuously and rapidly. Abundance has become the cause of intense competition. Innovation is an indispensable attribute of our time. 


Hewlett-Packard makes a large share of the profits on goods that didn't even exist a year ago.


Globalization. Universal interdependence and interconnectedness. Multinational companies. Business goes where labor is cheaper. Internet. Competition without borders. Example. Google. Overnight, any of us can basically create a multi-million dollar company in our garage. With the help of the Internet, you can enter a market with more than 100 million consumers.


Talent decides everything. The mere mobilization of funds and efforts can no longer bring about progress. "If the project does not meet the deadlines, then the addition of labor will delay it even more." The idea of wealth is now associated not with money, but with people, not with finance capital, but with "human" capital. The labor market is turning into a market of independent specialists and its participants are increasingly aware of the possible choices. Knowledge workers begin to independently determine their own price.


Mankind knows two types of activities. Reproductive activity (labor) is a cast, a copy of the activity of another person or a copy of one's own activity, mastered in previous experience. Such activities as, for example, the work of a turner in any mechanical shop, or the routine daily activities of a manager-manager at the level of once and for all learned technologies. Productive activity (creativity) is an activity aimed at obtaining an objectively new or subjectively new (for this employee) result.


Reproductive activity is a thing of the past. In a post-industrial society, intelligence is the main productive force. Today, 70 to 80% of everything that people do today is produced with the help of their intellect. In any commodity made in the U.S., the share of wages is 70 percent. But this is the average for all goods. As for software development, almost everything that is produced in this industry is created with the help of intelligence.


Less and less human activity can be organized in the form of repetitive operations. A traditional example of operational activity 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 implemented each time as an independent project.


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 do it. To offer the consumer a better product or such a product, the need for which the consumer cannot even yet realize.


Criteria for the success of the project

 

The task of the project is to achieve a specific business goal, subject to the limitations of the "iron triangle". This means that none of the corners of the triangle can be changed without affecting the others. For example, to reduce the time, you will need to increase the cost and / or reduce the content.
According to the current edition of the PMBOK standard, a project is considered successful if all the requirements of the customer and project participants are satisfied. Therefore, the software development project today has not three, but four success factors:


1.    Made in accordance with the specifications.
2.    Completed on time.
3.    Completed within budget.
4.    Each member of the team left work at 18:00 with a sense of success.
 

This fourth success factor must become reproducible if the enterprise is to be efficient. 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 the indifference or despondency of its participants.


Efficiency is the ratio of the result obtained to the costs incurred. You can't consider efficiency based on performance alone: the more you produce, the more you do, the higher your efficiency. With this approach, you can "slaughter a goose that lays golden eggs for dinner." Costs should not be confused with investments. Payment for rent, electricity, utility bills are costs. 

 

Building and retaining an effective team is a strategic acquisition of a company. Training of project participants – investments. Investing in people is an increase in the numerator in the formula of efficiency. The departure of all professionals from the company after a project carried out on the principle of "at any cost" is a cost, and very difficult to replenish. Growing competition points to a very clear trend in the global economy – personnel is a form of investment, assets that need to be able to grow, manage and preserve. Today, people are capital.


A modern company is obliged to treat its employees in the same way as its best customers. The main capital of a modern company is knowledge. Most of this knowledge is inseparable from its carrier – a person. Those businesses that don't understand this won't survive because they can't be efficient. 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 company will take care of you" are becoming a thing of the past. Look at the labor market in IT – the rules are set by professionals.


Project and organizational structure of the company


The organizational structure of the company reflects its internal structure, the flows of control actions, the distribution of labor and the specific features of production. Functional and project organizations are opposite poles, and matrix organization are intermediate states. There is no one better organizational structure. There is no point in pitting functional structures against design organizations.
A synonym for functional structure is a hierarchical structure.

The functional structure has the following features:


•    The principle of unity of command is preserved
•    Clear and stable working conditions
•    Well adapted for operational activities.
•    Specialization of departments allows you to accumulate expertise.
•    Decision-making and communication between performers are difficult. Carried out only through management.
•    Management is concentrated and based on the competence of senior management
•    As a rule, control over the progress of the project is ineffective (there is no complete picture)
 

The functional structure implies a multi-level hierarchy. Heads of functional units are heads of departments, heads of subordinate services, departments, laboratories, sectors, groups. And each boss has a deputy and, at times, more than one. Examples: ministries, departments, scientific institutes and enterprises of the Soviet period.


At the other end of the spectrum of organizational structures is the project structure.

In purely design organizations:


•    The project is organized as an independent production unit.
•    Staff for the project are recruited under temporary contracts.
•    Upon completion of the project, the staff is dismissed.
•    Slow start.
•    Experience is not cumulative.
•    Commands are not saved.
 

Design organizations are not the most efficient, but sometimes the only possible ones for implementing projects that are physically remote from the executing organization, for example, the construction of a new oil pipeline.


In software development, the most common matrix organization. There are three types of matrix organizational structure: weak, balanced and strong (Figure 9 – Figure 11). Moreover, in companies that are engaged in product software development, functional units are defined in accordance with the product line. For example, the department of development of CRM-systems, the department of development of financial systems, the department of development of additional products.
In companies that focus mainly on custom software development, functional units are more often combined in accordance with the information technologies used. For example, database development department, J2EE application development department, web development department, testing, documentation departments, etc.

In a weak matrix, the role and authority of the employee who coordinates the project is severely limited. The actual management of the project is carried out by one of the functional managers. The project coordinator, it is also often called a "tracker", helps this manager to collect information about the status of the project work being performed, takes into account costs, and compiles reports.

A balanced matrix is characterized by the fact that a project manager appears, who actually manages the resources allocated to the project. He plans the work, distributes tasks among the performers, controls the timing and results, is fully responsible for achieving the goals of the project, subject to restrictions.
In balanced matrices, the problem of double subordination is most clearly manifested. The head of the functional unit and the project manager have approximately equal influence on the material and professional growth of developers.

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 – the project management office (PMO). The 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 multi-stage hierarchy disappears. The enterprise, as a rule, is divided into functional departments, which employ specialists of different categories, directly reporting to the head of the department. Heads of laboratories, sectors, groups are abolished as unnecessary. 

 

In matrix structures, the role of the head of the functional unit in the production process is markedly reduced, in comparison with functional structures. In his competence remain the issues of strategic development of the functional direction, planning and career development 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 during their transition from a functional structure to a matrix one.


Organization of the project team

 

Each software development project has its own organizational structure, which determines the distribution of responsibility and authority among the project participants, as well as duties and reporting relationships. The smaller the project, the more roles one performer has to combine.
 

The roles and responsibilities of the participants in a typical software development project can be divided into five groups:


1.    Analysis. Extract, document, and maintain product requirements.
2.    Management. Definition and management of production processes.
3.    Production. Software design and development.
4.    Testing. Software testing.
5.    Provision. Production of additional products and services.
 

The analysis team includes the following roles:
•    Business analyst. Construction of a model of the subject area (ontology).
•    Business architect. Develops a business concept of the system. Defines the overall vision of a product, its interfaces, behavior, and limitations.
•    Systems analyst. Responsible for translating product requirements into functional software requirements.
•    Requirements specialist. Documentation and maintenance of product requirements.
•    Product manager (functional customer). Represents the interests of product users in the project.
 

A management group consists of the following roles:


•    Project Manager. Responsible for achieving the objectives of the project under the specified constraints (in terms of timing, budget and content), carries out operational management of the project and allocated resources.
•    Curator of the project. Evaluation of project plans and execution. Provisioning.
•    System architect. Development of the technical concept of the system. Making key design decisions regarding the internal structure of the software system and its technical interfaces.
•    Head of the testing team. Definition of testing goals and strategies, testing management.
•    Responsible for managing changes, configurations, for assembling and delivering the software product.
 

The production group includes:


•    Designer. Design of components and subsystems in accordance with the overall architecture, development of architecturally significant modules.
•    Database designer.
•    User interface designer.
•    Developer. Design, implementation and debugging of individual modules of the system.
 

In a large project, there may be several production teams responsible for individual subsystems. Typically, the designer acts as a team leader and manages his sub-project or work package. It should not be forgotten that the project manager delegates authority, but not responsibility.
 

The test team in a project consists of the following roles:


•    Test designer. Development of test scenarios.
•    Developer of automated tests.
•    Tester. Product testing. Analyze and document the results.
 

Members of the provisioning team are usually not part of the project team. They perform work as part of their process activities. The following project roles can be assigned to the provisioning group:


•    Technical writer.
•    Translator.
•    GUI designer.
•    Developer of training courses, trainer.
•    Participant of the review.
•    Sales and marketing.
•    System administrator.
•    Technologist.
•    Specialist in tools.
•    Other.
 

 

Depending on the scale of the project, several people can perform one role. For example, developers, testers, technical writers. Some roles should always be performed by only one person. For example, Project Manager, System Architect. One person can play several roles. The following role combinations are possible:


•    Project Manager + System Analyst (+ System Architect)
•    System Architect + Developer
•    System Analyst + Test Designer (+ Technical Writer)
•    System Analyst + User Interface Designer
•    Responsible for configuration management + responsible for assembly and delivery (+ developer)
 

It is highly undesirable to combine the following roles:


•    Developer + Project Manager
•    Developer + system analyst.
•    Developer + user interface designer.
•    Developer + tester
 

More than once I had to observe how during critical periods of the project, its manager-developer enthusiastically corrects the next bugs, and the project team in its entirety stands behind him and observes this process. This is a bad example of project management.


Programmers love and know how to program. Let them do it. Do not load programmers with uncharacteristic work for them. In each project of software product development there are many other works: business analysis, ergonomic design, graphic design, development of user documentation. These works have nothing to do with programming. They require a completely different skill and a different mindset.


In artisanal software production, these tasks are usually assigned to programmers who do not know how to do this and do not like to do it. It usually turns out badly, and even expensive. Due to his introversion, bordering on autism, the programmer is simply not able to see his program through someone else's eyes – the eyes of users. No one wants to work with programs with a technological paradigm of a sophisticated user interface – an artisanal creation of programmers – when in order to work with a system, it is necessary to know how it works. This is a typical creation of a programmer, who is much more important to see how his program works than to understand what it does for the user. Therefore, it is necessary to involve business analysts, ergonomicians, artists-designers, documentarians in the project team. Division of labor and specialization are the key to the transition from artisanal production to more efficient industrial production.


Professional programmers make excellent testers. The best testing team I've come across was at Luxoft. They were venerable programmers from one academic research institute with 20-30 years of experience. They did not master new programming technologies, but extremely effectively broke what was done on their basis. However, combining the roles of programmer and tester at the same time is a bad practice. A good programmer is convinced that he writes programs correctly and it is psychologically difficult for him to admit that there may be an error somewhere in his code. And there are always mistakes!


The organizational structure of the project must necessarily include an effective system of reporting, evaluation of the progress of the project and a decision-making system. You can recommend weekly meetings on the status of the project, which analyze the risks, evaluate the results achieved in the previous week, and clarify the tasks for the new period.

 


The Scrum model recommends daily "Stand Up Meetings", but I think this is more applicable for small teams of 3 to 5 developers. Although during the critical periods of the project, it was necessary to hold daily meetings.


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 can change during the course of the project. 

Organizational instability (frequent replacement of performers) is a serious problem in managing complex software projects, since there is a time of entry into the context of the project, which can be measured in months.


No comments:

Post a Comment