Without any doubt, present day software developers are more and more inclined to choose the Agile Project Management methodology against the old traditional approach. It’s an easy option because Agile is based on fast and continuous delivery of results, client gratification and it simplifies the integration of intercurrent changes by maintaining a constant communication line between developers and clients. It’s a simple, flexible and efficient project management choice.
Why Agile Project Management became so Popular?
There is not one but several factors that have contributed to the enhanced efficiency and applicability of Agile methodology in the past few years.
One of the most determinant factors is the possibility to work with more and better tools and solutions specialized in testing, publishing, developing management and finally, the delivery of software. The possibility to make assessments and predictions on the evolution of the project has played a significant role since 2001 as well, when Agile principles were specified in Agile Manifesto.
Agile Manifesto is based upon four powerful and revolutionary principles, such as:
- It replaces processes and tools with individuals and interactions.
- It replaces an ample documentation with functional software.
- It imposes constant collaboration and communication with the client rather than a fixed negotiated contract.
- It’s widely open to amendments, opposed to the classic methodology which imposes a straight-line plan that allows no deflection.
Thus, Agile methods can be summed up as the result of ageing, standardization and automation of the entire project management in general, and software architecture design in particular. The foundation constitutes the continuous developers’ experience and knowledge acquired through many years of ample exploration and documentation of a wide range of projects. It is probably the main reason why Agile methodology hasn’t proved useful in complex systems, where the evolution of the project is under influence of several other factors. However, when dealing with small projects, Agile has proven quite resourceful and has become the main project management tool worldwide.
Basic Elements of the Agile Project Management:
- It’s iterative: each iteration loop is one to four weeks long. During an iteration, several project business functionalities are delivered, based upon well defined methodologies.
- It’s based on time: each iteration is fixed and cannot be modified during the development of the project. Thus, there is always a predictive result at the end of the iteration.
- It’s open to the client: at the end of every iteration loop, there is an actual result that can be analyzed and observed by the client. The stories are defined by the client as well, and can be grouped later in loops based upon risks and priorities.
- It’s based on intermediate project delivery: each iteration will fully implement all the stories that sum up its content.
The classic school system teaches us to always do perfect and extensible things. It may be shocking for those who are not familiar with the concept, but Agile teaches us to do things efficiently and fast, avoiding as much as possible the elements that are not valuable to the final project. This doesn’t mean that Agile won’t be using the best developing tools or that it won’t permit daily verification of the project or testing in each iteration loop the intermediate product.
YAGNY is a key principle of the Agile Project Management, an acronym of “You Aren’t Going To Need It … unless the business says so!” It’s a simple principle that empowers and encourages developers to implement only those elements that are required and made compulsory by the client and nothing more.
While the traditional developing and management systems are based upon analysis, design and robust specifications well settled at the moment of project initiation, Agile gets ahead through an iterative paradigm that can deliver a final intermediate product which meets all the business objectives of the projects. That’s why Agile is focused on business requirements, tasks that are divided in iterations.
Do not fall for the illusion that Agile is an ad-hoc process, chaotic and unplanned. It is not. Each element is carefully planned taking account of the entire project vision, within each of the iterations. And these iterations are divided in specific project fragments, named stories. Another important aspect worth being mentioned here is that Agile encourages the permanent evolution of the project, allowing it to continue even after major design changes had been applied.
An Incremental Design
Thus, any project developed under Agile Management will evolve during several 1 to 4 week iterations, in contrast to its predecessor, the classic management system, which imposes long periods of time during its processes. Also named time boxes, these iterations are however made of all the usual developing stages: planning, developing and testing. The decision regarding what components are to be implemented in the initial iteration depends on the most required (absolute) characteristics of the product which are imperative for fast results delivery.
During the following iterations, the developing stage of the project is incremental. New components are added. While there’s no justification for a new version of the software, the new components come as a unitary, functional solution to all the glitches and problems that may have appeared on the way. Inside a loop, the planning is simple, minimal, and short timed, as the developers using Agile are not burdened with ample documentations of the client’s requirements and project architecture, but they use instead predictions and patterns that have been proven trustworthy. Testing stage begins early and it greatly influences the future development of the software.
This work style has a simple purpose in maintaining the team motivated by reducing the time required for planning the project and obtaining the first palpable results. At the same time, risk factors and bugs frequency are also diminished. Although iterative development cannot eliminate bugs entirely, they are identified quickly and resolved earlier in the creation process.
Over time, various agile methods have been implemented, under the same values and principles. The following are all considered agile methods:
- Extreme Programming (XP)
- Agile Unified Process (AUP)
- Agile Modeling
- Essential Unified Process (EssUP)
- Unified Open Process (OpenUP)
- Dynamic Systems Development (DSDM)
- Feature Driven development (FDD)
- Crystal Clear
- Crystal Methods
- Lean Software Development
- Velocity Tracking
Collaboration and Communication
Certainly the most representative characteristic of the agile development is the communication between members of the team. Furthermore, the forming and lay-out of the team comes from inside, and it’s not hierarchic. Collaboration and communication works between developers, clients, managers and testers equally, not only between members with the same area of expertise as we were accustomed in classic management styles.
The client’s presence (or somebody who represents his interests) in the team has beneficial consequences on the development, as his knowledge and collaboration with the team allows a better prediction and facilitates the integration of the changes that may appear/be required on the way. The client’s satisfaction is therefore the number one priority for any agile team.
Hence, there are obvious positive commercial consequences for the client, as the developers defer to the users’ feedback. It is a huge difference between an Agile project and a classic situation, where the product is delivered in its final architecture, as Agile imposes an incremental development, greatly influenced by users, and thus more efficient.
Agile is the new best project management approach but this doesn’t mean it will fit everybody. There are enough developers who oppose any other way of implementation and delivery system than what they are accustomed to. Moreover, you cannot impose agility to a team; it can only be trained to become agile with time. While there are piles of information available on the subject, clear and defined specifications on how to approach the Agile phenomenon exhaustively is rather absent, hence the confusion among developers who have questions but no one to answer them clearly and concise.
What is important to understand is that Agile comes with a set of principles that may be applied in various ways. It can be implemented by using pure agile methodology such as Scrum or XP or by blending Agile with organization’s ground rules. An Agile developer doesn’t act on clear indications but on clear principles.
The SCRUM Process
Scrum is an iterative and incremental method that is intended to help the developer teams in solving the required problems, by focusing on real and required objectives while minimizing the work needed for less important tasks. Basically, Scrum aims for simplicity in a complex business environment.
The term Scrum comes from the game of rugby, where it represents a strategy of restarting a game after a minor infraction, where the ball is taken back into the game by means of team work. Also known as the holistic or rugby approach, Scrum doesn’t implement new techniques but instead focuses on the way members of a team should interact with each other in order to produce a flexible system, adaptable and productive as well, in an environment that suffers constant changes. There are two Scrum basic elements: autonomy and adaptability. The autonomy of the team implies that although the managers of the project establish a set of tasks to be accomplished, the team has the liberty to choose its own work style during each iteration loop. The final purpose is an increased productivity of the team.
There are three main phases in a scrum process. According to Schwaber and Beedle, these phases are pre-game, game and post-game. Let’s take a closer look:
Pre-game– includes two sub-phases, Planning (defines the system that is supposed to be built) and Architecture / Higher level design.
Game – is the agile part of the scrum process. This phase acts like a black box, where all the elements are unpredictable. The identified variables that are susceptible to changes over time are observed and controlled by different scrum processes. Scrum takes into account all these variables during all of its phases, not only in pre-game. Thus, the project can be easily adapted to changes that may occur during the development.
Post-game – is the final phase of the project when all the requirements have already been met. In this stage there are no more problems to be solved in the backlog and no new ones that can occur. The product is ready to be delivered. The final action, the deliverance, is now prepared through integration, testing and documentation.
The Main Features of Scrum
Scrum is an iterative and incremental software development process, which represents the plan of a project and includes a set of predefined actions and roles. The main roles are the Scrum Manager that enforces the processes and takes the role of a project manager, the Product Owner that is the voice of the customer and the Team that includes the software developers. The software product is developed during more phases called sprints. The Team creates a functioning software unit during one sprint. During such a sprint one has to take account of elements that will be taken from backlog. The items that get in a sprint are established during a sprint planning meeting. The Product Owner will inform the Team about the backlog tasks that he wants to approach, and the Team will assess how many of the requirements can be completed until the next sprint. These backlog goals cannot be changed during a sprint. At the end of the sprint, the Team will show how to use the interim product.
Scrum is helpful in rendering together teams with highly self-organizing and good communication skills between the members of the team and various departments involved in the project. It is of utmost importance to understand and accept the fact that during the developing time of the product a client will change his mind several times about what the software wants and needs to offer. Such unexpected changes are not easily adapted to a project when using traditional software development methods. Scrum embraces an empirical approach by advocating that a problem cannot be completely understood or defined and by insisting on the ability of a team to rapidly solve new requirements.
The Roles of Scrum
Pigs – those who are directly involved in the process, committed to build the project and also responsible for it.
- The Scrum Manager – takes the role of the project manager (but is not the leader of the team) and makes sure that the development process grows according to the techniques, values and rules of Scrum. It relates with the development team as well as with the customers and the management of the organization. Also, the main responsibility of the Scrum Master is to ensure that any impediment or distracting influences will be kept away from the team, in order to maintain a high productivity level.
- The Product Owner – is the voice and interests of the customer. He is responsible with the design, administration, control and display of the uncompleted product; will take the final decision regarding the backlog tasks and prioritize them. The Product Owner is selected by the Scrum Manager, customer and management.
- The Team – is accountable for developing the product; it has the authority of taking decisions concerning the solving the tasks of each sprint and has the right to self-organize itself for the same purpose. A Scrum team is made of 5-9 individuals.
Chicken – are those roles with no direct involvement in the process, but nonetheless have to be taken into account. A very important aspect in the agile approach is the involvement of the users, customers, business men in the development process. These have to offer feed-back regarding the outcomes of each sprint in order to adapt and improve the future work processes.
Unlike the traditional management system where the accent falls on the method, Agile Project management focuses on the team that works together in order to solve the problems. Although there are several agile methods, none of them imposes a fixed recipe for organizing the team and project but a few ground rules known as agile principles, stated in the Agile manifesto. By adopting these principles, every team tries to minimize risks and increase productivity. Thus, the software is developed in short iterations, of maximum four week long periods that allows the team to deliver interim versions of working software. Software is developed during each iteration loop by adding of new functions or refining the existing ones.
As features are implemented according to their business value and the requirements of the client, the working method adapts to the needs of the team and project by learning from past mistakes and exposing the current problems at hand. The performance of the team is increased as they communicate and collaborate more easily. Finally, the main advantage of the agile method is its capacity to deliver working software in the early stages of development. By working in short iterations, agile management system allows the team to easily make changes based upon the feedback and the new requirements of the client. There’s only one disadvantage: Agile challenges the team to adapt to a new mentality and a new work environment, a change that is hard to impose on people already accustomed to other working processes and systems.