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?
The definition of the idea is as follows:
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
While there have been similar cases to Agile throughout history before the Manifesto created in 2001, The Manifesto for Agile Software Development was created and is the guideline for a company to follow and create their Agile environment.
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
Scrum
Scrum is a framework developed and used by many teams as a way for a company to be Agile. A Scrum process is distinguished from other agile processes by specific concepts and practices. There are a few pieces to the Scrum puzzle to know.
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:
- A Product Owner orders the work for a complex problem into a Product Backlog.
- The Scrum Team turns a selection of the work into an increment of value (usually how many hours a user story will take)
- Now that the Backlog is organized by length of time or work, the Scrum team turns that into multiple Sprints.
- Scrum Team starts completing Sprints and meeting daily for Scrum Meetings
- The Scrum Team inspects the results and adjust for the next Sprint in a Sprint Retrospective.
- Repeat