On Agile briefly
Agile methods are methods that apply iterative and evolutionary development. 12 agile principles employ adaptive planning, promote incremental delivery, and include other values and practices that encourage agility.
What does that really mean for software development? What are the implications for daily business? Let’s analyze these principles and see where this gets us.
Agile principles and practices help deliver working products more frequently from a couple of months to hours. Their application supports organizing teams around values while supporting trust via increased transparency.
They are best suited for projects characterized by changing, speed and turbulence. At the beginning of 2001, a group of agile methods followers created the Agile Manifesto containing agile principles that all agile methods should follow.
Product is built by agile teams whose priority is to satisfy product customers, users and stakeholders. Agile principles help deliver working software frequently. Customers are involved in product development through the early feedback cycle. Customers or their representatives meet in regular intervals with the team to ideate, plan and reflect the product features and status. In a world full of changes is not possible to plan everything ahead. Agile product’s requirements and designs emerge over time. Therefore agile teams work in iterations. They plan, build and reflect in short timeboxes.
Agile also involves continuous delivery of value and technical excellence at the same time. The agile team keeps attention to technical excellence. This saves capacities for value-adding activities.
12 Agile Principles
Our highest priority is to satisfy the customer through the early and continuous delivery of valuable software.
“highest priority, satisfy, customer, early, valuable”
The software team is responsible for customer satisfaction.
Early delivery means that the increments should be early. Features are divided into smaller pieces, the functional increments. This helps to fasten the process of the customer’s feedback and leads to a higher understanding of customers’ needs.
Continuous delivery lets developers produce increments in short cycles. It ensures that the software can be reliably released at any time.
Valuable defines the real value committed by the team and delivered to the customer.
Practices: Product Backlog, Real Customer, Sprint Review, Incremental Deployment, Releases, Iteration, Whole Team
Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
“changing, even late, competitive”
Changing emphasizes the possibility of the change for the customer requirement. Requirements are dynamic and shape up during the development process.
Even late in the project timeline, it enables to correct the constant increments. The outcome will match customers’ needs no matter how those needs may change.
Customers’ competitive advantage is defined by the response to change on the market due to for instance short feedback loop.
Practices: Sprint Planning, Customer Involvement, Product Backlog, Sprint Review, Planning Game, Frequent Delivery
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference for the shorter timescale.
“working software, frequently, shorter”
Working software means that the delivery conforms to the Definition of Done, Condition of Satisfaction and value, which is described above.
A shorter timescale leads to frequent delivery of working features into the hands of customers and other stakeholders as soon as possible. The team receives informative, immediate feedback on necessary changes.
Practices: Incremental Deployment, Releases, Sprint review, Product Demo, Definition of Done, Acceptance Test
Business people and developers must work together daily throughout the project.
Business people are product owners and any stakeholder who is a proxy person within the team and customers.
Working together leads to a common culture. The end product is seen as a common deliverable. Working together actually means working together on a daily basis preferably in the same space with constant interaction throughout the project.
Practices: Customer Involvement, Whole Team, Osmotic Communication, Daily Scrum
Build projects around motivated individuals. Give them the environment and support they need and trust them to get the job done.
“Build, motivated, support, trust, done”
This principle leads to productive and cost-effective project execution and self-organized teams. Motivation has to be mutual; around the developers and their attitude to agile methods usage. Hertzberg eloquently explains the hygiene factors (working equipment, vacations, training, …) and motivators (challenging work, responsibility, …)
Practices: Motivation, Servant Leadership, Team continuity
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
The aim of this principle is to effectively transfer a message from sender to recipient in order to correctly understand the key factor in the projects. It leads to speed up the agile projects’ communication. Face-to-face communication enables to use of whiteboards for drawing images that can stimulate and energize the discussion. It also contributes to direct feedback between sender and recipient. Everyone is involved in the discussion and sees the business purpose behind requirements.
Practices: Informative workspace, Servant Leadership
Working software is the primary measure of progress.
The most important measure for business should be working software. Of course, there are many other measures, which we can and must use, for instance, the number of bugs found, euros spent, lines of code added, …
Practices: Customer tests, Product Demo, Incremental Deployment, Releases, Release Burndown, Measurements
Agile processes promote sustainable development. The sponsors, developers and users should be able to maintain a constant pace indefinitely.
The team is developing at some given speed, but it does not mean that it indefinitely burns customers’ money. The amount of time and effort the team invests in a development process has to be almost constant during the whole process.
Practices: Customer Involvement, Motivation
Continuous attention to technical excellence and good design enhances agility.
“technical excellence, good design”
Continuous attention means rules and quality policies. They define which design is good or bad, which piece of code is excellent or ugly, … This keeps concentration high, focused but also implies taking a break in case of distraction or powerlessness.
Technical excellence is gained by the right staff and their skills. Continuous learning acquires new knowledge and improves skills.
Good design means that a product looks nice inside in the first place.
Enhances agility – requires the right attitude and acceptance of the agile values.
Practices: Motivation, Testing, Sprint Retrospective, Pair Programming, Test-Driven Development, Refactoring, Sprint retrospective
Simplicity—the art of maximizing the amount of work not being done—is essential.
The tasks are small enough to make sure they are either doable or cancellable. This encourages to give programmers small tasks, which can be easily completed.
Practices: Limit Work in Progress, Decide As Late As Possible, Business Values
The best architectures, requirements and designs emerge from self-organizing teams.
The best architecture, requirements and design must be approached as a whole system belonging together and building the resulting product.
Emerge encourages creation in an evolutionary way.
Self-organizing teams do not mean unorganized chaos. It does not lead to the legalization of anarchy. If teams have all the necessary roles and skills to create the wanted product, they are able to decide and organize by themselves.
Practices: Team, Test Driven Development, Refactoring, Servant Leadership
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
“regular intervals, tune, adjust”
This principle is translated into retrospective meetings. The best team is the one that is capable of quickly and inevitably rejecting impediments. Only the members are able to inspect and adapt their own habits and to decide what to change.
Practices: Iteration, Sprint, Cycles, Value Stream Mapping, Root Cause Analysis, Sprint Retrospective