Today the number of software projects has grown to an incredible extent. Software products are used practically everywhere and as it seems with the Internet in one hand and the mobile apps markets in other this trend is even more consolidated.

Typically the software build processes are followed by the processes of controlling and managing software projects. In the very beginning of the software sciences these were methodologies that relied mainly on a detailed documentation, precise planning and higher degree of control. As it appears in many kind of projects this approach is simply ineffective. Most of those kind of projects are characterized as very dynamic, with many requirement changes that makes them difficult to predict and control with the traditional methods of software development.
To answer the necessity of managing such kind of project the software industry came up with some new and radical approaches of managing software projects. Thus in the mid 90’s appear some of nowadays well known agile methodologies. Developed during the years, many times corrected from their disadvantages and finally defined theoretically in the beginning of the new century now these methodologies are used in a vast majority of the software projects.

The agile methodologies differ from the traditional methods by their high adaptivity, low level of bureaucracy and in the same time high level of communication. The client is often involved into the process of software development. His ability to give quick feedback on the team is something very typical to the agile methodologies.

Finally all these features of the agile methodologies helped the industry to manage projects that are highly dynamical.
In a series of posts I decided to share my knowledge about the agile methods beginning with this one. However to understand the necessity of the agile methodologies you need to understand first the characteristics of the traditional, or so called “engineering” approaches.