Agile - Notes
Agile - Notes
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 for the shorter timescale.
Business people and developers must work together daily throughout the
project.
Build projects around motivated individuals.
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.
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 behaviour accordingly.
4. Describe the Agile Manifesto and its values. How do these values
guide Agile development practices?
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Individuals and Interactions over Processes and Tools: Agile emphasizes the
importance of people working together effectively and communicating directly,
rather than relying solely on rigid processes and tools. This value promotes
teamwork, collaboration, and the ability to adapt to change.
Extreme programming
Focus is:
customer satisfaction
by developing software features
when the customer needs them
Planning is done by whole team – no disconnect between business and
developers
Co-location of developers and business users
Coding is core activity – coding standards are encouraged and collective
code ownership are encouraged
Simple stories and metaphors are used to provide easy understanding
Sustainable pace is maintained – working week of 40 hours
Pair programming – two people working on one task (driver + navigator)
Overall design is considered during refactoring i.e. process to
systematically improve code to improve readability, reduce complexity,
improve maintainability
Intensive testing – coding only done after tests are designed and
developed – automated testing within the codes recommended
Continuous integration and small releases promoted
Direct communication between customer and programmer
Sprint
Sprint - consistent iteration of time to create a group of product features
Long sprints run the risk of having priorities change during the sprint
Each sprint consists of:
Sprint planning
Daily scrum planning
Development time
Sprint review
Sprint retrospective
Sprint planning
Establish goals for the sprint
Choose user stories that support these goals – if necessary create new
user stories
Create sprint backlog
User stories in order of priority
Effort estimate, value and risk
Tasks needed for each story
Effort for each task (hours – less than a day)
Work on one sprint at a time – do not bother about future sprints
Whole team works on one user story at a time until completion- swarming
If all work does not fit the sprint, remove some user stories (time is fixed)
Sprint review - What it is
The aim is to :
Demonstrate and review functionality created by the development
team on the basis of the user stories in the sprint backlog and
completed during the sprint
Collect feedback and update the product accordingly
Attended by the product owner, development team, scrum master (if
needed) and any stakeholders
Should not last more than 1 hour for a 1 week sprint
Estimation poker
Provide each team member with estimation poker cards
Team agrees on one story whose complexity is 5 story points (large) –
known as the anchor story
Team takes a high priority story
All members simultaneously show their estimate by turning their card
If estimates are different, discuss, review assumptions and repeat the
estimation exercise – if no consensus is reached, help of scrum master is
sought
Estimation repeated for all user stories
When there are too many stories, group them per category and estimate
the effort for the category (affinity estimating)
Use food, humour, breaks to make estimation poker enjoyable
Other estimation techniques
T-shirt size estimation
Use size of T-shirts to estimate effort behind development
Group user stories of same sizes together
Start with an agreement on a M size user story
Other stories are then classified into XS, S, M, L and XL
Bucket estimating
Arrange a series of buckets of sizes 1, 2, 3, 4,5, 8, 13, 20, 50, 100,
200
Select a story at random and place it in 8
Discuss the story and its assumptions to understand the effort
Take another story and place relatively
Do the same with other stories
In case, the first story needs to be re-assigned, do it
Overall sanity check
Important for consensus during estimation
8. How does Agile handle changing requirements during the
development process?
Iterative Development: Agile projects are divided into short iterations or sprints,
typically lasting one to four weeks. At the end of each iteration, a potentially
shippable product increment is delivered. This allows for frequent opportunities
to review and adjust requirements based on feedback from stakeholders and
changes in the business environment.
Adaptive Planning: Agile embraces the idea that plans are subject to change and
uncertainty. Instead of creating detailed, rigid plans upfront, Agile teams engage
in adaptive planning, where plans are continuously refined and adjusted based
on evolving requirements and priorities.
Sprint retrospective
It is a meeting in which product owner, development team and scrum
master discuss:
How the sprint went (good and bad)
What they can do to improve the next sprint
Similarity with sprint review: both are done at the end of a sprint
Difference with sprint review: sprint review is a demo of work done
whereas sprint retrospective is a discussion on how to improve things
Meeting should be as self-directed as possible i.e. not supervisors
interfering to allow everyone to be open with each other
If necessary, other stakeholders may be invited (especially if they are part
of a problematic part)
Benefit of improving process is to improve team velocity, efficiency and
team morale
No one size fits all – each team has its own unique dynamics
Scrum processes will expose problems but will not solve them – the team
should use the sprint retrospective to find solutions