Agile Software Development and Scrum

As I continue my job search for my first job in the tech world, job description after job description, I keep seeing the word “Agile”. Naively, I thought Agile environment meant a fast-paced place to work. After digging deeper, I found why so many companies want a candidate to be familiar with Agile development.

What is Agile?

elating to or denoting a method of project management, used especially for software development, that is characterized by the division of tasks into short phases of work and frequent reassessment and adaptation of plans.

To understand the value of this belief we need to know other options to make decisions and complete projects like the waterfall approach. Waterfall basically means a lengthy process of planning until planning the whole project is complete, then coding and testing the whole project until the project is complete. This can take many months and by the time the product is completed and ready for deployment it could be too late for whatever the project was created for. The basic idea of Agile is to break tasks into small chunks and get it out to the public, continually planning and adding to that until completed. This inherently allows the team to quickly adapt the product to change in demand.

It is important to note that Agile is not a methodology, framework, or concrete process. It is a set of values and principles. As you can imagine every company will have different values and principles so you can expect the way agile is practiced to be a little different wherever you go. I like to think of Agile as a loose set of rules that people take and form their own beliefs on what is the best way to solve a task.

The Manifesto for Agile Software Development

The Manifesto puts in perspective what is valued over something else.

The Manifesto also has 12 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.

Agile Software Development Methods

Agile is an umbrella term that frameworks have been built around Agile beliefs

Scrum

Product Owner — communicating the product goal and creating and communicating Product Backlog items. The Product Owner sets the direction and keeps the user in mind.

Product Backlog — a prioritized list of features that is always changing. Usually written as user stories “as a (role) I want (feature) so that (benefit)”

Scrum Master — makes sure the project moves smoothly and the Development Team has the resources it needs.

Development Team — consists of programming and testing.

Sprint — short duration milestones that allow the team to break up work and get small jobs done quickly. Sprints should be between a couple days to a month depending on the project. At the end of a spring the product should be tested and ship-ready

Burndown Chart — a visual chart that tracks how much work is left on a sprint trending down to 0. This is helpful to track if the sprint will finish on time or adjustments need to be made.

Scrum Meetings — fast paced meeting daily for Scrum team to communicate and talk about blockers and progress made since last meeting.

The Scrum Process tends to follow this pattern:

  1. A Product Owner orders the work for a complex problem into a Product Backlog.
  2. The Scrum Team turns a selection of the work into an increment of value (usually how many hours a user story will take)
  3. Now that the Backlog is organized by length of time or work, the Scrum team turns that into multiple Sprints.
  4. Scrum Team starts completing Sprints and meeting daily for Scrum Meetings
  5. The Scrum Team inspects the results and adjust for the next Sprint in a Sprint Retrospective.
  6. Repeat
Scrum Process

Resources

https://www.agilealliance.org/agile101/

Student at The Flatiron School in Washington DC