Those who are in the business of delivering technology that can help companies establish and meet objectives understand that software development is somewhat different than other types of engineering projects. Today, top software companies need teams that are adaptable, flexible, and quick to respond to any changes that occur. These can include issues such as overnight requests or last-minute corrections before a release.
The History of Agile Methodology
Before agile methodology became popular, developers were using a linear “timeline” perspective, meaning that software development was sequential and the outcome was not presented to clients until the completion of the product.
This method of development, however, did not allow for implementing new requests on the fly, or for monitoring customer satisfaction with progress reviews and direct communication. In most cases, by the time the product was complete, specific requirements and often the project’s initial objectives, had changed. The introduction of the agile software development life cycle changed this process entirely.
Agile is a framework for software development based on self-organizing and cross-functional teams that allows companies to quickly adapt in order to deliver maximum value to their users in concrete increments. In 2001, a 13 member group of software development specialists wanted to discover the most effective methods of developing software. The 13 individuals vowed to learn for themselves and assist others in doing so. Together, they wrote and issued an agile manifesto based around the following ideas:
– Ensuring that individuals and interactions remain more important than procedures and tools is vital for fostering a team environment
– Providing working software is more important than creating comprehensive documentation
– Enhancing customer collaboration is preferable to detailed contract negotiation
– Responding to change is more important than merely following a plan
This collection of ideas and purposes is an excellent way to describe what is called agile project methodology.
Principles of Agile Methodologies
The main principles of agile emphasize what’s really important for success in the process of software development. They are based on the agile philosophy, which is a certain way of thinking with its own value system. These principles include:
– Ensuring customers are satisfied by delivering software functionality early and often
– Keep it simple
– Allow for the inevitability of changing requirements during the development procedures
– Plan for face-to-face interactions to facilitate transparency and understanding
– Pay close attention to technical details and design to increase agility
– Support, trust, and encourage the people involved in the project
– Collaborate with business stakeholders and developers during the entire project
– Working software is the ultimate measure of progress
– Continually look for ways to become more valuable to customers
– Maintain a consistent development pace by using agile processes
The manifesto for agile software development was the first step toward software evolution that put the needs and desires of users at the forefront of the development process.
Agile Project Management
Agile project management takes an iterative approach where development, testing, modification and implementation of changes are carried out simultaneously in each iteration. Small pieces of the project are completed within work sessions and released as they are completed.
The developers and the clients attend a strategy meeting during which they set the client’s vision and goals.
A Product Roadmap
Agile roadmaps differ from traditional linear roadmaps. This new form of roadmap includes:
– Strategic themes
– Quarterly objectives and significant reviews of results
– Features and product hypotheses – The team’s best guesses on whether they will achieve this quarter’s goals
– Quarterly check-ins
Agile planning breaks the development process into segments called releases. The purpose of release planning is to create a high-level plan for multiple sprints. This explains how and when each chunk of functionality is completed, released and when it lands in the hands of users. The plan is also used to monitor the progress of the whole project.
A sprint is a predetermined timeline that allows a team to finish a set of tasks from the backlog. The backlog is a list of functions and requirements needed for the final product’s completion. A sprint planning session helps users estimate the actual execution of their agile projects. As a rule, a Sprint planning meeting is held on the first day of each new sprint and involves all team members.
These meetings allow team members to check in on the information they need for coordination. Each team member shares what he or she has accomplished and describes any obstacles that are blocking their forward movement. This meeting is also known as the “daily stand up”. Standing is more likely to keep the meeting short and to the point, hence the name.
After a sprint meeting, time is set aside to reflect on how the team is doing and how they can discover new methods to improve their timing, creativity, and problem-solving. During the meeting, the group asks itself what they should:
– Start doing
– Stop doing
– Continue doing
Agile Scrum Methodology
Scrum is an iterative and incremental framework used to implement agile development. Scrum can be used to solve any set of tasks, but it works best when there is a product to be produced. Scrum has its own roles, events, artifacts, and rules which combine and organize both the team and the project’s progression.
Scrum allows teams to:
– Respond quickly, efficiently, and effectively to new problems
– Establish timeframe and cost to understand the feasibility of requirements
– Use time boxes (used to define and limit the amount of time dedicated to an activity)
– Join forces with the customer to deliver high-value functionality in increments
– Create the best product in as simple a manner as possible
What is KanBan?
Kanban is another management method for creating products. It emphasizes continual delivery without overburdening the development team. Like Scrum, Kanban is designed to help teams work within their group more effectively. These are the steps involved in the Kanban method:
– Visualize what needs to be done today (workflow). This allows the team to see all the items, in context with one another. The little bit of time spent visualizing can be extremely informative.
– Limit the amount of work in progress (WIP). Doing so will help balance the flow-based approach, and will decrease the chances of the team committing to too much work at once.
– Enhance workflow. When a step is completed, the next most crucial work area from the backlog should begin.
– Kanban promotes ongoing collaboration and encourages active, continuous learning and improving by clearly defining the highest-value team workflow.
Other Agile Development Life Cycle Approaches
In the mid-1990s, Alistair Cockburn researched project methodologies and developed the Crystal Methodology family; that includes Crystal Clear, Crystal Yellow, and Crystal Orange.
The Crystal Method is an agile software development approach that centers primarily on people and their interactions when working on a project, rather than focusing on processes and tools. Alistair believed that an individual’s skills and talents, along with the way they communicate, have the most significant impact on the outcome of the project.
Crystal Method includes a few fundamental ideas:
– Teams can streamline their processes as they work to become a more optimized team.
– Each project is unique, dynamic and requires specified methods.
– According to Cockburn, we should look at product development as a game that, if set up correctly, should stimulate everyone to interact with one another; it should encourage them to become creative and produce brilliant ideas.
– He says that instead of honing in on questions like “Is our model accurate?” we should find answers to questions like “Is our product meeting the customer’s needs?” or “Do we have our goals aligned as a team?”
Dynamic Systems Development Method (DSDM)
DSDM is an agile method based on a full project lifecycle. It was first described in 1994, when project managers using a previous software development approach known as Rapid Application Development (RAD) found they needed more discipline and oversight to accomplish their goals.
While having a lot in common with other Agile methods, DSDM is distinguished from the rest by its formalized reporting, as well as putting schedule and quality above functionality.
The principles associated with DSDM are:
– On-time delivery
– Focus on the clients’ needs
– Uncompromised quality
– Continuous and clear communication
– Demonstrating that the project is under control and going as planned
– Repetitious, iterative, and incremental development based on a firm foundation of the project’s scope
DSDM’s philosophy dictates that all projects remain aligned to clearly-defined strategic goals. Projects should also focus on the early delivery of direct benefits to clients. The Dynamic Systems Development Method is designed to be easily customized and used in conjunction with traditional methods such as PRINCE2. It can also complement other Agile approaches such as Scrum.
Dynamic Systems Development Method Advantages and Disadvantages
This development system helps teams achieve the project’s goals and maintain their focus. Some of the advantages of this development model include:
– Easy access by developers to end-users
– Projects which are delivered on time and stay within the specific budget
– Users who are involved in the development and understand the software project
There are some disadvantages to the DSDM method, as well. They are:
– DSDM is expensive to implement.
– It may not be appropriate for small businesses.
Feature-Driven Development (FDD)
The feature-driven development model came into being in 1999. A “feature” is a small function that is client-valued, such as an idea like “Authenticate the password of a user.” or “Compute the total of a sale.” These features are a primary source of requirements and the primary input into a client’s planning efforts. The feature-driven development methodology depends on:
– Developing a comprehensive model
– Building a features list
– Planning by feature
– Designing by feature
– Building by element
These simple five steps allow for more rapid development; moving products forward with continuous success, and pre-defined development standards. However, the agile methodology does not work well for smaller projects. It also lacks comprehensive written documentation and relies heavily on direction from lead developers or programmers.
Agile methodology is an essential process for teams needing a more flexible approach to product development. No longer is agile methodology only relevant to the software industry. Currently, it can integrate into any business venture that is looking for a non-linear plan of attack, high-value customer collaboration, effective teamwork, explosive growth, and of course, best-in-class results.