Tuesday, 2 September 2008

What Does Agile Mean?

What does "Agile" mean?...Everyone seems to have a different answer for this question. Agile is a group of methodologies which incorporates Scrum, XP, Lean etc. Some teams only implement one of these methodologies, where as others take principles from a mixture of methodologies.

Scrum
Scrum is an iterative, incremental process. It is use for projects which are required to be delivered quickly and also quick to change.

A Scrum project should include a prioritised product backlog of work to be done, so that the team can always see where the project is going and how it relates to what they are working on now. This backlog will be split up into sections and the first section will be brought into the iteration for the team to work on, (An iteration is the period of time that the team have to complete the work given and demo it to the business). The team will take part in a daily meeting, or scrum, where the progress the team has made is explained and they describe any upcoming work. The team also discuss any impediments they come across. A planning session will also be organised every iteration for all team members to agree what they want to bring in from the backlog. They will also all take part in a retrospective meeting where they reflect on the iteration just completed.

XP
XP stands for eXtreme Programming. It focuses on the principles of simplicity, communication, feedback and accountability. From these principles we will strive to decrease the time in which we respond to change and the time taken to deliver useful software.

XP has 12 practices:
The Planning Process - sometimes called the Planning Game, where the team decide what they can commit to in an iteration and estimate how long each story card will take them.
Small Releases - get the basis of the system in production early and then build extra features frequently
Metaphor - the team makes sure that they use common names across there work so that everyone understands descriptions and there are less faults in communication.
Simple Design
- The team should meet the current requirements in the best way possible for that time and not worry about what may come in the future because that will be picked up in later iterations
Testing
- XP teams focus on validation of the software at all times. Tests are written before code has begun so that we can check that the code meets the requirements before it even goes through quality assurance
Re-factoring
- We need to keep the software clean: without duplication, with high communication, simple, yet complete. This makes sure that we can easily add in new functionality in further iterations
Pair Programming
- XP programmers work in pairs to create the code for a story card. Each development machine should be set up with two monitors, keyboards and mice so that a pair can comfortably program together and so both are equally involved. This collaboration helps code flow quicker as you have someone else to bash around ideas with.
Collective Ownership
- All the code belongs to all the programmers. This means the team can do changes without change requests.
Continuous Integration
- Every time a pair has completed a slice of a card they will check their code into the build, therefore it happens multiple times per day. This makes sure no-one is working on old code and everyone is keeping up-to-date with what the other pairs are doing.
40-hour Week
- If programmers work more that 40 hours a week they have a greater chance of make more mistakes.
On-site Customer
- By having the customer on site, there is more communication and they have a greater control over what they want from the project. The team can also get answers to their questions quickly.
Coding Standard
- All programmers need to write the code in the same way and make sure that it is to a high standard so that anyone looking at the code can understand what has been done.

Lean
Lean Software Development is a translation of lean manufacturing principles and practices to the software development domain.

The manufacturing principles are
the production of goods using less of everything compared to mass production:
  • less waste,
  • less human effort,
  • less manufacturing space,
  • less investment in tools,
  • and less engineering time to develop a new product
The following characteristics make up Lean Software Development:
  • Eliminate waste
  • Amplify learning
  • Decide as late as possible
  • Deliver as fast as possible
  • Empower the team
  • Build integrity in See the whole

Scrum
XP
Lean
Planning Meeting

Small Releases
Simple Design

Best Practice
Test Driven Dev

Refactoring

Pair Programming

Collective Ownership
Continuous Integration

Professional Working Day

Onsite Customer

Product Backlog

Daily Meeting

Retrospective

*The information for this blog has come from a presentation by Raza Ahmad*

The Begining

Hi, I'm Nicole and I am a computer science graduate who has been in the working in IT for 1 year now.

Recently I have been moved to an Agile Web team to work on QA (Quality Assurance). I've decided to start a blog to record what I'm learning about this methodology and QA so that I can keep all my notes in one place and hopefully it will be a decent reference for others.

I will be writing about things I have learned in my team but won't be recording things in any particular order so sorry if this all seems a bit disjointed. The first blogs will be quite long and full of as much information as I can, so that those with no agile experience can understand the basics of how teams can work.

If you want to leave me comments on a post then they are very welcome and I will try and answer any questions as soon as I can.

Thanks,

Nicole