Tuesday, 15 February 2022

Working product | Discipline of obligations | Project





Due to the creative nature of programming, the significant youth of the participants in software development, some issues of ordinary industrial production, which have long become a common place, are relevant. First of all, it is the discipline of obligations and the working product. This knowledge, being mastered in practice, is extremely useful in teamwork. In addition, the software development methodologies widely used in practice, supported by the relevant software tools, actively use these concepts, clarifying and specifying them.


Work Product


One of the essential conditions for the controllability of the industrial process is the availability of separately designed results of work - both in the final delivery and intermediate. These individual results as part of the overall results of work help to identify, plan and evaluate the different parts of the result. Intermediate results help managers of different levels to track the process of project implementation, the customer gets the opportunity to get acquainted with the results long before the end of the project. Moreover, the project participants themselves in their daily work receive a simple and effective way to exchange work information – the exchange of results.




This result is a work product – any artifact produced during the software development process, for example, a file or set of files, documents, product components, services, processes, specifications, invoices, etc.


The key difference between a working product and a software component is that the former is not necessarily material and tangible (not to be engineered), although it can be. An intangible working product is, as a rule, some well-established process - an industrial process for the production of any product, an educational process at the university (at the faculty, at the department), etc.


It is important to note that the working product is not necessarily an integral part of the final delivery. For example, an established system testing process is not delivered to the customer along with the system itself. The ability to manage projects (not only in the field of programming) is largely related to the art of identifying the necessary working products, insisting on their creation and in their terms to accept the intermediate stages of work, organizing the synchronization of various working groups and individual specialists.



Many methodologies include descriptions of specific work products used in the process – CMMI, MSF, RUP, etc. For example, in MSF it is program code, application diagrams and class diagrams, iteration plan ( iteration plan), unit test, etc. For each of them, the content, responsible for development, place in the process, and other aspects are accurately described.


Let us dwell in a little more detail on intermediate working products. A software component created in a project by one developer and provided for use by another developer turns out to be a working product. It should be minimally tested, the names of interface classes and methods should be corrected, perhaps, remove unnecessary things that are not related to the functionality of this component, separate public and private, etc. 

 

That is, to do some additional work, which, perhaps, the developer would not do if he continued to use the component only himself. The scope of this additional work increases significantly if the component is to be submitted for use in development, for example, to another development center (for example, to foreign partners, which is a frequent situation in offshore development). 

 

So, the production of good intermediate working products is very important for the success of the project, but requires additional work from their authors. Working alone without providing working products is easier and preferable for many. But teamwork requires overhead costs, including in the form of spending on the creation of intermediate working products. Of course, the quality of these products and the labor costs for their manufacture vary greatly depending on the situation, but here it is important to understand the principle itself.



So, to summarize, an intermediate working product must necessarily have a clear goal and specific users in order to minimize the overhead of its creation.



Commitment Discipline



The basis of the division of responsibilities in business and industrial production, corporate rules and norms is a certain business ethics, the form of relations is the discipline of obligations. It is widely used in practice and is one of the possible forms of social relationship between people. The introduction into business and industry of other models of human relations - family, sexual, friendly, etc. often causes serious damage to business, generates conflict, reduces efficiency.


The basis of this form of relationship is obligations that:

  • are given voluntarily;
  • do not come easily – work, resources, schedule should be carefully taken into account;
  • between the parties includes what will be done, by whom and in what time frame ;
  • openly and publicly formulated (i.e. it is not "secret knowledge").

 

Besides:

  • the responsible party strives to fulfil obligations, even if assistance is needed;
  • before the deadline, as soon as it becomes apparent that the work cannot be completed on time, new obligations are discussed.
  • It should be noted that the discipline of obligations is not some kind of set of rules and laws, it is also different from corporate culture. This is a certain group psychic phenomenon that exists in the society of modern people. The above points are not an exhaustive description of this phenomenon, but only manifest and denote it, so to speak, evoke the necessary memories.




The discipline of obligations, despite the obviousness, sometimes, is not just implemented in practice, for example, in creative areas of human activity, in the field of training, etc. There are individual people to whom this discipline is internally alien, regardless of their type of activity.



On the other hand, people who have mastered this discipline often seek to apply it in other areas of life and human relations, which is not always justified. We emphasize that this discipline is far from the only model of relations between people. As an example, we can consider family relations or friendships, which obviously cannot be expressed by the discipline of obligations. So, instead of accuracy and punctuality in these relationships, emotional and sensual empathy is important, without which they are impossible.



The discipline of commitment is given a lot of attention within MSF, because there is no leader, no boss in the team model. This discipline is also implemented in Scrum: the Scrum team has many freedoms, and because of this – great responsibility. The rules of action when obligations cannot be fulfilled by such a team are also regulated.


Project


The classical operational division of labor goes back to Adam Smith and is the essence of mass industrial production. That is, there is a well-established process of work and there are areas of specialization - one workshop sharpens, another planes, the third assembles, the fourth paints, etc. The capacity of such production far exceeds the performance of all the work by one person or one group. Thus, in the XIX century, the operational division of labor became the basis of manufactories, which supplanted individual, handicraft production. At the beginning of the XX century, this structure of work was transferred to management - that is, numerous managers controlled individual areas of work.



However, the high level of complexity of a number of tasks in industry and business does not allow (fortunately!) to work like this everywhere. There are many creative, new tasks where, perhaps, in the future it will be possible to create conveyors, but at the moment their solution requires a significant concentration of people's forces and energy, unexpected decisions, as well as luck and a light hand. This is the area of projects.



A project is a unique (in contrast to traditional operational industrial production) activity that has a beginning and an end in time, aimed at achieving a certain result / goal, creating a certain, unique product or service, with given restrictions on resources and deadlines, as well as quality requirements and an acceptable level of risk.


In particular, software development is predominantly a project area.



It is necessary to distinguish between industrial and creative projects. They have different management principles. The complexity of industrial projects is in a large number of different organizations, companies and the relative uniqueness of the work itself. An example is the construction of a multi-storey building. This also includes various international projects and not only industrial - educational, cultural, etc. The task in managing such projects is to cover everything, control everything, not forget anything, bring everything together, achieve movement, and a coordinated movement.



Creative projects are characterized by the absolute novelty of the idea - a new service, a completely new software product, which has not yet been on the market, projects in the field of art and science. Any start-up business, as a rule, is such a creative project. Moreover, the novelty in such projects is not only absolute - this has never happened before. This may have already happened, but not with us, the project team. That is, there is a huge amount of relative novelty for the people themselves who embody this project.



Software development projects lie between these two poles, occupying a different position in this space. Often they are complex because they are voluminous and are at the junction of various disciplines - the target business where the software product should be embedded, and complex, non-trivial programming. Often the development of unique electronic-mechanical equipment is added here. On the other hand, since programming is actively promoted in different spheres of human activity, this happens by creating completely new, unique products, and their development and promotion have all the features of creative projects.


Project management is an area of activity in which, within the framework of certain projects, clear goals are defined and achieved while finding a compromise between the amount of work, resources (such as money, labor, materials, energy, space, etc.), time, quality and risks.


Let's note a few important aspects of project management.



Stakeholders are people from the outside who are not directly involved in the project, but influence it and / or are interested in its results. These can be future users of the system (for example, in a situation where they and the customer are not the same thing), the top management of the development company, etc. Identification of all stakeholders and competent work with them is an important component of successful project management.


Project scope is the boundaries of a project. This is a very important concept for software projects due to the variability of requirements. It often happens that developers begin to create one system, and then, gradually, it turns into another. And for sales managers, as well as the customer, nothing radically happened, and from the point of view of the internal structure of the software, technologies, implementation algorithms, architecture - everything is radically changing. Project management should monitor such trends and deal with them competently.


Trade-offs are a critical aspect of software project management because of software consistency. It is important not to lose all agreed parameters and sides and to find an acceptable compromise. One of the techniques for managing trade-offs will be discussed in the context of studying the MSF methodology.

No comments:

Post a Comment