While I've heard of Agile, Scrum, and Kanban, I'll admit that I wasn't well-versed in what defines these tools at this time yesterday. They came up in conversation and I realized I wanted to learn more!
The definitions I found in my research were very abstract, which is the beauty of the Agile Manifesto, because it's flexible enough to use with non-tech teams. I even realized that we practice an Agile process at my current company. Our way of doing things hits all of the key points:
- Working software over comprehensive documentation : We develop beta sites ASAP then refine and fix any bugs.
- Individuals and interactions over processes and tools : We all have the freedom to plan our work for the day, and there is no micromanaging. Every morning we meet briefly to discuss what we will do that day.
- Customer collaboration over contract negotiation : Clients play a key role in developing their websites because they add their own content. They also collaborate in the decisions of features.
- Responding to change over following a plan : We maintain flexibility throughout each project and adapt along the way.
Then I also came across the following job posting, which shows how an Agile environment would be applied in a software engineer position. They are looking for someone who will:
- Collaboratively tackle difficult and ambiguous problems as part of a cross-functional team.
- Work across the different phases of the software development lifecycle including estimating level-of-effort, identifying the best approach, building, performing QA testing, deploying, documenting, debugging, and supporting features.
- Participate and contribute to stand-ups, sprint planning, and retrospectives at the agile team level and up.
- Perform code reviews with helpful and meaningful feedback for your teammates.
- Research, document, note trade-offs and recommend potential solutions around future product features.
- Work collaboratively across the engineering department to ensure standard methodologies and processes are followed.
This is a great real-world example of an Agile engineer's day-to-day, but how do Scrum and Kanban fit into all of this? Well, these are frameworks that offer more specifications to implement an agile workflow. The previous job posting refers to a Scrum environment, because the Scrum framework usually consists of small teams, sprint planning for ~2 week sprints, daily stand-ups, sprint reviews, and end-of-sprint retrospectives.
Kanban is another framework and is all about visualizing work, often done with a Kanban board made up of columns that contain tasks to do, what's in process, what needs to be reviewed, and what's done. This Atlassian video explains it really well.
Many teams including the one I'm on use both Scrum and Kanban in their Agile environment. I use a digital Kanban board called Flow as well as participate in daily Scrum stand-ups. We definitely lean more toward Kanban than Scrum. What's your workflow like?