How to manage a software project ?

January 10, 2013 Leave a comment


Professional approach to the work in any sector of the economy involves getting benefits from it. Development of programs is not an exception. Therefore, the economic efficiency of the project is a main goal which needs to be put for developers. It can be simply defined as an attitude of sum of the desired income towards the sum of the cost. If a project (for example, a computer game) is oriented on the massive usage it will be very difficult to count any profit in advance. One of the methods of estimation of profits is an analysis of projects-competitors. But it is difficult to obtain an accurate information on the number of sold copies of the product. That is why any data on the level of income may be wrong because "other people's money is easier to count than yours."

So, if the income cannot be accurately calculated, then, for achieving the desired goals, it is important to estimate and minimize costs for development of the project clearly. In fact, this work is done by project-managers. At first glance, the work of this person is unnoticeable and presence of it in the team appears to be not essential. But the project without the project-manager can be compared to an orchestra without a conductor, or a football team without a captain. The team seems to be doing its job, but it does not bring useful results. Consequently, to minimize any costs for development, the manager must work in the following directions:
1. Creation infrastructure of project. A working process must be organized in such a way that would not prevent participants to work with maximal efficiency and self-feedback. A conditioner in an apartment, expensive and comfortable furniture, the monitor with a bigger diagonal, expenses on a social package cost far less than the benefit from the high-quality executed work. In addition, all these things will be used in the further projects, so their part in the cost of the project is actually negligible.
2. Project management personnel. A primary objective is the proper distribution of responsibilities between team members and the selection of leaders of departments. At first glance, it always seems that the number of leaders is too big and they get their salary in vain. Therefore, they need to be selected depending on the number of participants of the project. If there are a lot of managers, they will have nobody to manage and actually they will receive their salary in vain. If there are fewer leaders than required, their participation in negotiations and meetings with subordinates will take a lot of time for them, which will reduce management efficiency. It is considered optimal if the group of workers consists of not less than 3, but no more than 8 persons. So if the number of project participants is less than 8, then a manager can manage all inferiors independently; in other case, it is expedient to divide all the participants into groups depending on professional duties (programmers, designers, testers), and to appoint in each of them the leader (group leader). Then the project manager will work with leaders of groups, and those will manage their group.
3. Managing the development. Here the most important task is to predict all the details of the project before starting any work on it, because, if they are described more precisely the faster and easier development of the project will be. Otherwise, the code will have to be changed many times and so the development of the project can be delayed. Another task is to identify all possible contingencies (risks)that may come up during the work. Any software product contains certain unique functionalities, that the team did not execute before, so that is why their implementation in a certain moment of time can appear very expensive or burdensome. For this purpose, risks should be predicted as much earlier as possible and decisions need to be made in order to avoid them. For example, those functionalities, that are difficult for the team to execute independently, should be passed for the development to outsource.
The work of the manager cannot always be directed on minimization of charges only. If a team is created for a permanent and effective work, but not only for one project, the goals of the manager will be:
 1. Organization of team. A manager has to develop such qualities of the team as a mutual help, transfer of experience from one participant to another, so the next projects will be done much faster and more effectively.
 2. Creation of own corporate standards. Any project foresees development of functionality, which can be used in other projects. They should be developed as separate flexible modules that will be easy to use in the future. In addition, the work of such modules has to be described in details and documented, so in the future any participant will be able to use such module quickly and effectively.
3. Familiarization to the subject area. During the project development in a certain industry, the team must first get the complete picture of it. Then development of next projects of this industry will be done much faster and it will allow to get greater income in the future. For example, after developing one Internet shop, the team will be able to execute the same project much faster.
The main parameters of the project, for which a management is carried out, are:
- total cost of the project, i.e. it's budget
- possibilities of the project, i.e. it's functionalities
- work duration of the project
- quality of the project (i.e. number of defects per 1000 lines of code).
   For a visual display of these parameters, petalous diagrams are used. Putting this data into four axes, the pyramid can be build. Herewith, one pyramid is built according to the forecasting values​​, and the other one – according to actual data.
   Consequently, if the second pyramid was placed inside the first one, then the management of the project took place effectively. Unfortunately, in most cases it happens vice versa, but this is a topic of another blog.

Category:All, Blog