The following questions cover core tenets of the Agile methodology to help you showcase your experience and thought processes, or for managers to gauge a candidate’s basic understanding of Agile.
Agile is an iterative approach to software development in which teams focus on short sprints and regular collaboration in order to deliver value quickly and with fewer issues.
The Agile manifesto is a document published in early 2001 that outlines the values and key principles of the Agile philosophy.
There are four core values outlined in the Agile manifesto.
Individuals and interactions over processes and tools: The Agile manifesto places people and collaboration at the forefront of the philosophy. The contributions of an engaged team of individuals are more valuable than the tools or processes they might use to accomplish their work.
Working software over comprehensive documentation: The Agile philosophy prioritizes delivering software to customers over waiting for extensive documentation that can slow down the software development process. Documentation is still valuable, but teams shouldn’t let documentation gathering become a bottleneck preventing writing code.
Customer collaboration over contract negotiation: This Agile value prioritizes customer-centric software development over product-centric development. Agile aims to begin the customer collaboration process early in the software development lifecycle and build in a continuous customer feedback loop to ensure the product meets customer needs.
Responding to change over following a plan: Rather than viewing a product roadmap as a static document, Agile encourages teams to frequently revisit their roadmap and make changes as needed to align with customer needs.
There are 12 key principles outlined in the Agile manifesto (quoted directly below).
Customer satisfaction: The highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Welcome change: Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
Deliver frequently: Deliver working software frequently, from a couple of weeks to a couple of months, with a preference for the shorter timescale.
Work together: Clients and developers must work together daily throughout the project.
Motivated team: Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
Face-to-face conversations: The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Working software: Working software is the primary measure of progress.
Constant pace: Agile processes promote sustainable development—the sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Good design: Continuous attention to technical excellence and good design enhances agility.
Simplicity: Simplicity—the art of maximizing the amount of work not done—is essential.
Self-organization: The best architectures, requirements, and designs emerge from self-organizing teams.
Reflect and adjust: At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
The Agile testing method involves software testing throughout the development process, not just before deployment. This means gathering feedback from the customer throughout the development process to ensure the code that’s delivered meets expectations and works like it’s supposed to.
There are several core principles of Agile testing.
Early and continuous testing: Testing should be implemented in the early stages of the software delivery lifecycle and carried on throughout the entire development.
Frequent deliveries: Teams should aim for frequent software delivery, ideally every two weeks.
Team approach: Agile teams involve more than the core group creating the code. The team should also involve testers, product managers, and stakeholders.
Close collaboration: Teams should aim for frequent face-to-face or virtual conversations to convey key information.
Customer involvement: Software development teams should seek customer feedback after each iteration to foster an environment of continuous improvement.
There are quite a few differences between Agile and Waterfall methodologies. One of the key differences is that Agile is a flexible process that accommodates project changes. Waterfall, on the other hand, is a rigid structure that does not allow for changes after the project has begun.
In the Agile world, there’s a strong emphasis on flexibility, collaboration, and the ability to adapt to change. However, some projects may be better suited for Waterfall’s structured approach. For example, if a project needs to comply with strict regulations or standards, Waterfall’s rigid approach with documented deliverables can ensure adherence.
The Agile philosophy has been incorporated into several software development frameworks, including Kanban, Scrum, Extreme Programming, and Lean.
Kanban: With the Kanban framework, teams visualize the software development process with a Kanban board. This board includes “To Do,” “In Progress,” and “Done” columns to help teams visualize the entire development cycle as it unfolds.
Scrum: Scrum is one of the most popular Agile frameworks. It centers around short work iterations called sprints that ideally take place over the course of two weeks. The Scrum process involves regular meetings during development, including the sprint planning meeting, daily stand-ups, sprint reviews, and sprint retrospectives.
Extreme Programming (XP): The XP framework focuses on delivering quality software, collaborating as a team, and improving the well-being of the software development team. XP involves test-driven deployment, pair programming, and a 40-hour workweek to help prevent developer burnout.
Crystal: The Crystal Agile framework focuses on people, collaboration, and adaptability over strict processes. There is less focus on formalities, empowering teams to find their own solutions and workflows. Each variation of Crystal caters to different team sizes and project complexities.
Iterative development in Agile is a process in which sprints and releases are repeated until the final product is achieved. Customer feedback is implemented with each iteration so that the product is continuously improved.
Incremental development in Agile is an approach in which work is sliced up into smaller pieces, or increments. Each increment is built upon previous versions so that improvements are made bit by bit.
The Agile methodology is well-suited for software development, product design, marketing, and recruiting, to name a few.
Daily stand-ups allow teams to improve communication, identify roadblocks, share knowledge, and make decisions regarding the tasks at hand. Daily stand-ups also eliminate the need for other time-consuming meetings so developers can stay focused on their work.
Sprint planning meetings kick off at the beginning of each new sprint. The team gets together to discuss the work they need to complete in the upcoming sprint and how they’ll accomplish their sprint goal. At the end of the meeting, teams should have finalized the sprint goal and the sprint backlog.
A sprint review meeting takes place at the end of a sprint and acts as a show and tell to demonstrate the product's key features and gather feedback. It’s a chance to discuss what the team accomplished and any changes they need to make.
A sprint retrospective meeting also occurs after the sprint review meeting but before the start of the next sprint. It’s an opportunity for a team to reflect on what went well and what can be improved in the upcoming sprint.
Popular Agile tools include:
GitHub
Jira
VersionOne
Trello
Asana
Zoho
Yodiz
A release candidate is an internal version of a product or software before it goes live. It’s as close as possible to the final release, but further testing may need to be conducted to ensure it meets quality standards and is ready for customers. It’s like the final draft before the big release.
The following questions will help gauge a candidate’s intermediate knowledge of the Agile methodology.
Some of the key metrics associated with the Agile methodology include:
Velocity: The average amount of work a team completes during a sprint, measured in story points or hours
Workload distribution: The amount of work assigned to each team member during a sprint
Failed deployments: The number of deployments that have failed in a given timeframe
Escaped defects: The number of issues found in a release or deployment after production
Deployment frequency: A measure of how often code is deployed
Burn-up charts are used to measure progress and scope creep during a sprint. The y-axis represents the amount of work and is measured in tasks, hours, or story points. The x-axis represents time, typically measured in days.
The chart shows when work was added or removed during the sprint and allows teams to better forecast the project completion date.
Burn-down charts are used to show how much work remains during a sprint. The x-axis represents the amount of time left to complete the project and the y-axis represents effort. This chart depicts velocity, or the rate at which a team is moving toward the end goal, and can be used to help predict performance.
There are different types of burn-down charts, depending on the kind of project you’re working on.
Product burn-down chart: A product burn-down chart shows the story points of all completed sprints, showing the completion of requirements over time.
Sprint burn-down chart: A sprint burn-down chart represents the work that’s been completed during a sprint and the amount of work remaining.
Release burn-down chart: A release burn-down chart shows the progress of how many features or epics have been completed during the release.
Kanban is an Agile framework that helps teams visualize work during the software development lifecycle. Work is represented on Kanban boards, where each column represents a step in your workflow. Underneath these columns, teams add a Kanban card that represents a specific work item.
Scrum of Scrums, sometimes called SoS, is a scaled Agile technique that helps multiple teams work together to deliver complex products. The technique splits up a large group (more than a dozen members) into smaller units of five to 10 members.
Each of these smaller teams designates an ambassador that participates in daily Scrum meetings with other ambassadors. Meetings with these ambassadors are called the Scrum of Scrums, and they aim to improve collaboration between teams.
The artifacts of the Scrum process include:
Product backlog: Product backlogs are prioritized lists of everything needed for the final product, including features, bug fixes, and non-functional requirements.
Sprint backlog: The sprint backlog is a subset of items picked from the product backlog that the team agrees to deliver during the upcoming sprint. These backlog items are selected during sprint planning meetings.
Product increment: The product increment is the sum of all of the product backlog items completed during a sprint, as well as the work completed from previous sprints.
Common challenges teams encounter when incorporating the Agile philosophy include:
Resistance to change: Many organizations are comfortable with what they’ve always done and can be resistant to adopting a new work approach. Agile adoption requires buy-in from the entire team, which can take time and a shift in culture.
While the length of the Scrum cycle will be determined depending on your team size and the scope of the project, a typical timeframe is between two and four weeks.
A spike, a concept adopted from Extreme Programming, is a user story that requires more information in order to estimate how long the story will take to finish. Spikes are also referred to as time-boxed investigations because they’re allotted a certain amount of time in each sprint.
Refactoring is the process of improving the structure of existing code without changing its functionality.
Epic: An epic is a large chunk of work that’s separated into smaller tasks called user stories.
Test-driven development (TDD) is a software development approach in which tests are written before the actual code is created. The main goal of TDD is to modify and write new code only when tests fail to help prevent duplicate code.
A product backlog is a prioritized list of tasks to be done in the future. The list is derived from the product roadmap with the goal of organization and prioritizing upcoming work.
A sprint backlog is a list of tasks to be completed during a sprint. The worklist is derived from the product backlog with the goal of estimating the workload of the upcoming sprint.
QA adds value to Agile teams by helping solve problems and catch errors early. Through the Agile QA process, developers are able to receive quick feedback so they can fix bugs and errors while the code is still in development.
A product roadmap outlines the overall vision and direction of a product, highlighting key themes, timelines, and features you plan to deploy. It serves as a guide for decision-making, helping the team align on the product’s long-term goals, priorities, and anticipated timelines.
The following questions are meant for more senior developers who are well versed in the Agile methodology.
Scrum has three main roles: product owner, Scrum Master, and the development team members.
Product owner: The product owner is tasked with managing the Scrum backlog, knowing when things should and can be released, and managing stakeholder expectations.
Scrum Master: The Scrum Master works as a coach and guide for the development team, ensuring they understand the Scrum framework and its principles, values, and practices.
Agile software development prioritizes flexibility, customer collaboration, and working software created during short sprints by self-organizing teams.
On the other hand, traditional software development methodologies focus on planning and predictability, using longer development phases, organized groups, and comprehensive documentation.
The main difference between Agile and Scrum is that Agile is a software development philosophy built upon a core set of values and principles, whereas Scrum is an Agile methodology teams can use to implement the Agile philosophy into their software development lifecycle.
The Scaled Agile Framework (aka SAFe®) is a framework for scaling Agile at an enterprise level. SAFe is based on 10 guiding principles, processes, and best practices to help larger teams become more agile.
The Definition of Done (DoD) is an agreement that guides all developmental activities and states what is required for a piece of work to be considered “done.” The Definition of Ready (DoR) describes the requirements that must be met in order for a story to move from the backlog to development.
Planning poker is a planning and estimation technique that helps teams estimate product development timeframes and create a plan for the work to be done.
Here’s the typical process of how planning poker plays out:
The product manager describes the user story to the group of estimators.
The estimators are then given Agile poker cards with a number sequence that represents each person’s estimation of the story points.
The estimators reveal their cards at the same time.
If a consensus is reached, the team can move on to the next story point.
If the teams do not have a consensus, the estimators discuss their estimates until an agreement is reached.
User stories are estimated in story points rather than working hours because they’re meant to be a relative estimate. For example, a team may believe a user story estimated at six story points will be about three times as much work as a user story estimated at two points.
Using user stories rather than working hours is also a quicker and easier process—estimating work in working hours can be a time-consuming, often overly detailed approach.
Some of the main disadvantages to the Agile process include:
Scope creep created from constantly changing customer needs
The lack of documented processes can cause teams to get sidetracked as they work
Difficulty in maintaining a high level of collaboration across the team
Some of the main advantages of the Agile approach include:
Increased transparency into the entire development process
Higher customer satisfaction due to close collaboration with the customer
Ability to adapt projects frequently
Early and predictable delivery
Pair programming involves pairing up team members to work together on a programming task. Benefits of pair programming include knowledge sharing (especially when pairing a senior developer with a more junior team member) and better solutions, as problems can be identified and fixed by two minds rather than one.
A zero sprint, or sprint zero, is used by teams to ensure they’re fully prepared before the start of a sprint. This is especially useful if a team is new to the Agile process and could benefit from extra training prior to the start of a sprint.
Story points in Scrum are units of measurement used to estimate the effort required to complete a story.
Impediments are anything that stops or slows the team’s progress toward a sprint goal. These roadblocks can include:
Missing resources
Shortage of team members
Lack of clarity and support
Technical challenges
Unresolved dependencies
External issues
Some of the Agile quality strategies include:
Iteration
Re-factoring
Dynamic code analysis
Short feedback cycles
Reviews and inspection
Standards and guidelines
Milestone reviews
Sprint velocity can be measured by dividing the number of backlog items or story points by the total length of your sprint in days.
An Agile tester should possess the following qualities:
Able to collaborate well with team members, stakeholders, the product owner, and the Scrum Master
Able to document testing processes to share with stakeholders
Able to respond quickly in a changing work environment
Able to understand the end user’s needs
Continuous integration is designed to support small changes rather than large ones. This process can help teams reduce the risk associated with deploying a large chunk of code, resolve issues quicker, and improve the quality of code since projects are broken into smaller, more manageable pieces.
A build breaker occurs when a developer makes a mistake and commits the bug into the software repository, resulting in unacceptable warnings or failures in the test environment.
Acceptance testing is a software testing technique used to determine whether or not the application is working properly for the end user.
Vulnerability testing is a software testing technique used to identify security weaknesses and vulnerabilities.
Continuous testing is a software testing technique that involves testing the software at every stage of the development lifecycle.