Professional Documents
Culture Documents
This study aid is prepared with reference books suggested by PMI in line with PMI-ACP
preparation. Topics are aligned and compiled under name of each book to ease reading of
the user. This study aid can be used for CSP exam by Scrum Alliance as well.
The art of agile development
XP values are courage, communication, simplicity, feedback and respect
Second factor syndrome: In XP, the team who first adopts XP is very successful. But the
second wave of XP projects in organization struggles. Every team needs support when it adopts
XP
Technical debt: The amount of less than perfect design and implementation decision
XP teams support the quest for simple design by finding a metaphor that can be used for the
whole system. The metaphor provides a frame of reference for how they think about the system
2 onsite customers for 3 programmers 2:3, 1 tester for 4 programmers or to 6 programmers 1:4
or 1:6. Needs Programmer coach and Project manager
Release retrospective, process retrospective, surprise retrospective are the other types of
retrospectives can be conducted.
Mute mapping is a variant of affinity diagram mapping where no team member speaks and
may last for 10 minutes
Prime directive means never use retrospective to blame or attack other individuals
Vertical market software development specific to particular industry and often customized
for each customer
Horizontal market software can be used for wide range of industries
When the whole team uses the ubiquitous language while sitting together, everyone can
overhear domain discussions, especially during pairing sessions
Things to be discussed in daily stand up meeting 1) what did I do yesterday? 2) What will I do
today? 3) What are problems preventing our progress?
Purpose of daily stand up is to achieve brevity that is quality expressing things in short
Creating a coding standard is an exercise in building consensus. It may be one of the first
things that programmers do as a team.
An XP team produces working software every week, starting with the very first week. The
iteration demo is a powerful way to do so. First, its a concrete demonstration of the teams
progress. The team is proud to show off its work, and stakeholders are happy to see progress.
A burn-up chart is an excellent way to get a birds-eye view of the project. It shows
progress and predicts a completion date. Most teams produce a burn-up chart when they update
their release plan.
Throughput is the number of features the team can develop in a particular amount of time
Zero bugs can be achieved by 1)write fewer bugs 2)eliminate by bug breeding grounds 3)fix
bugs quickly 4)test your process 5)fix your process
Following are version control terminologies: Version control helps our code to be kept in an
authoritative place
Repository
The repository is the master storage for all your files and their history. Its typically stored on
the version control server. Each standalone project should have its own repository.
Sandbox
Also known as a working copy, a sandbox is what team members work out of on their local
development machines. (Dont ever put a sandbox on a shared drive. If other people want to
develop, they can make their own sandbox.) The sandbox contains a copy of all the files in the
repository from a particular point in time.
Check out
To create a sandbox, check out a copy of the repository. In some version control systems, this
term means update and lock.
Update
Update your sandbox to get the latest changes from the repository. You can also update to a
particular point in the past.
Lock
A lock prevents anybody from editing a file but you.
Check in or commit
Check in the files in your sandbox to save them into the repository
Tip or head
The tip or head of the repository contains the latest changes that have been checked in. When
you update your sandbox, you get the files at the tip. (This changes somewhat when you use
branches.)
Tag or label
A tag or label marks a particular time in the history of the repository, allowing you to easily
access it again.
Branch
A branch occurs when you split the repository into distinct alternate histories, a process
known as branching. All the files exist in each branch, and you can edit files in one branch
independently of all other branches.
Merge
A merge is the process of combining multiple changes and resolving any conflicts. If two
programmers change a file separately and both check it in, the second programmer will need to
merge in the first persons changes.
Collective ownership cannot be achieved if files are locked for editing others. Concurrent
editing can be followed which enables two person can edit simultaneously and version control
system merges both the changes done.
Always check in the code that builds and passes all the tests
Duplicating code base will reduce our ability to deliver the code
Maximum time taken for creating code build is 10 minutes or less than that. Slow tests on
build may lead to delay in build creation
The ultimate goal of continuous integration is to be able to deploy all but the last few hours of
work at any time.
Continuous integration can be practiced by 1)integrate your code every few hours 2)keep
your build and other release infrastructure up to date
Collective code ownership spreads responsibility for maintaining the code to all the
programmers. Everyone shares responsibility for the quality of the code. No single person
claims ownership over any part of the system, and anyone can make any necessary changes
anywhere.
Knowledge silo one or two people can understand the code not all- can not achieve collective
code ownership in this case
Vision reveals where the project is going and why its going there.
Release Planning provides a roadmap for reaching your destination.
The Planning Game combines the expertise of the whole team to create achievable plans.
Risk Management allows the team to make and meet long-term commitments.
Iteration Planning provides structure to the teams daily activities.
Slack allows the team to reliably deliver results every iterations
Stories form the line items in the teams plan.
Estimating enables the team to predict how long its work will take.
Vision we know why our work is important and how we will be successful - The vision
statement documents three things: what the project should accomplish, why it is valuable and
the projects success criteria.
The last responsible moment is the last moment at which you can responsibly make a
decision
Planning requires participation from programmers and customers and testers do not have
any explicit role in this game. In this game, programmers for estimating to complete a story and
customers for prioritizing the story
Iteration schedule
Demonstrate previous iteration (up to half an hour)
Hold retrospective on previous iteration (one hour)
Plan iteration (half an hour to four hours)
Commit to delivering stories (five minutes)
Develop stories (remainder of iteration)
Prepare release (less than 10 minutes)
Commitment is a bold statement. It means that youre making a promise to your team and to
stakeholders to deliver all the stories in the iteration plan. It means that you think the plan is
achievable and that you take responsibility, as part of the team, for delivering the stories.
Slack we deliver our iteration commitments. Paying down technical debt will increase teams
productivity. Introducing some buffer to meet committed things for iterations
Use index cards to get response from stakeholders and it is much effective than computerized
tools
Stories need to be customer-centric. Write them from the on-site customers point of view,
and make sure they provide something that customers care about. On-site customers are in
charge of priorities in the planning game, so if a story has no customer value, your customers
wontand shouldntinclude it in the plan.
Programmers will often use a spike solution to research the technology, so these sorts of stories
are typically called spike stories.
All the programmers should participate in estimating. At least one customer should be present
to answer questions. Once the programmers have all the information they need, one
programmer will suggest an estimate.
How to improve velocity: 1)Pay down technical debt 2) improve customer involvement
3)support energized work 4)offload programmer duties 5)provide needed resources 6)add
programmers
Incremental Requirements allows the team to get started while customers work out
requirements details.
Customer Tests help communicate tricky domain rules.
Test-Driven Development allows programmers to be confident that their code does what
they think it should.
Refactoring enables programmers to improve code quality without changing its existing
behaviour.
Simple Design allows the design to change to support any feature request, no matter how
surprising.
Incremental Design and Architecture allows programmers to work on features in parallel
with technical infrastructure.
Spike Solutions use controlled experiments to provide information.
Performance Optimization uses hard data to drive optimization efforts.
Exploratory Testing enables testers to identify gaps in the teams thought processes.
A spike solution, or spike, is a technical investigation. Its a small experiment to research the
answer to a problem.
Exploratory testing enables you to discover emergent behaviour, unexpected side effects,
holes in the implementation (and thus in the automated test coverage), and risks related to
quality attributes that cross story boundaries such as security, performance, and reliability
Charters, observation, notetaking, heuristics are the tools used in exploratory testing
Mastering in agile can be done by improve the process, rely on people, eliminate waste,
deliver value, seek technical excellence
A good software design minimizes the time required to create, modify, and maintain the
software while achieving acceptable runtime performance.
Estimating and Planning by Mike Cohn
Velocity: measure of teams rate of progress. Number of story points can be delivered by team
for a sprint
Elapsed time: The amount of time that passes on the clock to do something
Planning poker: combines Expert opinion, analogy and disaggregation. Team comprises all
the people including programmers, testers, engineers and UI designers. Product owner or
analyst can be the moderator
Burn down chart: shows amount of work or stories remaining at specified point of time in
sprint and shows how team progresses towards goal
Becoming Agile
Scrum also has some weaknesses:
Scrum doesnt want specialists. It may be difficult to quickly convert an existing team from a
group of specialists to a group where anyone can perform any task.
A Scrum team cant be successful without a strong Scrum Master, which makes the process
highly dependent on one individual.
Because Scrum is mainly a framework; the team still needs to identify the practices and
methods to use within the framework.
Reducing the risk of agile adoption by following assessments: management style, manager
buy in, developer buy in, power distance
Dr.Agile dragile.com is an online agile assessment tool that helps determining your readiness
for 40 different practices
Why we should pursue agile: 1) if there is no specific methodology for projects 2) your
present methodology is struggling to keep up with volume 3) you customers are not happy
Too much coaching as well as too little coaching is dangerous to become agile
Creating core team: 1) They are not part of management 2) Team comprises of doers who
know ins and outs of the organization 3) Having team members all areas initializes awareness
across the company
Agile manager: doing shepherd less directing. Agile manager provides leadership without
using formal power
Soft skills for agile coach: Effective communication, Analytical thinking, diplomacy skill,
great listening skill
Feasibility study has to be completed to select a pilot project, pilot team, creating feature cards,
prioritizing product backlog.
Iteration 0 is the foundational work performed after initial planning but before development
begins. Iteration 0 work usually runs for about a week, but it can take less or more time
depending on project complexity
Exploratory testing is different than functional testing. Functional testing tries to make sure
the software does what its supposed to. Exploratory testing tries to make sure the software
doesnt accidentally do things it isnt supposed to do.
5 categories of adapters as per based on technology adoption life cycle mentioned Geoffrey
Moores book crossing the chasm
Innovators are usually experimentalists who are interested in trying new things. (For 1st pilot
project)
Early adopters willing to take the risk and adopt a new technology because it either
addresses a direct need they have or proposes a new strategic opportunity for them. (2nd wave
of pilot projects)
Early majority pragmatists, conservative, but still open to new ideas if they are convinced.
They usually prefer evolutionary change and are averse to taking risks. (the biggest hurdle)
Late majority Mainstream employees who are less comfortable with technology change and
are usually skeptical. (They need more time until they see more people in organization use new
process)
Laggards May never adopt a new technology. They never adapt to new
Sidky Agile Maturity Model: SAMI has 5 stages. The purpose of the SAMI is to help you
become more agile. The SAMI isnt meant to act as a scoring device.
1. collaboration- enhancing communication and collaboration
2. evolutionary- delivering software early and continuously
3. integrated- developing high quality software in efficient manner
4. adaptive- responding to change through multiple levels of feedback
5. encompassing- establishing environment to sustain agility
The heart of scrum lies in iteration. Customer gets incremental product at the end of every
iterations.
Product owner is creating the projects initial overall requirements, return on investment
(ROI) objectives, and release plans
The Team is responsible for developing functionality. Teams are self-managing, self-
organizing, and cross-functional, and they are responsible for figuring out how to turn Product
Backlog into an increment of functionality within iteration and managing their own work to do
so. Team members are collectively responsible for the success of each iteration and of the
project as a whole
The ScrumMaster is responsible for the Scrum process, for teaching Scrum to everyone
involved in the project, for implementing Scrum so that it fits within an organizations culture
and still delivers the expected benefits, and for ensuring that everyone follows Scrum rules and
practices.
The Product Owner is responsible for the contents, prioritization, and availability of the
Product Backlog. The Product Backlog is never complete, and the Product Backlog used in
the project plan is merely an initial estimate of the requirements and evolves as the product and
the environment in which it will be used evolves
The Sprint Backlog is a highly visible, real-time picture of the work that the Team plans to
accomplish during the Sprint.
In scrum pig role is for product owner, ScrumMaster and team who are committed to
projects. Chicken role is for spectators like other managers who are interested in the project
The ScrumMaster is responsible for the success of the project, and he or she helps increase
the probability of success by helping the Product Owner select the most valuable Product
Backlog and by helping the Team turn that backlog into functionality. The ScrumMaster earns
no awards or medals because the ScrumMaster is only a facilitator
Scrum projects require less planning than typical Gantt chartbased projects because
those working to deliver the expected benefits provide visibility into their progress at the end of
every Sprint
The minimum plan necessary to start a Scrum project consists of a vision and a Product
Backlog. The vision describes why the project is being undertaken and what the desired end
state is.
The first task is to create the Scrum artefact needed for managing a Scrum project that
product backlog
During sprint, sprint backlog is fixed and can be changed as a result work being performed in
that sprint
The Burndown report graphs remaining estimated workload over the course of the project.
Workload at the start of each Sprint is measured by summing all open Product Backlog work
estimates. From Sprint to Sprint, the increase or decrease in these sums can be used to assess
progress toward completing all work for a release by an expected date.
Scrum works only if everything is kept visible for frequent inspection and adaptation
We accept that the Teams estimate will be imprecise in the first Sprint. Team members
delivering something approximating their commitment in the first Sprint is a testimony to
human pride and determinationnot the Teams estimating accuracy
When more than one Scrum Team works simultaneously on a project, it is referred to as a
scaled project, and the mechanisms employed to coordinate the work of these teams are called
scaling mechanisms
Chickens are not allowed to speak in daily scrum meeting and not to interfere the meeting.
Limiting attendance of too many chickens lie with ScrumMaster responsibility
The purpose of the Sprint review is for the Team to present to the Product Owner and
stakeholders functionality that is done. Although the meaning of done can vary from
organization to organization, it usually means that the functionality is completely engineered
and could be potentially shipped or implemented. If done has another meaning, make sure
that the Product Owner and stakeholders understand it. This is time box of 4 hours
Sprint retrospective meeting has time box of 3 hours and should be attended only by team,
PO and SM. This is to discuss the improvement needed which can be incorporated in
upcoming sprints
Refer page 130 of this book to know the definitions of each roles about scrum
Software managers bridge to agility
Mapping to agile practices: Integration project management, scope, quality and risk
Scope management: Planning meetings, release and iteration plan, feature acceptance,
constant feedback by demo/iteration/review/retrospective, ranked backlog
An acceptance criterion for each story is written on back of the story card. Passing tests does
not mean acceptance. Every story has to be accepted by product owner
Risk management: iteration planning/daily stand ups/retrospectives, daily stand ups and
highly visible information radiators
Agile addresses following core risks: Intrinsic schedule flaw, specification breakdown, scope
creep, personnel loss, productivity variation
Servant leader: Facilitate meetings, remove roadblocks, protect team from distractions, help
people communicate, mediate team disputes, negotiate with outside team, provide highly
visible information radiators, and manage external dependencies
Donts:
No need to own product backlog- PO owns
No need to own estimates delivery team does
No need to make delivery decisions you facilitate team for this activity
No need to make product decision PO does this
Information radiator: people get information just walk pass by that. Can be used for plans,
status and initiatives
Amicability: willingness to listen with good will. Amicability index explains how quickly
information moves from one part of organization to another. A low amicability index denotes
people blocks the flow of information either by intentionally or not listening well
Feature driven development FDD: it contracts with XP following are key elements of FDD
based on 5 parts with features to be delivered
1) Tight process with exit/entry criteria 2) fix time, cost and scope early 3) chief programmers
with class owners 4) a central model where features are matched to it 5) review domain, review
feature and inspect feature
Adaptive software development: developed by Jim Highsmith practices for large scale
projects introduces an agile management called leadership collaboration
Crystal: Every project is different need its own methodology indexed by colour for the
people only frequent deliveries and post delivery reflection wokshops are mandatory
colours are crystal clear, yellow, orange, red based on 7 principles
User stories applied for agile software
A user story describes functionality that will be valuable to either a user or purchaser of a
system or software. User stories are composed of three aspects:
a written description of the story used for planning and as a reminder
conversations about the story that serve to flesh out the details of the story
tests that convey and document details and that can be used to determine when a story is
complete
The developers have different priorities for many of the stories. They may suggest that the
priority of a story be changed based on its technical risk or because it is complementary to
another story. The customer team listens to their opinions but then prioritizes stories in the
manner that maximizes the value delivered to the organization.
Acceptance testing is the process of verifying that stories were developed such that each
works exactly the way the customer team expected it to work
Stories should follow INVEST model independent, negotiable, valuable, estimatable, small,
testable
User role modelling steps: These users would use the actual application once stories are
implemented as application/software
1) brainstorm an initial set of user roles 2)organize the initial set 3)consolidate the roles
4)refine the roles
Extreme characters are being used when designing a new system otherwise those stories
would be missed
Developers have to participate in identifying personas and user roles and understanding each
roles of persona
Techniques to create user stories: User interviews, questionnaires, observation, story writing
workshops
User proxies: when real users are not available user proxies can act as real user. Following
people can be as proxies for users 1)users manager 2)development manager 3)salespersons
4)domain experts 5)marketing group 6)former users 7)customers 8)trainers and technical
support 9)business or system analysts
Situations where proxies can be used: 1) when users exist when access is limited 2) when
user is not available
Acceptance tests provide a great deal of information that the programmers can use in advance
of coding the story
Because the software is being written to fulfill a vision held by the customer, the acceptance
tests need to be specified by the customer. The customer can work with a programmer or
tester to actually create the tests and has responsibility to execute acceptance tests
FIT and fitness are the excellent automation tools to cover acceptance test in table or spread
sheet format
A closed story is one that finishes with the achievement of a meaningful goal and that allows
the user to feel she has accomplished something.
Triangulating an estimate refers to estimating a story based on its relationship to one or more
other stories. Suppose a story is estimated at four story points. A second story is estimated at
two story points. When the two stories are considered together the programmers should agree
that the four-point story is roughly twice the size of the two-point story
Whether or not a team chooses to pair program has no effect on story point estimates. Do
not consider pair programming efforts in calculating story point estimate
DSDM includes a prioritization technique referred to as the MoSCoW rules. MoSCoW is an
acronym for must have, Should have, could have and would not have
Collectively the developers and the customer select an iteration length that will work for them.
Iteration lengths are typically from one to four weeks
So, if the project has 100 story points and we estimate velocity at 20 story points per
iteration, then we can expect it to take 5 iterations.
The number of story points completed in iteration is known as the project's velocity
Iterative development will not be suitable for front end development. Since browsing time
will lead to poor customer satisfaction
User stories are not use cases, not scenarios; it is different from IEEE software requirements
specifications
Refer question and answer for this book from page 325
Kanban
The basic principles of Kanban for software engineering
Limit work in progress (WIP)
Pull value through (with WIP limit)
Make it visible
Increase throughput
Fixed Kanban backlog
Quality is embedded in (not inspected in)
Lead time Clock starts when request is made and ends when it is delivered.
Cycle time- starts when actual work begins and ends at when work is delivered. Cycle time is
the more mechanical measure of process capability
How to improve cycle time: 1) reduce number of things in process 2) improve average
completion rate 3) reduce rework 4) high visibility of blockers and active removal 5) analysis
to identify items that are too large
Kanban projects can have 40 people or more. Kanban pull system is more focused on work
and work flow than first generation agile processes
Wastes in software engineering: rework or defects, coordination cost and transaction cost
MMF creates value is following ways: competitive differentiation, revenue generation, cost
saving, brand projection, enhanced loyalty
Agile is sometimes called light weight method since they are less prescriptive than traditional
methods
Books Referred
Agile project management with scrum
Becoming agile
Agile project development a cooperative game
Estimating and planning by Mike Cohn
Lean agile software development
The Software manager bridges to agility
The Art of agile development
User stories applied