#
Agile
Agile itself is product management philosophy, it prescribes no process or framework of its own. It consists of a collection of 4 core values and 12 principles that help software teams respond to change and deliver better results.
#
The 4 Core Values of Agile
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
#
The 12 Agile 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 at MidFirst
The two most popular frameworks for implementing Agile project management are Scrum and Kanban. We utilize both of these methodologies depending on the specific product needs and delivery requirements.
#
Kanban
Kanban is an agile methodology that emphasizes visual workflow and continuous improvement. Tasks are represented by cards on a Kanban board, typically consisting of at least three columns: To Do, In Progress, and Done. Work progresses continuously from left to right. Kanban boards provide transparency, allowing teams to see the status of all tasks at a glance. This focus on visualization helps identify bottlenecks and areas for improvement. Kanban is flexible and adaptable, allowing teams to prioritize tasks and adjust workflows as needed.
Kanban teams focus only on work that's actively in progress. Once a task is completed, the next task is selected from the top of the backlog. Because changes outside of the current work items have little to no impact on the team, the product owner is free to re-prioritize work in the backlog at any time. This does not mean, however, that backlog items do not require regular refinement with the team so that tasks are well understood and can be started without much, if any, discussion as developers become available.
#
Scrum
Scrum is known for its iterative and incremental approach. In scrum, work is broken down into short, time-boxed periods called sprints (typically 2-4 weeks). At the beginning of each sprint, the team collaborates to select a set of prioritized tasks from a product backlog. Throughout the sprint, the team focuses solely on completing those tasks. Scrum utilizes daily stand-up meetings to address blockers and facilitate communication. After sprint completion, the team reviews completed work, gathers feedback, and adjusts the product backlog for the next sprint. This iterative approach allows for continuous improvement and adaptation to changing requirements. Scrum relies on specific roles like the Product Owner (represents stakeholder needs), Scrum Master (facilitates the process), and the Development Team (completes the tasks).
#
Kanban vs Scrumban
Both of these methodologies have distinct differences that should be considered before choosing one over the other.
#
Kanban advantages
Kanban is much less rigid than scrumban and introduces less process overhead. It is much more suitable for early-stage product development where the team needs to move quickly and may not need to worry (yet) about affecting end users utilizing the application in production.
Greater Flexibility: Kanban thrives on continuous flow, it is well suited to reacting to changes as they arise. Scrumban offers some flexibility, but Kanban allows for even more on-the-fly adjustments to task prioritization and workflow changes. It is ideal for projects with unpredictable workloads or frequent requirement shifts.
Unrestricted Work Intake: Kanban doesn't restrict the inflow of new tasks. Work enters the system and progresses through the workflow as capacity allows. Scrumban limits this intake to some degree. This unrestricted inflow makes Kanban suitable for situations where a steady stream of tasks is expected.
Simplicity: Kanban is a lightweight framework with minimal overhead. It's easy to understand and implement, even for teams new to agile. Scrumban, while simpler than Scrum, still involves adapting Scrum practices, which can add some complexity.
Situations where Kanban might be a better choice than Scrumban:
- Projects with Unforeseen Changes: If the project scope is likely to change frequently, Kanban's flexibility allows for smoother adaptation.
- Unpredictable Workload: For teams dealing with a constant flow of incoming tasks, Kanban's unrestricted intake is advantageous.
- Focus on Efficiency: If the primary goal is to continuously improve workflow and identify bottlenecks, Kanban's emphasis on optimization is ideal.
- New to Agile: For teams unfamiliar with agile methodologies, Kanban's simplicity makes it an easier starting point.
#
Scrum advantages
Scrum's ceremonies and additional overhead gives teams greater reporting and predictability, more effective communication, and a sharper focus. Scrum is particularly advantageous when building larger, more complex projects that require well-timed, focused delivery and regular feedback loops with end users and stakeholders.
Structured Approach: Scrum provides a clear framework with defined roles (product owner, scrum master, dev team) and events (backlog refinement, sprint planning, daily stand-up, sprint review and sprint retrospective). This structure fosters clarity, focus, and accountability within the team.
Focus and Prioritization: Scrum emphasizes prioritizing tasks within each sprint. The team commits to delivering a specific set of features from the product backlog by the end of the sprint. This focus helps maintain direction and avoid scope creep, which can be an issue in Kanban's continuous flow.
Faster Feedback Loops: Scrum's regular cadence of sprints (typically 2-4 weeks) allows for frequent delivery of potentially shippable product increments. This facilitates gathering feedback from stakeholders early and often. This rapid feedback loop enables course correction and continuous improvement throughout the project.
Improved Team Cohesion: Scrum promotes close collaboration within the development team. Daily stand-up meetings and sprint retrospectives encourage communication, transparency, and problem-solving as a unit.
Situations where Scrum might be a better choice than Kanban:
- Complex Projects: For intricate projects with well-defined features, Scrum's structured approach and focus on prioritization can be advantageous.
- Need for Regular Delivery: If frequent delivery of working features and early stakeholder feedback are crucial, Scrum's sprint cycles provide that opportunity.
- Large Teams: Scrum's defined roles and ceremonies can help manage complexity and ensure clear communication within larger development teams.