We are presenting a new type of blog post that perhaps with time will develop into series – Learning with TimeCamp. Today you will learn what is Agile Software Development. We tried to gather some important information on Agile and share them with our readers. We hope they will be educational and useful =] Enjoy!
What is Agile Software Development?
Agile software development (or Agile Project Management, as it is often called) describes a set of principles that managers use to drastically escalate the possibility of finishing the project in a suitable quality and within the estimated budget.
The use of Agile Project Management helps in the organization of the project to ensure its completion without overexerting budget and gives managers the confidence that the delivered products are of adequate quality – that is, such that will meet the needs of both business and home users.
The assumptions of Agile
Agile is a term that covers a number of flexible ways of work management that require strong cooperation with the customer. Using them should guarantee that the final solution meets not only the needs of the team implementing the project but also, and more importantly, the needs of the customer. Decisions about the details of the project are made as late as possible: delivering a complete product should begin from establishing an overall vision of what we want to deliver.
The concept of Agile appeared in 2001 at a meeting of 17 people who wrote the manifesto of common rules for agile methodologies:
“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.”
Although the manifesto says explicitly that the proposed way of delivering the products relates to the software development process, the philosophy of Agile is used in any project that requires it. As it is closely connected with the assumption that we do not really know what we want to create, the Agile methodology is often perceived as very risky.
In practice, this approach is one of the most popular methods of project management in the world, having great results with projects that have a rigid budget and completion date. Since you cannot have everything at once, Agile assumes that the scope of the project will be altered. In case, when both the budget and the deadline are determined and cannot be changed, one must reckon with the fact that the scope of the project will vary- this will allow greater flexibility of project implementation.
Under the concept of Agile, you will find a lot of project management methodologies and types of product delivery. The first group contains the lightweight development methods – those focused on delivering products.
1. Extreme Programming:
- It provides techniques for software development
- It has no concept of project design
- There is very little management
- You have to combine it with management methodologies
The main principle of this method is the elimination of waste – waste is everything that does not add any value to our project.
An example of Lean thinking is the assertion that one should not perform all analyzes at the beginning, because they may change during the implementation of the project.
It can be used on both production and organization level.
We have a post on Lean Management that you can read here
- Provides an excellent approach that bases on the team
- Prioritizes work
- It has no concept of project design
- Requires an additional approach for project management (eg. DSDM Atern)
- Often combined with XP (Scrum provides team management, XP the manufacturing techniques)
4. DSDM Atern (Dynamic Systems Development Method)
- The oldest Agile methodology, established in 1995
- The only one that fully describes Agile project management
- It is under constant development – DSDM Atern is the latest version.
5. Agile Project Management:
- At the beginning of the project the plan is created based on the outline of requirements
- The solution is firstly seen from the “bird’s eye”
- The project is implemented in an iterative and incremental way
- Another increase is built on the basis of product completed in the previous iteration
- A detailed plan of each step is created by the team, not by the Project Manager
The choice of methodologies
Teams often face the dilemma which type of Agile to choose from. Different types of project management methodologies can and should be combined. In the case of a simple working environment, the need to use more sophisticated tools may not be needed and simple solutions like Scrum may prove to be sufficient.
If the project is implemented in a more complex environment, like in large corporations or organization that have several development teams engaged in the project, the simple solutions like Scrum won’t be insufficient. In that case, there is a need to introduce the concept of a “project”, define the full life cycle of the product and adjust to the organization. In such, more complex situations, it is better to choose a fuller Agile approach, such as Agile Project Management.
Benefits of using the Agile approach
The primary advantage of using AgilePM is the lightness and flexibility it provides while maintaining the rules to succeed at the same time. This methodology also works great with existing processes in the organization, so there is no problem to combine it with, for example, PRINCE2. What is more, in the case of small organizations and projects Agile alone will do just fine, so there is no need to support it with other tools.
The implementation of Agile Project Management also means that we are acting in accordance with the universally recognized standards. Project managers can use the certification organized by APMG and acquire formal and objective confirmation of their knowledge and skills, which only increases the chances on the labor market.