What is Agile methods, Scrum, and Kanban?

In our WEB701 class Todd recommended we try implementing SCRUM methods into our group practice project work.

I have heard Belma talk about Scrum and another SYD related concept of Agile a lot over the last two years and I am intrigued to find out more about them because I believe we will be learning more about them in SYD701. This research journal entry will define my understanding of what Scrum and Agile and Kanban are, and how they can be implemented.

I started by going to YouTube, that great source of information, I use YouTube for quite a lot of my research, particularly computer/software troubleshooting because I find video tutorials where they show you every step of fixing the problem infinitely more useful than written tutorials which often make assumptions and/or do not show every step of the process.

(Shead, 2016)

 

What are Agile methods?

agile.png

(“Full Comparison: Agile vs Scrum vs Waterfall vs Kanban,” n.d.)

Agile methods is not a systems development methodology, like for example Object Oriented Systems Analysis and Design (OOSAD), instead it is a set of ideas and values that govern how a team should make all development decisions when building an information system for a client.

The agile ideas and values promote an iterative, time focused and user centered systems development process.

The set of ideas and values that Agile methods lays out are defined in the Agile manifesto, which is a document containing 4 values (outlined below) and 12 principles determined by 17 software developers in 2001 (as outlined here: https://www.agilealliance.org/agile101/the-agile-manifesto/).

4 Agile values:

  • “Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan”(Agile Manifesto Authors, 2001)

 

My thoughts on agile methods

Agile is iterative meaning that it uses the spiral model for cycling through the different systems development stages. This is the same approach that Object Oriented Systems Analysis and Design (OOSAD) takes.

I know that Structured Systems Analysis and Design (SSAD) uses the waterfall model where it is hard to go back to a previous stage, making it significantly harder to incorporate new client requirements into the product compared to the spiral model.

If agile and OOSAD both use the spiral model having iterations how do they differ? Well as I see it the major differentiator is the amount of time and effort put into diagramming and documentation.

In OOSAD to successfully plan out the OO system being developed a number of UML diagrams are produced, whereas in Agile development the focus is less on the development diagrams and documentation and more on the development of working software.

By keeping the amount of planning, diagramming and documentation to a minimum for the iteration that is currently being worked on agile, as the name suggests, promotes a speedy delivery of prototype versions of the product.

Meaning agile methods are generally faster than SSAD and OOSAD.

What are key features of Agile?

  • Frequent communication within the team, and with the client to determine if the client is happy with how the product is developing and if they have any new requirements that will need to be included.

Due to the incremental nature of Agile methods new client requirements elicited after the initial requirements gathering can easily be added to the product. However they are only added after the developers estimate the additional time and consequent cost to the client, and the client has agreed to putting in additional resources (if that is that case).

  • No specific toolset such as CASE tools ( Computer Aided Software Engineering) e.g. Visual Paradigm
  • Organized by time, known as time-boxed

I understand this to mean that instead of planning the project in terms of features being developed, the project manager of a team following agile methods will plan out the time schedule of the project in slots of 1-2 weeks known as sprints, and features will be added into these sprints.

  • Fast moving which is achieved through succinct documentation, shorter meetings and less milestones

 

Requirements for Agile methods to be successfully applied to a project:

  • Smart and engaged client who has time and resources to give frequent feedback (SourceSeek, 2013)

Pros of Agile development:

  • Greater likelihood of a successful product being developed because it has changed as the environment and client requirements have changed

Cons with Agile development:

  • It is harder to estimate a project cost with certainty (SourceSeek, 2013)

 

Two systems development methodologies that implement agile methods

  • Scrum
  • Kanban

What is Scrum?

scrum.jpg

(Rouse, 2017)

As I understand it Scrum is a systems development methodology that takes the ideas and values promoted by Agile methods and adds builds on them:

Major concepts in Scrum are:

  • Every member of the development team has a specific role. These roles are: scrum master, product owner and Scrum development team.
  • Daily meetings (called the daily scrum) are held to allow the team to discuss what they did since the previous meeting, discuss any problems they are having and potentially get help, and state what they plan to work on today.
  • Features for the product being developed are called user stories. User stories are allocated to specific sprints in a document called a sprint backlog.

What are those Scrum roles again?

Scrum master: This is the person who helps the team stay on task, and goal oriented making sure that agile ideas and values are followed.

Product owner: This is the representative of the customers making sure that the team is defining and keeping in mind the customers requirements at all times.

Scrum development team: This can include developers, testers, designers and anyone else involved in actually making the product.

What are the steps in a scrum systems development life-cycle?

  1. The product owner elicits client requirements and makes a collection of user stories in a document called the product backlog.
  2. Sprint planning is where the team as a whole allocates user stories from the product backlog to the sprint backlog to be completed in the next sprint.
  3. The development of software to address the user stories in the sprint backlog is undertaken by the scrum development team. Every day the daily scrum meeting is performed so everyone in the team is kept up to date with all other team members. This is where the team can identify issues and developers can request help.
  4. At the end of the sprint there is a software outcome which could be deployed.
  5. A sprint review/retrospective takes place to determine what went wrong in the immediately previous sprint and what actions can be taken in the next sprint to ensure the same mistakes don’t happen again.
  6. Then the cycle begins again.

Often the most important user stories are transformed into code in early sprints so that if they take longer than predicted they can be finished off in the next sprint, meaning if the project reaches its end point without all user stories transformed into code, then the most important features of the product are in place so it could be deployed (Scrum Alliance, 2015).

 

What is Kanban?

kanban

(“Kanban The Agile Coach,” n.d.)

Kanban is another systems development methodology that follows the agile methods ideas and values. Kanban was conceived in Japan by Toyota.

The central concept of Kanban is a visual representation of the user stories as sticky notes on a whiteboard. The uncompleted user stories start on the left hand side of the Kanban board and move their way over to the right hand side.

By having this visual representation of the progress that user stories are at means that it is easier to keep track of how the project is going. Particularly since there are limits to the number of user stories that can be in a specific stage of completion thereby preventing work bottlenecks.

Kanban teams do not have the same roles as a scrum team, instead the team is made up of a wide range of developers and designers, along with a product owner (effectively the project manager). In the case of Kanban the product owner is responsible for making sure all tasks are working their way through the Kanban board from uncompleted to completed.

Conclusion

I have found it very interesting to read up about agile methods, and its implementation in Scrum and Kanban.

Something that really stands out to me is the focus of both these three concepts and DevOps on communication. As I understand it DevOps is making sure there is greater communication between the developers and operational teams managing the production environment so that differences between the development and production environment are learnt early and addressed.

I will cover DevOps in more detail in a future research journal entry as I am interested to know more about it because another intern at my work was working on DevOps over the summer.

Bibliography:

SourceSeek. (2013, July 14). What is Agile Development (Part 1): What is Agile Development? – YouTube. Retrieved March 15, 2017, from https://www.youtube.com/watch?v=-zDct5d2smY

Shead, M. (2016, May 31). What is Agile? – YouTube. Retrieved March 17, 2017, from https://www.youtube.com/watch?v=Z9QbYZh1YXY

Agile Manifesto Authors. (2001, February). Manifesto for Agile Software Development. Retrieved March 17, 2017, from http://agilemanifesto.org/

Rosenblatt, H. J., & Shelly, G. B. (2014). Systems analysis and design (Tenth edition, Instructor’s edition). Boston, MA: Course Technology Cengage Learning.

Rouse, M. (2017, February). What is Scrum? – Definition from WhatIs.com. Retrieved March 19, 2017, from http://searchsoftwarequality.techtarget.com/definition/Scrum

Scrum Alliance. (2015, June 25). What is Scrum? – YouTube. Retrieved March 19, 2017, from https://www.youtube.com/watch?v=TRcReyRYIMg

Kanban The Agile Coach. (n.d.). Retrieved March 19, 2017, from https://www.atlassian.com/agile/kanban

SourceSeek. (2013, July 14). What is Agile Development (Part 1): What is Agile Development? – YouTube. Retrieved March 15, 2017, from https://www.youtube.com/watch?v=-zDct5d2smY

Full Comparison: Agile vs Scrum vs Waterfall vs Kanban. (n.d.). Retrieved March 19, 2017, from https://www.smartsheet.com/agile-vs-scrum-vs-waterfall-vs-kanban