Sunday 31 May 2015

12 Principles: A Dozen Simple Rules for Agile Development

Hello!

Previously we reviewed the Agile Manifesto, the constitution of agile development, and in today's post I present to you the more direct follow up to clarify a few things. The Bill of Rights of agile development; the Twelve Principles.

The Twelve Principles of Agile Software

We follow these principles:
  • Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  • Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
  • Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  • Business people and developers must work together daily throughout the project.
  • Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  • The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  • Working software is the primary measure of progress.
  • Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  • Continuous attention to technical excellence and good design enhances agility.
  • Simplicity--the art of maximizing the amount of work not done--is essential.
  • The best architectures, requirements, and designs emerge from self-organizing teams.
  • At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
http://www.agilealliance.org/the-alliance/the-agile-manifesto/the-twelve-principles-of-agile-software/

Looking at these principles it is clear to see a few themes emerging and being expanded upon from the initial manifesto.
  • Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
    • Delivering results that are actually wanted by stakeholders and maintaining a frequent flow of progress. Isn't that an awesome goal for people to strive to achieve?
  • Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
    • Things change, don't bitch about it. If you were hosting a dinner party, planned a hog roast and then find out all your guests are vegans. You could grumble, but people are coming across, why not dive into learning new vegan recipes? Rise to the challenge.
  • Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
    • Show actual progress over time, it's more exciting to show gradual improvements in chunks than deliver a massive project that is no longer relevant.
  • Business people and developers must work together daily throughout the project.
    • Be interconnected within a team, it helps focus on the project, in a personal development setting this is incredibly important to retain accountability.
  • Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
    • Get team buy-in and support in a project, it helps if they're passionate about it. In a personal development setting this would suggest that you focus on something you truly see as a worthy goal. If I wasn't bothered about fitness and all I wanted to do was to read, knowing fitness is important, I would begrudgingly put it into sprints, but it would be far more difficult to reach the goals.
  • The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
    • Be clear and honest in communication, so many times people infer so much from text when there's really nothing there.
  • Working software is the primary measure of progress.
    • Deliverables = progress. 
  • Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
    • 'It's better to burn out than fade away' - Nope. Why not continue on the path delivering constantly. The Government Digital Service said that 'Boring is beautiful' - that's not a bad thing.
  • Continuous attention to technical excellence and good design enhances agility.
    •  Be mindful of following the best practices. Find and follow best practices, they're best practices for a reason.
  • Simplicity--the art of maximizing the amount of work not done--is essential.
    • Why over complicate things?  Keeping it simple ensures you can do it again, repeating tasks. It's easier to explain to others and it helps others understand what you're doing.
  • The best architectures, requirements, and designs emerge from self-organizing teams.
    • Teamwork is good and best practices emerge from sharing resources with those you trust.
  • At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
    • If you perform a task in the exact same way why would you anticipate a different reaction? Play around and find what works, find your groove and work into it. You improve your approach through revising it.
These principles work with self improvement and when reduced to their essence can work in many things in life.

You have to
  • Stop
    • Review what you do constantly, don't get carried away
  • Collaborate
    • Work within teams to achieve everything you need to, sharing resources and responsibilities
  • Listen
    • Work with your stakeholders, don't bury your head in the sand

With the principles and manifesto broken down it is clear that agile can be utilised in all strands of life, professional and personal.

Thanks for reading!
AT

No comments:

Post a Comment