Agile Principles: Progress Requires Working Software

Working software is the primary measure of progress. – Principles behind the Agile Manifesto Pixel perfect design mockups, UML diagrams, detailed user stories, automated tests, thousands of lines of code and hours of discussions. These are just a few examples of the endless amount of stuff we can spend time creating, tweaking, editing, testing and reviewing. However, nothing shows progress quite like working software. So what is working software?

Agile Principles: Tear Down These Cubes

The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. – Agile Principles Manager, Tear Down These Walls If you were tasked with designing a system that made spontaneous collaboration difficult, you couldn’t go wrong with the modern cube farm. Members of a “team” dispersed over an area of the office, isolated in their drab tchotchke ridden cubicles. Instant message, e-mail and chat might be great for passive communication, but when it comes to real collaboration, being physically present is essential.

Agile Principles: Self-Organizing Teams are Motivated Teams

Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. – Agile Principles Self-Organizing Allow the people doing the work to self-organize and discover the best implementation they can given what they know right now. Protect them from organizational politics and outside distractions, enable them to focus on the work at hand. Self-Directing While we encourage self-organization, we remember the need for direction.

Agile Principles: Collaborate Everyday

Business people and developers must work together daily throughout the project. – Agile Principles Email is not Enough Working together involves more than exchanging e-mails about the software. It’s more than passive instant messenger conversations. It’s not reviewing a digital agile tool in isolation. Working together means collaborating, negotiating and exploring the software that is being built. Too Busy for Success? If you’re too busy to interact, fairly frequently, on a daily basis with the rest of the team, you’re too busy to enable product success.

Agile Principles: Frequently Deliver Working Software

Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. – Agile Principles Quick Feedback A short feedback cycle is incredibly valuable. A short feedback cycle helps ensure you’re building the correct thing. A short feedback cycle helps you decide if you should keep going. A short feedback cycle helps you know if you should stop. Product vs. Project Shift your mindset from working on a project to working on a product.

Probability, Velocity and Re-Estimating User Stories

When working with user stories, story points and SCRUM, it is not uncommon to come to the end of a sprint and realize that a smaller story took longer to complete than a larger story. While this is an excellent reminder that story points reflect complexity, not effort, it is often misinterpreted as an indication that remaining stories need to be re-estimated. Basic probability distribution shows us that over a large enough sample, all three point stories in the product backlog will take about the same time to complete.

Agile Principles: Iterate. Evaluate. Repeat

Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage. The first thought here is the means, the second the end. Let’s start with the second. Evaluate We want to afford the customer the ability to adapt to rapidly changing markets. Processes that restrict the customer’s ability to adjust the implementation strategy of their vision make it impossible to use change as a competitive advantage.

Agile Principles: Deliver Early and Often, but Always Deliver Value

The Agile Manifesto describes twelve principles of agile software. In a series of twelve blog posts, I will explore each principle. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. This principle can be broken down into two separate thoughts. Continuously delivering early, and always delivering value. Delivering Early and Often Delivering early is more than just delivering something before the competition.