ACP Domain 1
ACP Domain 1
1. Act as an advocate for Agile principles with customers and the team to ensure a shared Agile mindset
2. Create a common understanding of the values and principles of Agile through practising Agile practices and using Agile
terminology effectively.
3. Educate the organization and influence project and organizational processes, behaviors and people to support the change
to Agile project management.
4. Maintain highly visible information radiators about the progress of the projects to enhance transparency and trust.
5. Make it safe to experiment and make mistakes so that everyone can benefit from empirical learning.
6. Carry out experiments as needed to enhance creativity and discover efficient solutions.
7. Collaborate with one another to enhance knowledge sharing as well as removing knowledge silos and bottlenecks.
8. Establish a safe and respectful working environment to encourage emergent leadership throughself-organization and
empowerment.
9. Support and encourage team members to perform their best by being a servant leader.
Agile Methodologies
o The following are the common Agile methodologies in practice these days, these are listed in
order of importance for the PMI-ACP® Exam. An understanding of the process and terminologies
of these Agile methodologies will help ensure Agile practices to be carried out effectively.
o Scrum
o XP (eXtreme Programming)
o Kanban
o LSD (Lean Software Development)
o Crystal Family
o FDD (Feature Driven Development)
o ASD (Adaptive Software Development)
o DSDM (Dynamic Systems Development Method) Atern
Information Radiators
o Information radiators are highly visible charts and figures displaying project progress and status,
e.g. Kanban boards, burn-down charts. These shows the real progress and performance of the
project and team which enhances transparency and trust among team members and other
stakeholders.
Agile Experimentations
o Agile projects make use of empirical process control for project decisions, ongoing observation
and experimentation are carried out during project execution to help and influence planning
o Introduce spike (including architecture spike) to carry out a technical investigation to reduce risks
by failing fast
Sharing of Knowledge
o Ideally, Agile teams are best to be co-located (working within the same room with seats facing
each other) to enhance pro-active support, free discussion, open collaboration and osmotic
communication
o Face-to-face communication is always encouraged
o Practice pair programming if feasible
o Make use of daily stand-up, review and retrospectives
o Make use of Agile tooling to enhance sharing of knowledge:
Kanban boards
white boards
bulletin boards
burn-down/burn-up charts
wikis website
instant messaging – Skype, web conferencing, etc.
online planning poker
o Since documentations are not encouraged, co-located teams can share tacit knowledge more
readily
In February 2001, 17 software developers who have already been practicing incremental software
development methodologies met at the Snowbird, Utah, to discuss the future of software development.
They later formed the Agile Alliance.
The Manifesto for Agile Software Development (Agile Manifesto) was published to define core principles
and approaches common to their software development methodologies to develop softwares / products
more efficiently
Some of these authors form the Agile Alliance afterwards to further promote Agile software development.
The Agile Manifesto was written at a high level aiming to define “what” to do in Agile projects (the specific
“how” to implement the principles is left to different Agile methods which can be adopted based on project
characteristics and needs).
While many Agile practitioners disagree on the implementation details, they all follow the Agile Manifesto
principles.
The most popular Agile implementations are Scrum, Lean, XP, etc.
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come
to value:
That is, while there is value in the items on the right, we value the items on the left more.
The Agile Manifesto has made it clear that it recognizes the values of traditional project management
methodology like tools, processes, documentation and plan, but to a degree that would not limit the ability to
respond to changes.
12 Agile Manifesto Principles
A supporting document of 12 principles to the Agile Manifesto is also published to provide more in-depth
explanations of the Agile concepts.
2. Welcome Changes: Welcome changing requirements, even late in development. Agile processes harness
change for the customer’s competitive advantage.
simplify the change control process, no formal documentation and approval required
allow fast response to latest changes in external environment to enhance competitive advantage to
emerging opportunities
3. Frequent Delivery: Deliver working software frequently, from a couple of weeks to a couple of months, with
a preference to the shorter timescale.
can release the product to the market faster
provide immediate values to the customers by delivering working features
the project team activities can be better structured with the fixed delivery timeframe to focus on delivery of
value
Facilitate Teamwork
4. Collocated Team: Business people and developers must work together daily throughout the project.
Collocation of team members can foster osmotic communication (with vehicles other than verbal, e.g.
gesture, what not being said, etc.)
get instant feedback to questions, others at the location can join in the discussion if deem related
the whole team can remain focused and work towards a common goal
5. Motivated Individuals: Build projects around motivated individuals. Give them the environment and support
they need, and trust them to get the job done.
team members are able to choose the jobs they are most interested in through self-organization (not
through external management influence)
the team is empowered to make day-to-day decisions
every member is motivated to achieve success
vs traditional project management -> micro-management, top-down approach
6. Face-to-face Conversation: The most efficient and effective method of conveying information to and within
a development team is face-to-face conversation.
get direct feedback by going to the source of problem or confusion
often via oral communication at the workplace for the benefit of osmotic communication
tools like video conferencing can facilitate virtual team conversation
Deliver Great Products
8. Constant Pace: Agile processes promote sustainable development. The sponsors, developers, and users
should be able to maintain a constant pace indefinitely.
helps to promote work-life balance among the team members to promote happiness by avoiding burnout
or exhaustion
a happy team is also a motivated and productive team
the team can respond to changes quickly
traditional project management would accelerate near deadline
9. Continuous Attention: Continuous attention to technical excellence and good design enhances agility.
10. Simplicity: Simplicity – the art of maximizing the amount of work not done – is essential.
focus on what are essential to create value to the project and customer
discard any distractors that do not act values (components, process, etc.)
the simpler the product, the easier to maintain it, the less risks are there to control
11. Self-Organization: The best architectures, requirements, and designs emerge from self-organizing teams.
the team knows best how to carry out the work, not the project manager nor human resources department
higher level of ownership of the product and will be dedicated to project success
the team becomes experts in how to improve the process and project as they understand the project details
most significant difference from traditional waterfall project management
12. Regular Reflection: At regular intervals, the team reflects on how to become more effective, then tunes and
adjusts its behavior accordingly.
o need to gather the lessons learned frequently during the project and put back into the next
iteration
o “retrospective meeting” as the primary tool – what works and what doesn’t and suggestion /
solutions
o changes can be implemented immediately
o traditional project management carries out reflection only at the end of the project/phrase
Agile Fundamentals
[PMI-ACP® study notes] Unlike the traditional “waterfall” project management philosophy, Agile project
management philosophy is geared to providing flexibility in response to the ever changing environment and
requirements. Industries like software development and information technology are among the first to embrace
Agile. This article outlines what makes Agile distinct from traditional project management approaches and how to
implement Agile principles in projects. Knowing these would prepare you well for the PMI-ACP® journey.
1. Users Involvement
2. Team Empowerment
3. Fixed Time Box
4. Requirements At a High Level
5. Incremental Project Releases
6. Frequent Delivery
7. Finish Tasks One by One
8. Pareto Principle
9. Testing – Early and Frequent
10. Teamwork
1. Users Involvement
In Agile projects, users are actively involved in the project throughout itself development cycle. Inputs and
feedback from the users are sought frequently to better understand the requirements of the users as the
project evolves and circumstances change. This is among the most important principles of Agile.
Reduces the reliance of detailed requirements documentation at the initiating stage of the project and thus
eliminating the hassles of having to update the requirements documentation in details when circumstances
change
Allows the flexibility in adding / changing requirements fast and easily
Better understanding of users requirements as the project grows and evolves with continual user input
Detailed project status reports are not required as the team and users work collaboratively, the
development progress is transparent to all parties. Users will be able to understand how the end product
will look like and whether all their needs are fulfilled as the project progresses
Users can help the Agile team to understand priorities of tasks and requirements
Users become part of the project team and they are more likely to embrace the project outcome
The Agile team and users work towards the same goal and share the responsibilities to make the project a
success
2. Team Empowerment
Self-sufficient – when forming the team, include all the team members necessary to perform all the
required tasks and make decisions in a timely manner without any need to consult people outside. The
users or the user representatives are integral part of the team.
Collaborative – every member of the team works collaboratively to achieve the project goal as they are all
entrusted with the authority to make decisions on the project. The success or failure of the project lies in
whether everyone has contributed their best.
Responsible – since the team is entrusted with taking care of the project, the team as a whole feel
responsible for the scope of the project as well as the ultimate success of the final product, not individuals
(e.g. functional managers or the CEO) outside of the team. Every member will perform their best to achieve
overall success.
Unlike traditional project management processes in which the project managers would try to collect all
the requirements from the very beginning and formulate a all-encompassing project schedule based on
the available resources and the interdependencies of the project tasks, Agile does not make the
assumption that requirements are clearly know at the start of the project. Agile embraces changes in
requirements as a fact in the project life and believes that having a working software for the end users /
customers to play with would help them to better understand their needs.
Therefore, Agile project teams work within a fixed time box. Tasks are assigned priorities with an
estimated number of man-days. At the beginning of each “time box”, the team choose from among the
list of top priority tasks a number of tasks to be finished by the end of the time box and work accordingly
to give a working product at the end.
In normal projects, once an element of the “Triple Constraints” (i.e. time, cost and scope, aka “iron
triangle”) is changed, the other two elements must also be changed in order to maintain the quality of
the outcome. In Agile projects, only the “scope” from the triple constraints would be adjusted while the
time and cost would be kept constant.
At a high level
Requirements are collected at a high level, just enough to give an idea of the required product for budget
estimation purposes.
Requirements are documented in the form of User Stories (showing how the users interact with the
product) rather than detailed specifications.
On a just-in-time basis
Since requirements may change along the progress of the project, requirements are gathered only when
necessary for carrying out the tasks right away.
Not to collect requirements for tasks several weeks away or more
Requirements are usually captured using visual methods (e.g. diagrams and storyboards) for better understanding
across the team. Storyboards shows how the users interact with the product with hand sketches, wireframes or
annotated screenshots.
“Incremental releases” means building on a previous release of the product / outcome. With incremental
releases, not all the requirements of the users are to be met in a single release, only the top priority requirements
as determined by the team and users. But with releases upon releases, all the requirements will be met
ultimately.
6. Frequent Delivery
Make plans to enable the time between each incremental release to be short enough so that you can:
realize value through early value delivery to reduce risks and attain stakeholder satisfaction (e.g. to gain
organizational support)
keep the momentum going by always focusing on the next shippable product
get timely feedback from users / customers which will be gathered to adjust the project direction
let users know the progress by a workable product release
create competitive advantage as new features can be introduced real quick
Frequent delivery is especially suited for web-hosted services as there is little overhead for re-installation,
upgrade or manage. The delivery schedule would range from a week to around 30 days for most Agile
projects.
8. Pareto Principle
The Pareto Principle is also known as the 80/20 rule. It is a statistical principle that holds true for many
things have a similar 80/20 distribution.
In Agile development projects, the Pareto Principle applies to the fact that 80% of all development effort
should be spent on the top 20% of the features that the customer actually ends up needing.
Need to identify the top 20% of features that customers actually need and use most frequently.
Agile Methodologies
Remembering roles as well as core concepts for the following Agile methodologies are required to pass the PMI-
ACP® exam:
XP (eXtreme Programming)
Scrum
LSD (Lean Software Development)
Crystal Family
ASD (Adaptive Software Development)
DSDM (Dynamic Systems Development Method) Atern
FDD (Feature Driven Development)
Kanban
XP (eXtreme Programming)
XP (eXtreme Programming) is currently one of the most popular Agile methods. XP is a disciplined approach to
delivering high-quality software quickly and continuously at very short intervals (typically every 1-3 week).
XP promotes responsiveness to changes, higher customer involvement, rapid feedback loops, continuous testing,
continuous planning and close teamwork. The name suggests that the beneficial elements of traditional
programming practices are taken to the extreme.
XP is based on 4 values and 12 supporting practices. The 4 values are: simplicity, communication, feedback,
and courage. The 12 supporting practices are: Planning Game, Small Releases, Customer Acceptance Tests, Simple
Design, Pair Programming, Test-Driven Development, Refactoring, Continuous Integration, Collective Code
Ownership, Coding Standards, Metaphor and Sustainable Pace.
Scrum
Scrum is considered a lightweight management framework suitable for managing iterative and incremental
projects (including product development projects other than software). Scrum has grown rapidly in the past few
years and is fast becoming one of the most popular Agile methods, especially among the software industry. Scrum
is renowned for its simplicity, proven success, productivity, and its flexibility to be used as a framework for various
engineering practices promoted by other Agile methodologies, i.e. Scrum Masters are allowed to select the most
suitable Agile practices to be brought under the Scrum framework. Scrum adopts an empirical approach by
accepting problems cannot be fully understood at the beginning and must be continuously attended to along the
project.
LSD (Lean Software Development)
Lean Software Development is an iterative methodology developed from the processes and practices in
Lean Enterprise movement (for the production industry). Lean Software Development focuses the team on
delivering value to the customers by focusing on the “Value Stream“. Core Lean principles include: Eliminating
Waste, Amplifying Learning, Deciding as Late as Possible, Delivering as Fast as Possible, Empowering the Team,
Building Integrity In, and Seeing the Whole. The value stream approach emphasizes on the speed and efficiency of
development workflow, and relies on rapid and reliable feedback between programmers and customers. Lean
methods try to eliminate waste by prioritizing and working on “truly” valuable features of a system and delivering
values rapidly in small batches.
Crystal Family
The Crystal methodology is one of the most lightweight, adaptable approaches to software development.
Crystal is a family of methodologies including Crystal Clear, Crystal Yellow, Crystal Orange, etc. The different
methodologies in the Crystal family are differentiated by factors like team size, system criticality and project
priorities. The Crystal family allows a tailored set of policies, practices and processes for individual projects in order
to suit the characteristics of the projects. Crystal methodologies emphases on the interaction between people and
processes.
Kanban
Kanban is a scheduling system used in Lean and JIT (Just-in-time) production. When applied to software
development, kanban is a “pull-based” planning and execution method. For software development teams, “cards”
representing tasks to be done are kept on a Kanban Board which is organized into columns and rows. The columns
represent the status, i.e. from initial planning, work-in-process through customer acceptance. The status can be
tailored to find the project context. The rows contain the tasks to be performed. Since Kanban focuses on
maximizing throughput, a limit would be set on the maximum tasks in the Work-in-Process (WIP) column to avoid
bottlenecks. Queues or inventories of work in any state are seen as waste. The WIP limit allows the team to focus
on optimizing the flow of work items through the work processes, thereby achieving process optimization at a
sustainable pace.
Extreme Programming (XP)
[PMI-ACP® Exam Study Notes] Extreme Programming (XP) is one of the most popular Agile model for
software development good practices (Unlike Scrum which focuses of project management on prioritizing tasks
and getting feedback). Extreme Programming is based on five core values taken to the extreme: simplicity,
communication, feedback, courage and respect. This post is about the guidance practices, roles and responsibilities,
events, etc. of XP.
Simplicity – reduce wastes and extra features, find the simplest way to achieve the goals
Communication – make sure everyone involved get clear communication
Feedback – get feedback early and frequently, prefer failing fast
Courage – have confidence to make changes and share progresses (e.g. thru pair programming, unit tests
and automated builds)
Respect – respect other teammates, everyone is accountable for success of the project
XP Events
Scrum Artifacts
Product backlog – an prioritized list of requirements of the project (often in the form functions, features,
fixes and quality attributes [i.e. non-functional requirements], etc.). To be updated by the Product Owner.
Higher priority requirements are more detailed in descriptions and estimates.
Grooming – add more details to and possibly re-order the backlog by both the team and the product
owner
Sprint backlog – product backlog items selected for a particular sprint with an elaborated plan on how to
achieve the sprint goal. To be updated by the Development Team only.
Definition of Done – describe the agreed definition of when the work is considered done by all
FDD makes use of Cumulative Flow Diagrams (a chart showing what are in progress and what have been
completed to visualize and track the progress) and Parking Lot Diagrams (a one-page summary of project
progress) as one of its tools.
Dynamic Systems Development Method (DSDM) Agile Model
The Dynamic Systems Development Method (DSDM) project lifecycle is very detailed and broad, covering
business case development / feasibility study to post project tasks.
Pre-project
Feasibility / Business
Functional Model Iteration
Design & Build Iteration
Implementation
Post-project
DSDM allows the use of certain “filters” to help determining which processes are needed or not for a
particular project nature / scope.
Colocation
the ideal co-located team should be all in the same room with all barriers (e.g. partitions) removed – to
facilitate communication and collaboration while minimize distraction
team members as well as the customer should sit around a square/circular table facing each other
members can hear and see each other to facilitate communication
colocation can avoid the formation of silos (expert groups focusing on single aspects of the project,
communication across different groups is very challenging)
make use of information radiators (e.g. charts/backlog lists/user stories posted on the walls) and
whiteboards
if physical colocation is not feasible, virtual colocation by making use of instant messengers/video
conferencing software is highly encouraged
Agile Tooling
use of Agile tooling (a class of tools, technologies and practices) should be made to help building bonding
and sense of belonging by encouraging communication, participation and information sharing
o high-tech Agile tooling: instant messengers, video conferencing, online Agile project management
tools
o low-tech Agile tooling: recreational space, daily stand-up meetings, team building activities
Empowered Team
the Agile team is given the power to self-direct and self-organize by making and implementing
decisions, including: work priority, time frames, etc.
the team may optionally given the power to add value to the customer and choose team members
an important aspect of the empowered team is to have the customer/product owner co-locating with the
team
“the best person to make the decision is the one whose hands are actually doing the work”
factors needed: organizational buy-in, alignment with corporate goals, shared vision, clear
communication, customer involvement and team accountability
Ground Rules
ground rules are unwritten rules about the expectation of the project team members
including: work time, culture, language, rituals, etc.