This is just iterative design. The project gets slowly improved over time by making little changes over and over again.

Waterfall is the opposite of agile design. If you wanted to create a project with waterfall design, you would start out by planning the entire project from start to finish, get that design approved by the people you are making this thing for, then spend months building it.

Disadvantages of Waterfall

Basically if your customer ever doesn’t know exactly what they want, your project will probably come out and it won’t be what they want. Because after the first time they use it they will figure out something they want instead and tons of your hard work will be thrown out. If the project requirements change halfway through your building of the project, it’s possible everything may need to change because things are so dependent on everything being built at once.

Basic description of Agile

You have a block of 2 weeks of time called an “iteration”. In those two weeks your goal as a team is to be able to deliver something to the customer that is slightly better than what they had before and is usable or functional, also called “The deliverable”. To create the deliverable your team will start off the iteration by creating a list of “User stories”. These are just little descriptions of something the customer should be able to do with your deliverable. For example one may be “As a user of the system, I should be able to use a coupon code at checkout”. As a team, you will define “Acceptance criteria”, basically everything that needs to work for you guys to consider the story “Done”. Once you do that, you will have a brief discussion on how you guys think this will probably be implemented at a high level, then you as a team will “point” the story. Points usually are an estimate of how much work a story will take to complete. To point the story, everyone will individually tell the person running the meeting their estimate, and the person running the meeting will tell the whole team the range of points they received and suggest the story be pointed at the median, but offer the chance for anyone who was an outlier to make a case as to why it should be lower/higher. This whole meeting is called an “IPM” (Iteration Planning Meeting), or a “Backlog Selection”.

Great, now you have your whole iteration planned out, now what?

Every day you have a daily “Stand up”. Everyone goes around and talks about what they did the previous day, any blockers, and what they plan on doing today. Blockers are just things that are holding up people from completing their story in the way they anticipated. The team then helps that person remove any blockers they are having. People can talk about what they need help on, what they are excited about, etc. At the halfway mark of the iteration, there is a demo. This is where people can show off the work they did for their stories to their customer and their team. There is another demo at the end of the iteration as well (Note: Most teams only have one demo at the end of the sprint). At the end of the iteration your team should have a fully functional product they can deliver to the customer. It may not be perfect or a fully complete system, but it is usable. Right before the next iteration teams will usually have a “Retro”, in this meeting your team will all put cards on a board under 3 categories, “Happy”, “Sad”, and “Confused”. This is the team’s opportunity to talk about how they felt about the previous iteration and the team’s progress. This leads to discussion and usually whole-team improvements. In the next IPM, everything is the same except the team limits the total points of the new iteration to be equal to or less than the amount of points completed in the previous iteration. This helps make sure the team is always trying to make realistic expectations of themselves.

Advantages of Agile

Well, it’s called “Agile” for a reason. It’s easy to change gears and make changes to the project’s requirements as the customers get hands-on experience and figure out what they actually want. It also forces the team to make a relatively modularized system, making it much, much easier to maintain.


<
Blog Archive
Archive of all previous blog posts
>
Next Post
What is Testing?