Professional Documents
Culture Documents
being applied to all types of projects from developing different types of products like
cars all the way to advertise and projects.
So it's not something that's just exclusively used in software development, although
it's used a lot in software development.
First of all, Agile is not really a methodology by itself.
The word agile is a term that's used to refer to different types of iterative
development.
Agile is about building things in small iterations or increments versus building things
as a whole.
In Agile, it's about building things in smaller increments and then getting feedback on
each increment, encouraging more feedback, encouraging more stakeholders,
engagement or participation.
Scrum is the most common agile method that is applied in this particular course, or
it's a term that you use a lot when talking about Agile.
So Agile is an umbrella term that includes Scrum, but there are others Scrum.
We'll talk about Extreme Programming or XP.
Agile Vs Traditional PM
Traditional project management can be applied building a 20 storey skyscraper or 20
storey building.
In the project,
Gather all the requirements
how many rooms they're looking for
how big the building has to be
how many square footage
how many partitions are going to be in each apartment or office space
1. Gather all the requirements that is needed.
2. Get the plan
3. Plan how to build this large building.
4. Execute this project and you're going to after you finish planning.
5. Planning: Planning is for the entire building.
6. Building the entire structure from that plan.
If the planning took six months of planning, maybe you had to get permits, approval
for another three or four months.
It took one year to plan with permits
Build a structure
Go in and execute this project
Start digging up the ground and putting down the foundations and putting all the
beams and building the whole structure.
So in this project, you have a scenario where you have 1year of planning, then 3years
to build this entire structure.
When it's all done, then you can close out the project and it's finished.
So that project took about four years, maybe even five years that approvals, permits,
wait times and so on.
So if you think about the value proposition, so the value was the building is getting
done, but the stakeholders, the customers or whoever funded that project sponsors had
to fund that project for five years with no upfront value or no value throughout the
five years.
Agile Benefits
1. Customer Involvement
2. Greate Customer interaction with all stakeholders
3. Constant feedback is required to stay current and successful
4. Greater Value up front
5. Change is welcomed by all stakeholders.
Customer Involvement
The first thing up is customer involvement.
Remember how Agile works.
It's really about building small increments, and every time you finish building
those increments, you're always getting customers feedback.
You don't build a product in a hole.
You build them in smaller increments.
Eg. if I have to build you a car, if I have to build your car, gather all your
requirements and what type of car you like and how big you want it, how many
doors you want, how wide defenders has to be, how the hood has to look.
I build this whole car, then I give you the whole car.
I don't like the way that car looks or it's too long, it's not wide enough.
I'm going to talk to you every week as I build a little component of that car.
So you're always involved in this process, and that's a good thing because now I
can always get your feedback.
Greate Customer interaction with all stakeholders
The next thing is not only will it is it interaction with just the customers, but
you're also talking to the product, the product owner you're going to be talking
with senior management.
So it's everybody interaction with all the stakeholders on the project.
Agile Manifesto
Created in 2000.
Includes 4values and 12 guiding principles.
Any type of framework or any type of methodology, there's got to be some kind of
driving force or benefit that drives the end result or the way something is done.
4 values are things that we're going to always keep in our heads, things to know in
order to proceed in Agile.
The guiding principles are more specific steps that we should really be implementing
as we follow Agile.
Exam will test four values and 12 principles in depth.
Brief look at the four values before getting in depth into all of them.
https://agilemanifesto.org/
software=> Agile => manifesto
Not only for software, applicable for all the projects.
Before I get into in-depth analysis of each of them.
Individuals and interactions
Individuals and interactions over processes and tools.
Project means about people.
Projects is not about Microsoft Project.
We want people to talk.
We want people to interact.
People build things, not software.
A caterpillar is a very big machine, but it doesn't do anything.
It takes people to build a building.
Caterpillars by themselves can't build buildings.
Microsoft Project doesn't do a project for you.
You're the one that has to do that particular project.
Working Software
The second is working software over comprehensive documentation.
Now, what is the main objective of your project, the end product?
The software has to be functioning well.
I don't want you to create complex software and then give me a big binder word of
documents in order to tell me how to use it.
If the software works, it should be easy to work, easy to operate.
We do need comprehensive documentation, but we want work in software.
More customer collaboration over contract negotiation.
What happens when you have a contract?
If you have a contract that has these particular points in it or just scope of work,
you're less likely to have leeway or be willing to accept change.
Customer Collaboration
Customer collaboration is a willingness to change.
It's a willingness to work with customers, not just hold them to a contract.
Responding to change
Fourth one is responding to change or we're following a plan.
We have to be dynamic.
We have to be willing to modify as we go along.
We do value the items on the right processes and tools are going to be important on
any project.
Individuals and Interactions over processes and tools
It is very important because need to ensure that people talk, people
interact, and there's no silo activity going on.
In other words, no one is working by themselves and we want everybody to be
together.
So while processes and tools, you need them.
Projects are done by people, not tools.
Microsoft Project doesn't do your project for you.
You need to do your project.
It's just a tool that we use problems.
Every project has problems.
Project managers are as scrum masters.
The actual project work, we don't code software or paintballs.
We interact with people and we talk to people and we can make sure the work gets
done.
Problems occurs between people, not between tools.
So problems occurs because of people in the problems will get solved by people, not
processes.
Projects is about people.
You think about projects, you think about people.
People work best when they can interact.
You need to break down the walls that lies in between people to get them to talk, let
them interact.
The team, talking to the customers, you talking to your team, you talking to your
customers don't have cubicles with walls, have desk space where everybody can see
each other, have meetings.
That involves all of the participants on the project and the customers.
Working Software Over Comprehensive Documentation
Next principle is work and software over comprehensive documentation.
On an Agile project, you're going to focus on delivering value.
Value comes in the form of that product that you're given out at the end, not a ton of
paperwork.
So you want to make sure that the project is focused on giving the customer what they
need, not just giving them something, what they may figure out how to use, and then
give them a whole lot of paperwork to figure it out themselves.
Agile document is known to be barely sufficient, so barely sufficient is you don't want
to mountain a book of how to use this particular product.
You want something just good enough and small enough that tells our customers how
to use that particular product.
It's known to be done just in time, so it gets there the correct time.
And just because now we have to provide documentation, you just can't give people a
software with no documentation.
So even though our software is easy to use, it meets our customer's requirements.
Delivering software that does what it should should come first before creating any
documents.
The main objective in Agile is to finish that product.
So you finish making the product.
We can create the simple sufficient documentation for it.
Agile simplifies the administrative paperwork related to time, cost and scope control.
We want to reduce the amount of paperwork we have because we want the team focus
on delivering the things that matters to your customers, which is going to be that
product, that service your reengineer or that software that you're creating.
Customer Collaboration over Contract Negotiation
One of the things you should do in Agile as you're working on an Agile project, or
talking to your customers is you want to be flexible.
You want to be accommodating.
You don't want to be fixed.
Eg. You had to paint it white. But you're only going to keep saying, can you change it
to maybe off-white? So you don't want to be uncooperative.
You want to make sure that you're welcome into change.
You don't want to be able to stay to that contract.
So you want to be able to manage that change.
Don't suppress it.
You want to have a shared definition of done.
A shared definition of done is really important.
The definition is done is basically me and you understand what the actual finished
product will look like.
You want me to make something for you?
Well, in that situation, we should have a shared understanding of what that end end
result will look like.
That way I know what I'm building to.
In the world of software development, we create intangible products.
It's hard to show what it's going to look like if nobody knows what it's going to look
like.
So we have to find ways of how we could come up with what done looks like, what
this product will look like.
The other thing is to have a trusting relationship because we are so accommodating,
because we we want to incorporate changes.
We want to be flexible.
We have to trust each other by trusting you and you trust in me.
Then we can better work together.
And I could be very flexible.
You could be very flexible to ensure that the work gets done correctly.
Responding to change over following a plan
One of the things I keep talking about is changes, responded to change over following
our plan, our last value.
In this particular one, you want to spend effort and energy responding to changes.
One of the things we mentioned already is don't suppress changes in order to be
flexible and accommodating.
You have to be able to respond to changes over following a plan.
If you suppress changes, then you're always following a plan.
Eg. I want to add this into your software. I want you to change this. And you're like,
that's not my plan. I can't do that.
Well, in that way, you're not flexible, you're not accommodating, and you're not
willing to respond to these changes. You always want it just to stick to your plan.
You have to ask why do customers asks for changes generally is because they feel
that what you're doing currently may not have much value for them.
Think about the last time you asked a project manager for a particular change and that
project manager whether they were flexible and accommodating or whether they were
willing to just to accept it or not. Or maybe they said no because they had to follow
this plan.
Why did you ask for that change?
Maybe because you felt that that was important to you.
And if that change was there, it will make it easier to to work with that software.
Or maybe that software would produce more better work for you.
So it'll basically give you more value.
When people generally asks for changes is probably because they feel that those
changes will lead to more value.
So we should spend more energy, more effort responding to those changes and be
accommodating to them.
Now, one of the things about software projects is they do have a high rate of change
and they have a lot of requests for change.
And that's because it's such an intangible thing.
There's a difference between making a software and building a building.
For example, you can't design a 20 storey building and then decide to add five stories
to it.
That would require change and everything.
But on a piece of software in a report added a new log in way.
Added a new formula on a on a report or a function or something like that may not be
that much more effort or requires changing the whole software most of the time
anyhow.
So we want to be able to respond to change or we're following just the plan.
Agile Guiding Principles
There are 3 principles.
1. Highest priority is to satisfy the customer through early and continuous delivery of
valuable software.
We want to if there's one of the main core concepts of Agile is you want to be able to
push out your software quickly in smaller increments.
Don't let your customer wait a very long time to get that particular software.
2. Welcome change in requirements.
Even late in development, agile processes harnesses change for the customer's
competitive advantage.
We keep mentioning in the actual values that changes.
We want to be able to welcome them.
We want to be flexible and accommodating.
So guiding principle to, hey, we want to be able to welcome change and requirements.
3. Deliver working software frequently from a couple of weeks to a couple of months
with a preference to the shorter time scale.
Always remember, the faster we deliver work in software, the faster they see value.
The longer we deliver software, the longer it takes them to see value.
4. Business people and developers must work together daily throughout the project.
One of the things we do is a daily stand up meeting, and in the daily standup meeting
you have the product owner, you have the Scrum Master, the Agile project manager,
you'll have the project team or the Agile project team working together.
5. Build projects around motivated individuals.
Give them the environment and support their need and then trust them to get the job
done.
If there's one thing we must do as an agile project manager is we must perform what
is known.
And a big topic for your exam is servant leadership.
In servant leadership, we're not there to micromanage them.
We're not there to ensure they follow a process remembered as a plan.
There's a value that we shouldn't be doing that.
What we want to do is we want to motivate the team, trust the team, and give them the
support and the environment they need to get the work done.
6. To get the work done, give them the support they need the most efficient and effective
method of conveying information to and within a development team is face to face
conversation.
This is important for the exam.
Low tech, high touch.
We want low tech.
We want the lowest tech you can go is me and you talking with a face to face
conversation.
High tech would be using some form of virtualized software.
Maybe we can't see each other.
Low tech, high touch.
Agile promotes having a big white wall with markers and whatnot versus a digital
screen.
So we don't want digital technology.
It seems that we're going backwards in time here, but that's the best way to get it done.
Because it promotes more collaboration.
7. working software is the primary means of measuring progress.
Working software is how the customer measures your progress.
You can go to your customers and say, I'm 60% done now.
If a developer that's working on a project that I'm not involved with comes and tells
me they're 60% done, I'll say,I'm not sure if that's good or bad.
I'm not sure how long more you got.
I'm not sure what he's getting done.
But if I give my users or my customers working software, they'll know that something
is getting done.
They'll measure my progress against it.
8. Agile processes promote sustainable development.
The sponsors, developers and users should be able to maintain a constant pace.
One of the things we'll learn coming up later in this is that you want to have a
predictable, sustainable way of doing work.
You want to always be able because when the team looks at the list of work, the
product backlog, and they say, okay, these are all the work we can get done in this
next coming sprint.
The team should be able to predict that.
The team should be able to know well in the next four weeks worth of work we can
get these things done.
If the pace is not sustainable, then they wouldn't.
They would never be sure how to estimate how much work they can get done in a
particular sprint.
9. Continuous attention to technical excellence and good design enhances agility no
matter what.
We must have good technical excellence.
We must have good design.
We must continuously pay attention to these types of things.
10. Simplicity.
The art of maximizing the amount of work done is essential.
We have to ensure that we minimize complexity.
We want to maximise simple things, but there's something about simplicity.
Sometimes finding the simplest way is the hardest way.
That is the reason why you want to make sure that you find simple things.
Simple methods makes people want to follow it.
Simple methods is easier to follow.
Simple message encourages people to follow it.
Complexity reduces all of that.
11. Best architects, architectures, requirements and designs emerged from self-organizing
team.
One of the core concepts of Agile is a self-organizing, self-directed team.
Notice self-organizing, self-directed teams.
This is a team that basically manages themselves.
You're a servant leader.
Let the team come up with the design of the software.
Let the team come up with the architectures that is needed to build this product.
We are there to support, not to micromanage them.
12. At regular intervals, the team reflects on how to become more effective than toons
and adjust its behavior accordingly.
So at regular intervals, we're going to want to make sure that we as project managers
look back at have the team look back at what they're doing.
We're going to work with the team as project managers.
We're going to work with them, and we're going to make sure that, they look back and
see how well they did in that sprint, how well they did in the previous sprint.
You can say that you want to change the next change your methods to the next sprint.
At the end of every sprint, you're going to do this retrospectives.
And in the retrospectives you're going to see what you did right, what you did wrong.
Do more of do less of so at regular intervals every month.
You should be improving yourself, improving the process so regular intervals could
be a month.
Maybe you do this even every two weeks.
These are the guiding principles.
I would recommend that you review them a couple of times before moving on with
the rest of the class, because these guiding principles will now become they will
become the way we will conduct the rest of this class.
You'll hear me repeat them over and over as I'm talking about other topics in the class,
because this really guides the way to do Agile.
Agile Methods
Agile is an umbrella term that basically includes all the other incremental or iterative
development.
There are over 12 agile methodologies.
But the most popular methods are Scrum and Extreme Programming
1. Scrum
Scrum, which is very popular today. Popular certification called the CSM from Scrum
Alliance
Sprint
Scrum Master
2. Extreme Programming
Extreme Programming and Scrum is the two most popular now.
Iteration
Coach
Scrum and extreme are the way the process is done is very similar and they carry
somewhat of different terminology for your exam.
For your exam they sometimes interchange the terms between scrum and extreme.
So following are the entire Agile process using the terminologies of Scrum and
Extreme so you can start to interchange the terms.
When programmers go to do the development work of the actual project, they call it a
Sprint in Scrum, and they call it an iteration for EP
For your exam, you should just know them as both terms.
In Scrum, you are as a Scrum Master.
In XP, you are as a Coach for your exam.
It's actually called an Agile project manager.
3. Kaban Development
All Agile projects should have is Kanban.
Kanban development can mean sign board,
Pull Method
4. Lean Software Development.
Methodology of Lean comes in manufacturing, but that whole concept of to reduce
waste and its main methods within it.
We're going to take a look at that because we want to apply some of that
manufacturing method into lean into software development and then now apply that
into Agile.
Agile Process
In order to pass this exam, you must know the agile process
within that process has a lot of terms.
I recommend for you guys to watch this video at least twice before moving on.
Agile Terms
Product Owner The designated person that represents the customer on the
project.
Agile Project Manager/ They manage the Agile project.
Scrum Master
Product Backlog Project requirements from the stakeholders
Sprint Planning Meeting Meeting done by the agile team to determine what features will
be done in the next sprint
Sprint Backlog Work the team selects to get done in the next sprint
Sprint a short iteration where the project teams work to complete the
work in the sprint backlog.[1-4weeks typical]
Daily Stand up meeting a quick meeting each day to discuss project status, led by the
Scrum Master, usually 15minutes
Sprint Review An inspection done at the end of the sprint by the customers
Retrospective Meeting done to determine what went wrong during the sprint
and what when right. Lesson learned for the sprint.
Partial Completed Product Customers demo the product and provides feedback. This
feedback adjust the next sprint priorities.
Release Several sprints worth of work directed to operations for
possible rollout and testing
Let's take a look at how these terms fit into the process.
To make an accounting software
manage you're going to manage an Agile project where you want to make an
accounting software for the accounting department
use an Excel sheet and they don't have a good comprehensive software.
Product owner represents the customers.
All the requirements of what they want into something called a product backlog.
This product backlog has all the features that they want.
Eg.what do you want in accounting software?
you need an accounts receivable system that's to do the invoicing and the billing.
You need an accounts payable so you could pay bills and enter bills.
You want a system to track your checking accounts and your savings accounts and
reconcile them.
You want a system to print reports. So all the features that they can think about,
they're going to add into the product backlog.
Let's say they came up with 20 features.
Enter an invoice,invoices, Receive payments, Enter bills, Pay bills, Produce profit and
loss statements.
What are 20 different features?
That's the product backlog.
Agile project team sits down and something they call a so the product owner, the
customer,Puts all the 20 features into that product backlog, the sprint planning
meeting.
This is where the team sits down and determines how much of those products they
can get done in the next sprint.
A sprint is one is really defined as 1 to 4 weeks worth of work.
Eg. It's 1 to 4 weeks worth of work now.
Realistically, 20 features in a software you probably can't get much done in 1 to 4
weeks.
So the team sits down and they start to determine what they can get done now.
This brings me to another important topic.
The product backlog is prioritized by value.
It's prioritized by what the customer feels would be the most valuable features that
they like.
Maybe accounts receivable is the most valuable because that's how we make money.
Entering an invoice and paying an invoice is the most valuable thing they would like
to have first.
So in that product backlog, it's not just 20 features listed, it's 20 features listed by
value.
For your exam, remember this the product owner is the person that prioritizes
the product backlog.
So the product owner prioritizes the product backlog.
The sprint planning meeting is where the team looks at the product backlog and says,
well, based on our previous sprint or iteration, we could do starting from the top.
Not from the bottom, from the top.
They're looking at all all the features.
Eg. feature one is big, feature two is not so big.
You know what we could do features one and two.
We can't do any more in the next sprint.
Eg. Bob could come and say, Well, I worked on designing the table, or I worked on
completing the table for the for the customers.
Today, I'm going to be working on setting up all the data fields in the table and
making sure the fields have the right amount of characters.
Some of the problems I have is I'm not too sure how much character there should be
allowed in each field.
So that's Bob's work.
Mary comes around, Mary says, Well, I'm designing the form for the way to take the
customer's layout with look.
So yesterday I laid out the form.
Today I'm drawing all the button designs.
The only problem heaven is where I should be put in the fields.
They're going around the room and everyone, everyone is going to be telling basically
these or should be answering these three questions.
This method is useful for only small team, like 10 people.
Remember, agile teams are generally small.
Retrospect is this is a meeting done to determine what went wrong during the sprint
and what went right?
Basically it's lesson learnt.
After multiple sprints, you may have a partially completed work customers demoted
product provide feedback.
This feedback adjusts as the next sprint.
And a release is several sprints worth of work directed to operations for possible
rollout and testing.
After the Sprint Review meeting, the customers leave a term we really should know
and this is the retrospective and the terms retrospectives are done in the sprints done
in the customer leaves when it's a lesson learned is when the team member sits down
and says, Well, we did this right, we did this wrong.
Now we can give the customers that partial, partial part of our accounting system so
they can start receiving payments.
So releases are basically combinations of sprint.
Summary
The customers, they want a particular product.
The customer is the product owner sits down and they create a list of features.
And particularly there were 20 features.
This is what they want.
The sprint planning meeting happens.
The team says, Well, we can only do two of those and remember to start from the top.
So they're always doing number one.
And number two, that means that that sprint is always going to be producing the most
valuable feature
first.
Remember, the product backlog is prioritized based on value by the.
That's right.
The product owner is the one that prioritizes that.
So the team sits down, they said, well, we're going to do two things.
We're going to only do number one or number two.
Then they execute the sprint.
All right?
They execute the sprint.
They start doing the work.
They're doing the work every single day.
They do.
They come in.
They're doing that daily stand up meeting, the Daily Standard meeting.
They answer three questions.
What we did yesterday, what are we going to do tomorrow?
And is there any impediments or problems that we have that anybody can fix, that anybody
can help me
fix, I should say?
So every day they're doing that, they're doing the Daily Standard meeting.
Sprint's done.
The partial product is finished in that sprint.
They do this review meeting.
So in this review meeting, they're basically saying, okay, tell bring in the customers, OC
customers
or product owner, tell me what you like, tell what you don't like.
Give me some feedback on what we did so far, so we get that feedback from them.
Then come the retrospective.
So after the customers leave, the sprint retrospectives takes place.
So this is when the team sits down to something similar and hey, we did this right, we did this
wrong.
We could do more of this, we could do less of this.
But they're going to take those lessons, learned it.
They're going to incorporate it into the next sprint.
Now, to have that potentially skippable product or maybe they don't because after they're
done with
this, what the team does is the team goes back to this product backlog right here.
All right.
It should be an arrow.
They're actually not a very good arrow.
Okay.
So they go back to the product backlog.
Now, remember remember this for a second, there were 20 things they did, too.
So the product backlog is not 20.
You're thinking, well, it's 18.
No, it's not actually 18.
Yeah, it was 20.
They did two, but it's not 18.
You know how big it is now?
It's 22.
How well.
Because while the team is doing those sprints.
The product owner or customers, they added for things more into it.
You remember this process of Agile allows changes the product owner found for new things
they would
like.
They added it in their was 18.
Former makes 22 and they reprioritize it.
Not a team goes back and they're like, hmm, 22 things.
Okay, that's okay.
They're going to start from the top again, right?
They start doing the sprint planning meeting.
They're like, okay, well, this 22 things, but all right, let's take a look at the top.
What can we do maybe in the next sprint?
They can do four things because they did all the big ones already.
Okay.
So they keep doing this over and over and over until the product or until all the features are
almost
done.
Now I say the word almost because remember in inverted triangle, one of the things that
people have
a hard time.
I have a hard time working with an Agile.
I want to do of course things that people ask me.
Quite common is when is the Agile project done?
Because if they can just keep adding to the product backlog, add into the product backlog,
then it'll
maybe never get done.
But the answer is the Agile project is done when you've run out of time and money.
Maybe after one year of doing the Agile, maybe you have the one year of doing this and
spend an X amount
of dollars.
The things that are getting done later on in the project is not represented so much value.
So then you just cut it off.
There's no more value really to be gained out of this.
All right.
I want you to watch this again.
I want you to know all the terms here, I should say here.
I want you to review this process one more time, make sure you really understand it, because
understanding
this process will make the next series of videos are actually make this entire course easy for
you.
Scrum
The most popular Agile method is Scrum.
Scrum is a set of team guidance, practice roles, events, artifacts and rules that we
should be following.
It is based on the three pillars: transparency, inspections and adaptation.
Transparency
What are the things about Sprint that's really important?
Is that visibility to those responsible for the outcome?
Everything should be visible.
Customers can see what we're doing.
We welcome feedback from them.
Nothing is hidden.
Inspection(Checking)
Timely checks on how well a project is progressing towards goals.
Looks for any type of problematic variance from the goals or differences from these
goals.
So we do a lot of inspections in Scrum.
You do an inspection every day.
Every day you're talking to each other.
One of the things we look at is like peer program and inspecting the work as your
code in it.
You also have a customer inspection right at the end of the sprint.
So lots of inspection where it's daily.
When we're conducting those standard, daily, standard meetings or at the end of the
sprint, when we're doing the Sprint Review meetings, adaptation, adjusting a process
to minimize further issues.
If inspection shows a problem or undesirable trend, we have to be willing to adapt and
change.
If the process isn't working, it's leading to more errors or the way where we are
gathering these requirements are the way we are program and the system is not
working.
We should be willing to change that.
Product owner
Along with Scrum, you have some roles that we should be familiar with.
The product owner owns the product vision.
They define the features, then decides on market release dates and content.
They're the ones that define the features, the defining the content of the product.
Product owner = customer
They're responsible for the market success because they're the one to define the
features.
One of the main things for your exam is they prioritize those features to market value
for your exam for the for the 100th time.
Remember:
Who prioritize the product backlog?
Product owner
They can change features and priorities in every sprint.
Scrum Master
Scrum Master is you.
You're responsible for facilitating the process.
o So, we are facilitators.
We are not actual managers. We are Scrum masters.
A Manager is more like telling people how to do something.
We are facilitating the scrum process.
Servant leadership
Servant leadership = we = Scrum Master
That's who we are.
We are servant leader.
We focuses the team and protects them from external interruptions.
Keep the team on as we facilitate the process.
Keep the team on following those specific roles, those specific tasks.
Keep them in the path of success.
Look for ways to enhance productivity.
Try to keep them and try to make them more productive.
Assistant product o owners and leverage in Scrum.
Exam Question: what happens if the team doesn't know Scrum.
Then the answer is to teach them Scrum.
You will become an agile advocate.
You're going to love Agile so much.
You're going to want to teach it to everybody, just like I like teaching it to you.
Scrum Activities
Scrum Activities has some very particular activities that we should know.
Sprint planning meeting
For output of the Sprint backlog, the sprint itself that contains the daily standard
meeting.
At the end of the sprint, you have the Sprint Review meeting and then finally the
Sprint retrospective.
Sprint planning meeting is to determine what work will be done in that sprint
and how the work would be achieved.
In the sprint planning meeting, the team sits down and they're saying, well, in the
sprint.
This is what we can get done and this is how we're going to do it.
The team predicts what can be delivered based on estimates, project capacity and past
performance to define the Sprint goal.
So the team is based on previous sprints, this is how will we work, this is
how much points worth of work.
And we'll talk about how those end points to features in another section.
But this is how much points word of work we can get done from the current product
backlog based on the previous sprints we did.
The development team then determines how this functionality will be built and how
the team will organize to deliver the Sprint goal.
Sprint backlog is the record of work to get done in the next sprint.
So after this meeting is finished, now you have the sprint backlog.
Now the sprint starts itself now.
Time Box
Sprint is a time box.
A box does not have unlimited space.
It's a box because it contains things.
So the time box is basically a limited time.
So Sprint is a time box iteration of 1 to 4 weeks to build a potential release of a
product, not release, but potentially release it all.
Remember, you may not in four weeks may not be enough time to complete work that
is releasable.
Each sprint includes a sprint review meeting, a sprint planning meeting, the daily
scrum.
Daily scrum is the daily standard meeting.
It means the actual work than programming a sprint review meeting that comes at the
end and the Sprint retrospective all the way at the end after review minute during the
sprint and something you should know for your exam during the sprint.
No changes are made that would affect the sprint.
If the team says We're going to do these two features, you should not be changing
those features during the sprint.
No changes are made to that because it will throw off the velocity because they
already planned this work.
Changes can be added into the product backlog that the team will look at after
the sprint.
Team Members
Another thing is the development team members are kept the same throughout the
sprint.
Don't change or try not to change team members in a sprint.
If you do that, it kills the velocity on the sprint.
So we know now the rate velocity on points.
We know we could do 300 points worth of work based on the six of us in this room.
But if I replace Bob with Mary, we may do less work or we may even do more work.
Maybe I replace Jane with Mary and now Mary comes in and she could do more
work.
Maybe she can do as much work as Jane could.
You predicted that you could have done 300 points now, but that was with your old
team member.
You bring a new one in and now you're down a 200 points.
So that's drastically affecting the sprint.
Don't change team members during a sprint tip for your test there.
During the sprint, you've got to do your daily scrum or a daily stand up meeting is
what your exam will call it.
So this is a 15 minute time box.
And again, this work time box activity for the development team to synchronize
activities, create a plan for 24 hours, should be held at the same time and same place
every day.
Now, you don't want to change it up because you want to make sure to have a
standardized place where they do this and it should be done at the same time.
I mentioned this when i was going over the processes.
It's constantly being refined as more work is added, work can be removed, and that's
called grooming the backlog.
The team and the product owner sit down and they groom the product backlog or
groom the backlog.
You remove features that may really add no value, and you move things up in that
ladder, that may be more valuable.
So grooming the backlog is an important topic.
product increment.
This is the part of the product that's done after each sprint, done to get feedback at the
end of every sprint.
The most important thing is getting feedback.
The product owner and the team needs to have some kind of agreement upon what is
the definition of done before the team starts working on a product.
Definition of done
Definition of done is how do I know when I'm finished making this product?
Eg. I want you to make this software for me.
But how do I know I'm actually finished making this software?
Does it have to pass a certain test, like a performance test?
Does it have to look a certain way, visually compelling to you?
Does it have to be able to output a specific function?
It has to be a specific thing that we can come up with that will help define when a
product is done, and that should be done before the team starts working on a product.
They have an end goal.
They know what they're trying to accomplish.
The sprint backlog.
Sprint Backlog
Sprint backlog is the set of items from the product backlog that were selected for the
sprints.
Sprint Log <=set of items from product log that were selected for the sprints
Team sits down in the sprint planing meeting, what we can get done from product
backlog, and create the sprint backlog.
The sprint backlog is accompanied by a plan of how to achieve the sprint.
So it serves as a development team's forecast with a functionality that'll be part of the
sprint.
It is a highly visible view of work being undertaken.
May only be updated by the development team.
It has to be highly visible: low tech, high touch.
It has to be highly visible a nice big whiteboard with a ton of, all the work listed on it.
So every day, we can go and we can see it.
There's a term you should be familiar, you're gonna be familiar with called information
radiators.
When you walk in, this big board with all this work, so people know what they're looking at.
It should only be updated by the development team or the project team,
because they're the one that know how much work can get done.
Extreme Programming
It is a software development centric agile method.
It focuses more on good software development practices.
On the other hand, Scrum, looked at it more project management than it was more
project management level focus on prioritizing work and getting feedback.
So extreme is really about software development but some of the terms and practices
that is in extreme, we will use in Agile.
Extreme programming = XP.
So it has some core values and particularly these five core values:
1. simplicity
2. communications
3. feedback
4. courage
5. respect.
Simplicity
Simplicity is about being able to reduce complexity extra features and waste.
So you don't want complex things.
You don't wanna have extra features
You don't want waste.
You don't want to have things that people don't use.
You wanna find the simplest thing that could possibly work.
When you find something simple, people like it.
People want to do it.
People want to follow it.
Communication
Team members know what is expected of them and what other people are working on.
The daily standup meeting is one of the key communication components in XP.
Feedback
Get impressions of correctness early.
You do them at the end of the iteration,
You do them throughout the iteration as you're doing peer programming or you're
doing your daily standup meetings.
Getting feedback from other team members, getting feedback from your customers is
gonna be highly important.
Another Thing is failing fast allows for faster improvement.
I haven't gotten into this yet, but we want to fail quick.
If a process has to fail, let it fail so you can learn from it.
This allows us to do improvements.
Courage
we want to allow our work to be entirely visible to others.
You wanna be able to have your work be editable.
Your codes in developing software to be completely visible.
You have to have courage for that.
You have to be willing for other people to look at your work, criticize it and make it
better.
Respect
People work together as a team, and everyone is accountable for the success or failure
of the project.
Recognize people work differently and respect those differences.
Sometimes, it contradicts a lot of what you have heard.
It says, everyone is accountable/ responsible.
XP wants the team to function as a unit and because of that, we want everyone to be
held accountable if they're considered a single unit.
This, of course, will take courage also for everyone to be held accountable and for
everyone’s work to be visible.
XP Roles
What are the roles in XP?
XP and Scrum are going to be very similar, so we do have some very similar roles.
Coach
First one is the coach.
In Scrum you're the Scrum Master
In XP, you're the coach.
Will you act as a mentor guide in the process, helping the team stay on track?
You're a facilitator, helping the team become more effective.
You're not going to be a manager and you're not going to tell the team what to do.
Remember the team itself organizing customers.
This is the business representative who provides the requirements, priorities and
drives the business direction to the project priorities and requirements.
That's their main job.
In Scrum => product owner.
programmer => Agile Project Team.
These are the folks who build the product, they write the codes.
In XP => testers.
These are the people that helps the customers define and write the acceptance test for
the user stories.
XP have testers and they work with the customers and because one of the things that
XP pushes is the customer writes the test and then the team helps to come up with
ways of meeting the tests.
if we can pass the customer's test, we did something right.
XP Practices
Some calls planning games or planning activities.
Release Planning
The first one is release planning.
A release is basically a combination of sprints or iteration that's pushed to production
users.
Release = sprint1 + sprint2+ sprint3+… => production users
So we can give out to those production users.
The customers should know what those functionalities are, not the team.
The team may create a way, like the building and accounts receivable module, and
they have a way to input the customers and they can put all the customer's
information.
The team has finished.
It took two sprints to make and give it to the users.
And the users are like, we don't want that because it's not very useful.
We can just enter customers, but we can't do anything with them, so it's not very
useful for them.
So the customers want to be able to make an invoice and to receive the payments.
Not a customer is just telling us what they want in two releases.
That means they're seeing value there.
They don't see much value.
Just enter in a customer.
Customer => want only one release, which is the most value.
Then, developers will estimate how difficult it is to build.
Iteration Plan
Iteration is comparable to sprints.
Iteration Vs Sprint
These are short development cycles within a release.
This is conducted at the start of every iteration of about or every two weeks.
Now, in extreme, you're looking at their door cycles of about 1 to 2 weeks.
Customers explain the functionality they want in that iteration.
Developers then break down into task and estimate the amount of work.
Now, how much work can they get done that iteration?
That is going to be based on the estimates and the amount of work to accomplish in
previous iterations.
Small Release
A small release is a frequent small release that is given it's frequently
It's what I mean small it's not going to contain many sprints.
It may only have one sprint or one iteration, but it's something that's given to test
environments.
You want to make sure that you do rigorous testing and continuous integration is code
is coming in as being checked in.
You want to make sure you keep doing that because that's how quality is maintained.
This helps to demonstrate progress and visibility to your customers.
Customer Tests
The customers describe one or more tests to show to work and the software is
working.
The team then builds the automated test to show the software is working well.
That's different than how the older software development would work in older
software development.
The Team members, the programmers would come up with a way to test the test the
codes or test the program.
But if the customer can determine what type of test they want and how they would
test it, and then we would build to ensure we meet those tests would be better because
then they feel like this thing works the way they want it to work.
Collective Code Ownership
Any pair of programmers can improve or amend any code.
Multiple people work on all code.
This results in increased visibility and knowledge of that code.
First of all, it sounds risky that anyone can change anything, any code.
But even though that sounds risky, what this does is it opens visibility because now
everyone can see the code.
More eyes.
Hopefully we can catch more errors or more bugs.
This does lead to higher quality.
With more people looking to code, there's a greater chance of less defects, less risk.
If a programmer leaves.
If someone leaves, you don't have to worry that you don't have a replacement.
People get sick.
They may be out for a couple of weeks because the knowledge is shared and all the
people know what the code looks like.
Speaking about code, one of the things you have to do is follow good code in
standard, consistent code and standard when the software is done.
It should be it should be looked like if it has been written by a single knowledgeable
programmer.
Sustainable Piece
While periods of overtime is generally necessary in any project, repeated long hours
of overtime are unsustainable.
Counterproductive work in 14 hours every single day, six days a week, seven days a
week is counterproductive.
People get tired, especially programming.
Programmers have to be very analytical.
It's a very mental, challenging job.
If there's no downtime or time to refresh the mind, they start to lose the ability to be as
knowledgeable or analytical as they would be.
The practice of maintaining a sustainable pace of development optimizes the delivery
of long term value.
Sustainable pace leads to long term value because they're always going to deliver
most of the time deliver, hopefully bug free software.
Metaphor
XP uses metaphors and symbols to explain designs and create a shared technical
vision.
One of the things we have to understand is when we are talking to users.
Programmers think in programming methods.
Users thinks in simple methods.
Is there a gap, a bridge that can be between those programmers and those customers?
Well, this is need to create that bridge.
It's going to help create that shared understanding.
That shared vision of where we're trying to get there.
These are basically descriptions.
They help establish the comparisons that all the stakeholders can understand and help
explain how the system should work, basically.
Eg. the invoice and module is like an accounts receivable personnel who make sure
money is collected from our customers.
So actual programmers know what they're looking for.
They're looking to have a system that they can collect money from the customers.
Easy to understand on every end.
Continuous Integration
This involves bringing code together and making sure it compiles and works together.
The moment you write codes, you check in the codes into a code and library.
It integrates that code to ensure it doesn't break any other functionality.
This practice is critical because it brings problems to the surface before more.
More code is built on top of faulty or incompatible designs.
In the world of programming, it's pretty standard now to do continuous integration.
As you're writing codes, you integrate it into the codes that's already there.
You don't want to write codes that's bad integrated there, then write more bad code,
put it there.
And even if you write good code later and you put it in now it's on top of that code.
You don't want that.
You want to keep integrating your codes over and over.
Test Driven Development
This is going to sound a little bit backwards and what people that have followed
traditional work that I've learned
the team writes the test prior to developing the new code.
If the tests are working correctly, the initial code that entered will fail.
Why?
Because they didn't write any.
The code will then pass the test once it's written correctly.
Let's talk about that for a second.
Test driven development.
You write the tests.
You didn't write the code.
You've written nothing and run the test.
Well, there's nothing in there or whatever is there.
It's not complete.
It's going to fail.
Know the tests, then study.
So you're building your knowledge based on the questions you've got to answer.
To prepare PMP, Read the chapter, and then test.
Test driven development works in this manner.
Write the tests, then write the code.
So, the code is written to the test.
This in shorter codes would pass the tests, try out method of studying.
It'll probably make you pass more exams.
Remember, I have like 60 certification.
That's a method I use all the time.
Pair programming
Pair programming in XB Production Code is written by two developers working as a
peer to write and provide real time reviews of the software as it emerges.
Working in pairs also helps to spread knowledge about the system to a team.
There's a guy sitting next.
He's watching the code as I'm writing it.
Or maybe he's writing and I'm watching him.
Well, this sounds this may sound inefficient because now you're spending you have
two people you're paying to write one line of code.
It sounds inefficient, but it leads to less defect over time.
Pair programming is a core concept in Agile because the more eyes on it, the less
bugs on it.
When you write 2 million lines of code, it's impossible to go back and look at all of
them.
But if there's a second pair of eyes on it, the less likely you're going to have any bugs
on those particular codes.
Simple Design The next thing we have is simple design.
When it's done, simple design.
The code is always the code should always be testable, browser understandable and
explainable.
Do the simplest thing that could work next.
Complex design is replaced with simpler design.
There was simplicity as one of its core values the best architects, requirements and
designs emerge from self-organizing teams.
That's a big concept.
We're going to have to inspect that and learn more about self-organizing, self-directed
teams.
But remember, everything should be simple.
Refactoring
Refactoring = removing redundancy
Exam: Notice word by its definition, refactoring its definition is about removing
redundancy(unnecessary), eliminate an unused functionality and rejuvenate(revitalize)
an obsolete design.
You want to refactor throughout the entire project cycle.
This help saves time and increased quality.
Basically, refactoring is about keeping your code clean and concise, making it easy to
understand, modify and extend.
So remember, refactoring is basically cleaning up your codes when you're finished
writing them.
This table shows the difference between Scrum and extreme programming and how
the terminology line up.
Because going forward in the class,
what's gonna happen is, we're gonna sometimes interchange using the term sprint and
iteration.
Sprint
Sprint is the same thing as an iteration.
Fixed time box, length of time.
Remember, about one to four weeks worth of work.
A release in Scrum is known as a small release in extreme programming.
This is generally what's released to production.
You have sprint or release planning.
This is determining what iterations, or how many sprints will be within a certain
release.
This is basically an agile planning meeting.
Product owner = customer
The product owner, customer, in extreme programming, that's the person, that's the
business representative that represents the business to the project.
The retrospective is the reflection, which is the lesson learned that extreme
programming does at the end of their iteration, we do a retrospective in Scrum.
This is that lesson learned-style meeting.
ScrumMaster = Coach = Agile Project Manager
You have a ScrumMaster, coach for your exam.
Though, they'll call it an agile project manager.
Development Team and Extremists = Agile Project Team = Empowered cross-
functional team
The development team and extremists call a team, that's the empowered cross-
functional team that does the development work.
In exam, it's called the Agile Project Team.
Daily Scrum = Daily Standup Meeting
The Daily Scrum is also known as the daily standup meeting.
For your exam, they'll call it the daily standup meeting, that's that 15-minute meeting
when they answer the three questions.
Lean Development
First of all, Lean is not really originally started as a software development.
Lean was started by Toyota, the car manufacturer, as a manufacturing method,
and then was then applied to software development.
Some of the things that Toyota used in order to minimize waste when producing their
cars is those concepts will then be applied to software development and is now being
applied to Agile.
Principles of Lean
1. using visual management tool, using a lot of those, any tool that's visual.
Remember this concept of low tech, high touch, some information radiators,
in which case you can see things right away.
So Agile promotes this.
Let's use a big whiteboard.
Let's use big charts.
Everybody can see things.
2. Identify customer-defined value.
So the other thing is we have to know what the customer defined as value.
Who defines the value?
Who defines what value is?
The customer does because we want to give them valuable products.
3. Building in learning and continuous improvement.
Toyota promotes, and so should you, continuous improvement on our products?
You can't improve your products in your business if you don't improve the people in
the business.
Products don't improve themselves.
People improve products, and people to learn in order to become more knowledgeable
or they have to keep learning in order to continuously improve themselves.
So you want to make sure that you're building learning into things, always ensuring
that your employees and even your managers are learning continuously.
Now, Lean has some important principles, such as:
eliminate waste
empower the team
deliver quick
optimize the whole
build quality in
defer decision
amplify learning
These are some of the Lean principles that we should be looking at.
Eliminate waste
This is one of its core concepts
Lean identifies what's known as seven different types of waste, and we'll take a look
at that in a few minutes.
To maximize value, we must minimize waste.
Remember, this is really coming from a car manufacturer.
So imagine Toyota manufacturing a car, and when they buy different types of metals
and materials to make that car or truck or SUV or whatever is it they're making, they
wanna minimize waste, because when you're producing millions of cars, a little bit of
waste really adds up.
So in software, what do we consider waste?
You should know about waste in software development or in Agile for your exam.
Waste would be something that's partially done work, delays, handoffs on
unnecessary features.
Empower the team
Don't micromanage the team.
Don't take that approach.
We should respect the team members' superior knowledge of the technical steps
required on the projects, and let them use it.
Why would you want to micromanage your team?
If they have more knowledge than you in programming software why would you want
to micromanage them?
It doesn't make sense for micromanagers, especially when you don't have as much
knowledge as they do.
Deliver Fast
You wanna deliver fast, quickly delivering valuable software and iterating through
designs, right?
So you wanna deliver software as quickly as possible because that's how they see
value.
Optimize the whole
We aim to see the system as more than sum of its parts.
When you optimize the whole, you're optimizing everything in the system.
You can't optimize one little part of a system or two little parts or even one big part,
because you are as strong as your weakest section.
Eg, if you're building a car, you could build a car that goes 300miles/hr
Let's say you wanna build a cargo 300 miles/hr, but one of the engine mounts or bolts
can only sustain vibrations with a car of up to 200 miles per hour.
So just that little bolt, forget about the engine and the transmission and the body of the
car.
If that car exceeds 200 miles per hour, that bolt can break, the engine can fall, and the
car can crash.
So it doesn't matter all the other 2,000 parts that goes into making a car.
That one bolt, you're as strong as just that one bolt.
So when you optimize the system, you gotta see it as every single part.
You think of a race car that does go 300 miles per hour.
Every single part in that car has to be rated for 300 miles per hour.
Build Quality In
Build quality into the product and continuously assure quality throughout the
development process.
Quality should be built in.
You should be checking for quality, doing continuous integration testing, rigorous
testing also of the products you're building.
Defer Decisions
Balance early planning with making decisions and committing to things as late as
possible.
You want to defer decisions.
You don't wanna make decisions right away.
Generally, you make decisions when you're ready to go with just that decision,
you're less likely to or be willing to accept change.
You're less likely to accept change if you make decisions right then and there.
If you defer your decisions to a later part or a later time, you're more than likely
gonna welcome that change.
Amplify Learning
This concept involves facilitating communications early and often and getting
feedback as soon as possible and building on what we learn.
As we go through the software development process, we want to communicate what
works, what doesn't work.
You want to get feedback on what the customer thinks or even how the team is
performing.
You want to do this quickly, you want to do this early so you can fix and change
things as this project is progressing.
7 Wastes of Lean
1. Partially done work
It is work that cannot be delivered to the customer or wouldn't be delivered to the
customer, the customer is not using.
In other words, they paid you to do work that they gain no value of.
Imagine I paid you to paint this wall for me, but you only paint half of the wall and I
can't use the room.
So in that situation, that's partially done work that I spent money on that I'm not
getting any value on.
2. Extra processes
3. Extra features
Anything extra that I didn't ask for or find useful is considered waste.
4. Task switching
People working on multiple things, people working on multiple projects.
If they're not focused on one particular task, they will not be able to complete that
task.
Waiting
Anytime you wait for something, waiting for an approval, waiting for a sign off,
waiting is of course a waste of time.
If I told you, "Okay, well, you want to get this project approval. Give me two weeks."
Okay, what do you do for two weeks?
You wait, but now it's two weeks.
If you doing nothing, you're wasting time.
Motion
Any motion that doesn't add value is probably gonna be a waste.
Eg. having a distributed team around the world and people having to do motion, extra
motion just to start a meeting online or to start up a GoToMeeting or a WebEx
meeting or whatnot, that's motion that doesn't really add much value. If that team was
co-located in the same room, you could have eliminated that waste.
Defects
Things that needs to be fixed,
Things that has errors in them, those would also be considered waste.
Kanban Development
Next Agile method is Kanban development.
Kanban is the Japanese word meaning sign board.
This comes from the lean production system that comes from Toyota.
So Kanban is a sign board.
It's basically a board with little sticky notes on it.
And they have the number of cards that they have in there.
In Agile projects, you should use a Kanban board, or a sign board, because it helps to
visualize the work.
And it limits work in progress.
So in Agile we promote this theory of visualization.
We promote this theory of information radiators with diagram, chart,radiates
information.
So one of the best ways to do that is with a Kanban board.
Kanban don’t need to use software.
It is drawing on a whiteboard that you can just write out.
Just make a couple of columns and I just have a few simple columns there.
Let's take a look at this diagram.
There are the things with the column, the middle is six and four
It is limiting the work in progress.
If it is six cards, it means we should never be working on more than six items.
So you notice I have one, two, three, four items.
So that's good.
Another one is we should never be testing more than four things in testing.
So in diagram, we have three, so we're doing good.
So we're limiting the work that's getting done.
The work that my team is working on.
So that's one of its main things is that it's going to give us the big visualization of
work.
That way the moment people walk into the room, they can see what we're working on.
They know why we're limiting things.
And the main thing is of course it limits to work in progress.
What is the five principles of Kanban?
1. Visualizing the work
As you saw from that diagram, you look at it, you know what I'm doing,you're able to
to see how much I'm limiting them.
Eg. Softwar projects, by definition, manipulate knowledge which is intangible and
invisible.
2. Limit Work In Progress(WIP)
Keeping the amount of work in progress low increases the visibility of issues and
bottlenecks.
You don't want to put too much work in a process queue because too much work
means that if we're working on a lot of things, we may not be working on anything.
We want to focus our attention on just a certain amount of work.
And the team should determine what's that limit in work in progress in visualization.
Software for example by definition is not visualized.
You have to come up with a method to have visualized the work.
3. Manage Flow
By tracking the flow of work through a system, issues can be identified and changes
can be measured for effectiveness.
So as the cards are moving from work that needs to get done to going into in
progress.
In testing, it doesn't have to be something as simple as design coding, stress testing,
code testing, static testing, dynamic test.
You could have different columns.
It just doesn't have to be four columns like I had.
So you can create a pull system.
It creates this pull system as data is being pulled across.
It makes the process policies explicit.
This is important because you wanna, clearly explain how things work, how the team
is getting work done.
This leads to good open discussions on how we can improve our processes.
It does help with collaboration, improves collaboration a lot because now we can look
at different types of measurements and experimentation and we can find issues or we
can find ways to improve it.
Pull System
Kanban is known as a pull system.
Data is being pulled from one to the next.
So, for example, in progress, maximum is six.
We can pull one more item from here.
Testing
Testing is limited to four.
But we have three.
We can pull one more to here.
When this is done, then we can put it here.
Push System
So if you don't have a pull system, you have a push system.
Push systems are not good.
Push system is, okay, let's say I do the in progress.
I do the coding, you do the testing.
I'm done coding, I'm pushing that work to you.
I'm done coding, I push that work to you.
Now all of a sudden a bottleneck starts to happen because now you start to pile up the
work.
I'm finishing work, I'm just giving it to you.
Now let's say there's somebody after you.
If you're doing a static testing and somebody has to do dynamic testing.
Static testing is code testing.
So you're doing all the code testing.
So I finish writing the code, I give it to you.
You gotta examine the code, but it's taking you longer.
All of a sudden you start to create this bottleneck.
You start to create this bottleneck.
What we should do, and that's a push 'cause I keep giving it to you, but you're not
keeping up with me.
And then the other person after you is just waiting.
Remember waiting is considered waste.
We got that from lean.
So you don't want that.
Pull System
A pull system is when you are ready, you're gonna take the work from me.
When that other person's ready, they'll take the work from you.
So a pull system, that way things are being pulled through the system, not just push,
push, push throughout.
So that's another concept you want to ensure you understand with Agile.
Work In Progress
Kanban limits the work in progress.
It's one of its main things.
And I wanna show you this diagram of a concept you should expect a question on
your exam.
This is called Little's Law.
Now this is a law that says the cycle times are proportional to queue lengths.
We can predict completion time based on the queue.
So I wanna show you guys how to read this.
Here you have a chart and in this chart, you notice you have this reddish, pinkish area,
yellow area and then you have this green area.
Now in the Kanban board, you have the total work.
This is the work in progress.
And then you have the green.
So what's happening over time is this red area is pushing down into that green area by
going through the work in progress.
Let's say the project started and you had 400 features that you had to get done.
So the project started in April, you had 400 features to get done.
By March this work was pushing down.
And by Mar, you were able to complete this much work. 'cause the queue is coming
down.
By June you were able to complete this much work.
By July you're finishing this much work.
So eventually the way this thing looks at the endis that all of that red will become
green, and the yellow will go away because all of the red is pushing down into the
green.
What is Little's Law?
Little Law does is that it analyzes the queue of the work in progress, and that can tell
us how much work is getting done.
So if we look, if we just take a circle and we just analyze this section.
So we're looking at the Y axis.
This is how long it will take to get this much work done.
Y axis is the length, the units.
So this is the amount of work we're getting done.
And this is how long, in theory, it should take to get that work done.
So it depends on how this line is.
If this line is gonna cross like this, that may be a month and a half worth of work to
get this much work done.
Really that's what it's showing you.
So if I look at the queue and how long would it take to get all of this work done?
Well, it should take this long.
My line is not perfectly straight there, but good enough.
It should take about that much time.
That's all this law is saying.
You don't necessarily need to memorize this.
You should understand that what is Little's Law?
You should expect a question on it for your exam.
It's just basically showing the work in progress.
And by analyzing the the work in progress queue you can see how long certain work
will take.
Agile mindset
What is that mindset.
You want to have this mindset.
You want to become an agile advocate.
You want to promote agile.
You want to think agile.
What this thinking agile mean?
Welcoming Changes.
In every agile project, you're gonna anticipate changes.
You're gonna welcome it and promote it.
That sounds vastly different than a traditional project in which case you may suppress
change with change request forms and processes.
Traditional method => suppress change(change request)
Agile method => bring all your changes.
I want changes.
You're gonna work.
Working in small value increments
You're gonna be working in small value increments.
In other words, it is called delivering increments of work.
You're going to always giving them value.
You finish a little part of the work, give it to them.
Let them use it for value.
You're using building feedback loops.
Using Build and Feedback Loop
You're gonna be building and you're gonna have in feedback loops.
In other words, I build something, I give it to you.
You give me feedback.
I take that feedback,
I input it into the next sprint or iteration, and I start again.
Based on the feedback I'm getting, I'm improving.
Learning through Discovery
You're gonna learn through discovery.
The more you know, the more you're gonna learn.
Value driven development.
Everything we develop is based on value, because we're gonna talk to the customer.
We're gonna have 'em define what value is.
Failing fast with learning
When you fail, you learn the best lessons.
The best lessons in life will come at failure but you don't want to fail.
If it takes too long to fail the lessons will be hard to come by.
You're not gonna learn quickly.
If a process has to fail, let it fail quickly.
So, we can learn from it and improve on it.
Continuous delivery.
We are alwaysremember it's not a big bang delivery that comes at the end in
traditional software development.
This is gonna be continuous delivery.
As the product is being developed, you're giving it to them.
Continuous Improvement
At the end of every iteration, you're doing a retrospective.
That's a meeting where you look at the end of that iteration or that sprint and you're
gonna improve on it.
So you always, you're doing lesson learn, all the time.
You're improving on how we're gonna conduct these processes.
These are some of the mindset that we should be thinking as we move forward.
Leading Effectively
To motivate people
To tap into people's intrinsic motivations, internally speaking, what motivates them.
Why would the team members want to do something and what would motivate them
to do it?
And how do we align that to the project goals?
Money is a motivating factor, but it is not the only factor.
Maybe people has a sense of work.
In other words, they feel happy when the work is complete.
So they like working on things that can get finished.
Maybe people take pride in that work.
Maybe people like other types of rewards, such as a letter of recognition.
Find what motivates your team member and align that to the project.
Management Vs Leadership
Management is more mechanical focus,
Leadership is more human focus.
Managers or management focus on task.
Focus on controlling people to get a certain work done.
The command that the work gets done.
Leaders are different.
Leaders are more focused on people and the purpose why we're getting something
done.
They're more focused on empowerment of the person to get those job done.
Instead of commanding, they're more of communicating with people.
Eg. If I need someone to run my accountant department, I want management focus.
In the accounting department, task has to get done in a certain way.
Financial statements has to be made in a certain way.
So I need somebody to control, command the users in that department to ensure it's
get done correct.
Leadership, the CEO of a business has to be a leader.
This is a person that has to have a vision.
This is a person that empowers the people around them and communicate what they
want.
So they are basically more people-focused 'cause they have a vision and they're trying
to drive the direction of that business.
Do you wanna be management or leadership?
Well, on an agile project, you want to lead your team.
You don't wanna manage your team.
You don't want to command them and say,"This is the way to do it."
You want to empower them.
You want to communicate to them and let them find a way.
Servant Leadership
One of the main ways of managing an agile team is a term that you should be very
familiar with, and that is a term called servant leadership.
Now, servant leadership is an important concept on this test.
It's something that you should be practicing.
So servant leadership is different than a traditional project management leader.
A traditional project manager is a real management focus.
Follow this process, do it the way I want.
Servant leadership is different.
Servant leadership is empowering the team.
It's really about shielding them from interruptions, any type of interruptions,
bureaucracy of a business, users trying to come after them or changing their tools or
changing their teams.
It's about removing impediments to progress, removing the obstacles that can
slow the team down.
It's about communicating and recommunicating the project vision, keeping them
on track, letting them see that what is it you're trying to accomplish.
Carry food and water, both physically and theoretically.
In other words, you'll bring 'em some coffee and donuts
once in a while, but you're also gonna give them the tools and the environment for
them to succeed in.
Now, in a book by Jeffrey Pinto titled, "Project Leadership from Theory to Practice,"
12 principles for agile project that we should follow when you being a leader of how
to manage your team.
1. Learn the team member needs.
2. Learn the project requirements.
3. Act for the welfare of the teams.
The simultaneous welfare of the team and the project.
You're looking at the team, you're looking at the project.
We gotta make sure they both work well.
4. Create an environment of functional accountability where the team will be held
accountable.
5. Have a vision of the completed project.
6. Use the project vision to drive your own behavior.
7. Serve as the central figure in a successful project team development.
You want to be that central figure, so the team, not only are they empowered, but
you're there to help them and facilitate them.
8. Recognize team conflicts as a positive step.
You know, we'll get to conflict management in another part of this class, but a lot of
project managers may not like conflict, but conflict is good.
When people have conflict with each other, when people are willing to fight each
other, have major disagreements, it means they care about that topic.
One of the worst things you can ever have is when team members don't care about the
work, but if they're having conflicts, means they really care.
They're passionate about what they want versus what somebody else's want.
So conflict is good, it means they care, but you have to manage that.
9. Manage with an eye toward ethics.
There isn't enough that I can say why ethics is good.
Good ethics means good trustworthiness.
If your team doesn't trust you, I think you're gonna have a hard time managing that
team.
10. Remember that ethics is not an afterthought, but it is integrated into part of our
thinking.
11. Take time to reflect on the project and what has happened.
12. Develop the trick of thinking backwards and seeing what we did and learning from
that.
If everyone wants to follow the status quo, humanity will never advance in time.
It's visionaries that decides that we need to colonize Mars and move to Mars,
even though that sounds crazy.
Those are the people that changes the world.
You have to be that person.
You have to be willing to change that status quo.
And if that is so, then you have to be willing to fail, and we'll talk about that in a
minute.
Practice transparency through visualization.
Everything should be transparent.
Everything should have big charts, everything should have Kanban boards.
Now, I mentioned changing the status quo.
If you change the status quo, you're probably gonna fail most of the time.
But remember, if you're not willing to do that, if you're not willing to change that
status quo, you may never find that better method or that better way of doing
something.
So what we want is we want to create an environment so that our team members has a
safe place or safe environment for experimentation.
Let them experiment with new techniques and processes.
Let them share knowledge through collaboration.
And you should encourage emergent leaderships through the safe environment.
As people try new things, encourage them, let them try new things because that may
be better.
A safe environment for experimentation.
What happens when you have an environment when someone tries something new
and they're prosecuted?
Prosecution/take legal action happens when somebody tries something new
and it fails.
Generally, when something is tried new and hasn't been done before, it may fail.
You prosecute them, you ridicule/mock them, you punish them.
No one will ever try anything new after that, ever.
So, when you create a safe environment for experimentation, people want to try.
If they fail, you don't ridicule them, you don't punish them.
You tell them, "Well, it was a good job.
We don't win all the time, but we gotta keep trying."
Let's say you tried a new process to code the software, and it didn't work, but we lost
two weeks worth of programming time.
I have two things I could do.
I could come to you and say, "Well, Mary, you did a bad job.
You made us waste two weeks and now we're spending more money, all because of
you."
Now you feel prosecuted.
Now you feel that you're being punished for trying something.
Or I could have come to you and says, "Mary, great job.
I think you did, I think it was a good try.
I think you really put a lot of time and effort.
But I want you to try another method.
Keep trying until you find the right way that works.
Because if we find that new breakthrough in that process,
we can drastically increase how we program this software."
When other people see this, they will say to themselves,
"Oh, okay, so we're not prosecuted for trying."
And they themselves try.
They themselves try new things because now they know they can experiment
and not be prosecuted.
It's in this type of environment that your team will grow.
It's in this environment that will make a team become the highest performing team
that they could be, exceeding industry norms and changing the status quo.
Value-Driven Delivery
The first thing to understand is why these projects get undertaken.
Why do we do projects?
Companies do projects, because they see some kind of value in it.
Now, when we think of value, most people probably think of money.
o We're gonna do this project, and we're hoping that this project returns more
money in the future.
So if I spend $10 doing this project, we're hoping that the project eventually returns
$30 or $40 worth of value back to us, or extra income that we need.
So, what all project management is about, is about delivering value.
As we're delivering increments of the project or the entire project,
we're basically delivering value.
Now, value just doesn't have to come in the form of money or capital.
It can come in other ways.
So other ways could be producing a product of what benefit does this product have,
including improving the current products and services that we have.
There may be a market demand for a particular product that we don't offer that we
see.
Eg. you're in the market of manufacturing computer hardware, and you realize there's
a big demand right now for wireless keyboards.
So you decided, "Okay, there's a big market demand, let's get into that space."
Another one is safety compliance.
Being in compliance is a value by itself, because if you're out of compliance, you
could be fined.
So, one of the things that people confuse, especially with compliance projects,
and regulations or regulatory compliance is,
you spend money to be in compliance, but it may not return any money to your
business.
It allows you to keep the money you have, that's the value.
Because if you're not in compliance to that new regulations, or safety compliance,
you might be losing money if you're fined, or you might even be put out of business.
So, the value is not getting fined.
The value is being able to conduct business in that particular market.
Reduce Waste
One of the core concepts of ensuring that you maximize value on any project is to
minimize waste.
Waste can lead to value being decreased.
Waste is really anything that is non-value added.
It's things you may be doing on your project that has no value or is adding any value
to that particular project.
So you wanna be able to reduce or minimize these particular non-value added
activities or non-value added parts or components.
1. Waste could be things such as partially done work.
So partially done work is work that has not completed.
And if you spend time doing work that was never completed and given to those
particular stakeholders, that is considered waste.
In other words, you wasted time, you wasted money, you wasted specific resources,
but there's nothing to gain from that work because it's not completed.
2. Extra processes
Doing extra processes that may not require or add any value or add any functionality
to a product is of course considered waste.
3. Extra features that users may not use.
So let's say I'm programming an application for you and I add two or three new
features to an application that you will never use or none of your users in your
department finds useful.
That is wasting time and money once again.
Waiting, any unnecessary waiting on a project is gonna be considered some form of waste.
Imagine I'm waiting for a sign off, I'm wasting time waiting for that sign off.
Defects.
If I produce products and the product is defective and then I have to go back and fix
the product, then that of itself is considered a waste because the defect of itself needs
to be fixed.
Now I'm wasting time and wasting resources fixing it.
And on any project, whether it's an Agile project or traditional project, you emphasize
these wasteful activities, these non-value added activities or components,
and remove them or minimize them.
So we could maximize the value added work.
Traditional Project
You're basically spending a lot of money upfront with no money coming back in from
that project.
So let's say the project is $100,000.
You're basically gonna spend $100,000, but there's no return at all until that project is
done, the project, it comes into production, whatever that product or service was,
and customers start to use it.
Agile works differently than that, because agile will look to deliver value as quickly
as possible.
It uses something called MVP(minimum viable product), or a very small amount of
the product that is just good enough to be used, so returning value quicker.
This leads to the project or an opportunity to be funded incrementally.
In Traditional project
You got that $100,000.
So let's say the project took one year to complete.
So let's say the project return was another 100.
So you spend 100, you make 100, and a traditional project, you're gonna spend this
100.
After you're done, you're gonna get $100,000 worth of value coming back.
So you gotta wait 12 months, you spend 100,000 as the 12 months is progressing on
the traditional project.
12 months is up, and let's say it takes a year to return that money.
So in two years, you could make your $100,000 after spending your 100.
Agile Project
In the agile project, let's say in the first couple of months, you spend $20,000.
You start using the product, and now you start saving money or generating more
revenue because of the product.
So in three months, you start using it in two months, and then you make back the
money you've already spent in that three months.
Now, after that three months is done, you do another three months worth of work, you
spend another $20,000 or $30,000, then you return what you finished there and you
start to generate revenue off of that part.
So you're not actually spending all the money on a project and returning nothing till
the end.
You're actually funding it incrementally.
The good thing here is that you're doing, and you're getting the most valuable aspects
of the project right upfront,
So you're funding the most valuable aspect of your project upfront.
And there may come a time when, especially on software projects, when we only did
70% of the project, but 70% gives us all the value we'll ever need, no need for that
30%.
So they stop funding it, and they gain maximized value from the money that they have
spent.
So, Agile looks to deliver value as quickly as possible.
Us MVP(Minimal Viable Product)
This lead to more opportunity for incremental funding.
So this is how an agile project is funded differently than a traditional project.
Now there are other KPIs that you can use out there that you can come up with
yourself.
This is just some examples of ways to help keep track or manage the progress of an
Agile project.
Regulatory Compliance
Regulations are generally mandate given to you by some government agency or local
authority and it must be implemented into the project work.
Because if you don't, if you do the project and you don't incorporate your regulatory
compliance, sometimes the project can be discarded or the product cannot be used
because it is in need of certain regulations.
So, lets say you're working on or building a car in the car industry and it doesn't meet
certain emissions, requirements or safety standards, then the car could probably never
be drivenso you wasted all of this time and money.
So, one of the things that we have to do is we must be able to incorporate these
regulatory compliance's or regulations into the project work as regular work that's
getting done, its regular, develop and work of that particular product.
So, that's one way of doing it, is just as you are building the product, as you are
building that software, as you are building like recreating that service, you wanna
incorporate these regulations or these regulatory compliance into it as just normal part
of the work.
So, if you are building a car you want to incorporate the legal standards or the safety
standards or the mission standards as just part of the way the car is developed.
So, as you're looking at the engine and the transmission and you're designing it, you're
thinking about these emission standards and how to meet them as you are designing
the engine.
The other way to do it would be just completing the product itself and then fitting it
with whatever regulatory compliance is needed.
So in that situation instead of building it into the car as you were, instead of building
the emission standards into the car as you were building it, maybe you built the best
performance car you can think about and then added in ways to reduce its emission
after you have finished building the actual car itself.
Now, on any project that you work on and for most of us that work on projects with
regulatory compliance's on top of us,
Risk Managemet
In Agile project, one of the things that you have to keep in mind is risk.
Risk management is a very complex process in the PMBOK.
Risk management, in general, needs to be done throughout the entire project.
Because risk is closely related to value.
Risk is considered anti-value, which means that risk can pose a threat
that can remove value from the project.
Eg. one of the best values of following an Agile project.
Well, that would be getting the products delivered to you as early as possible.
That is one of the best values of it.
But risk can delay that.
There is a risk that you could have a hurricane or a snow or a snowstorm.
There's a risk that could be a pandemic.
And your whole project is delayed and you're not gonna get that value.
So it's anti-value.
There's a risk that the feature fails.
There is risk that the feature that implementing this feature can affect other features.
There's risk that a team member can be out for an extended period of time causing the
sprint velocity or the team velocity to get out of place.
So it is really anti-value.
It has the potential to remove, erode, or reduce value with different types of threats.
Risk management is something that should be done throughout the entire project, as
the team should be identifying risk and assessing risk.
Now, one of the ways to do that is by following risk management processes.
Risk management process is very straightforward.
Plan
The first thing is you gotta make a plan.
You gotta make a plan of how to identify and assess and assess your risk
and coming up with the right risk responses and so on.
That you're gonna do with the first process of plan risk management.
So you're making a risk management plan that tells you how to do the next set of
processes.
To Idendify a Risk
The next one is to identify a risk.
Here's where the project team identifies some of those risk such as there's a
snowstorm, there's a pandemic, there is a failure of a piece of hardware.
There's a feature that causes corruption.
So you gotta identify all the risks that can affect your project.
Qualitative Assessments
The next thing is a quantitative and qualitative assessments.
So a qualitative assessment is more of a verbal ranking the risk like which risk ranks
the highest, which risk ranks medium and which risk ranks low.
So a qualitative risk assessment is basically looking at the probability of the risk, the
impact of the risk, and then assigning some verbal values, like it is high, medium, or
low.
Quantitative Assessments
Quantitative analysis is assigning a numerical value.
So this risk takes place, this is how much it will cost this project, it will...
If this risk happens, it'll delay the project by 10 days.
It'll cost the project $20,000 worth of additional materials.
Now, after you have identified the risk, you have assessed the risk.
Plan Risk Response
Now, you gotta come up with how to respond to the risk.
Responding to the risk could be ways of mitigating the risk or lowering the risk.
Maybe if there's a snowstorm, we can all work from home.
It'll have a little bit of impact on the way we communicate and may delay the project
but it doesn't stop the project.
So it doesn't completely shut the project down.
So that's a mitigation.
You can accept risk by not doing anything about the risk and just accepting it like an
earthquake here in New York City may be a risk that you just accept.
Now, your project gets executed and you start doing the work.
As the sprint is going on and people are doing the work, if there is a particular risk
that takes place, you have to implement the response.
So let's say there is a snowstorm and everybody has to work from home.
Well, now you gotta implement your risk response.
Maybe you're using the latest in the remote technologies, like Webex or GoTo
Meeting or Zoom and whatnot, to ensure that we can work from home.
So if there is a risk that takes place on the business, then you have to implement those
responses and ensure that you reduce those risks.
Now, comes as the project is consistently keep going and they're doing the work and
the sprint, you gotta monitor and control the risk.
You have to see the work that's getting done, see if the risk materializes itself, see if
those responses are working and getting done correctly.
And these are just some of the traditional risk processes that you would have.
One of the worst things is you're working on a project and there is a risk that
materializes itself that you should have identified.
And before you know it, it takes out your entire project or it causes massive delays or
removes value.
You wanna be able to catch these things early.
You want to be able to think about them early.
You wanna come up with your right responses and you wanna be able to reduce risk.
That way, there is no loss of value throughout the project.
How Customers Conduct Value Prioritization
One of the core concepts in Agile practicing or Agile project management is this
value-based prioritization.
The features, in the product backlog, is prioritized based on value.
Well, what does that mean?
How do we assess value?
How do we know features are more valuable than others?
It can be based on how much return investment, return on money that particular
feature will return.
Eg. if you're building a CRM system, one of the most valuable features would be an
automatic response to leads that are coming in.
That way the lead knows or the that potential customer knows that we're gonna get
back to them as soon as possible.
So maybe we prioritize that to be the highest features in our CRM but it can also be
risk and other dependencies that can affect how we value certain features.
This is not something that we as the Agile project manager or our team does.
This is something that the customers will conduct.
The customers, the product owner needs to prioritize the features for us.
They need to tell us, "This is the most important feature.
This is the second, this the third, this is the fourth."
How do we get them engaged in order to do this?
Kano Analysis
Important for the exam.
It helps to understand the customers satisfaction.
4Types:
1. Delighters or Exciters
2. Satisfiers
3. Dissatisfiers
4. Indifferent
Delighters
These are high value features.
These are features that really makes the software usable.
Going back to an accounting system,
the ability to receive payments online quickly using credit cards is something that the
customers may feel is a high value feature.
Satisfiers
Now, these are good.
The more the better.
The ability to edit the invoice, the ability to produce accounts payables and receivable
reports are gonna be very good to have.
Dissatisfiers
If the feature is not in the software or in the product,
it makes the customers unhappy, but it doesn't really add any more satisfaction,
but if it's not there, it's gonna make them really unhappy.
Eg. the ability to reset a password on a piece of software.
It doesn't add any more features.
It doesn't make me happy to use the software, but if that's not there, I'm gonna be very
upset with it.
Indifferent
This has really no impact on the customers one way or the other.
The feature is there, but it doesn't impact them whether it's there or it's not there.
So you notice functionality based on the charter, satisfaction and functionality,
performance, attractiveness, and must be.
That's really what this is looking at.
In order for things to be satisfactory to our customers, the functionality has to be
there.
The performance has to be there.
Limit WIP
Why do we wanna limit the work in progress?
Work in progress is work that it's considered waste if remembering the lean concepts,
that it's considered some form of waste.
Now, this is work that has been started but has not been completed yet.
So you don't wanna have too much work in progress.
Kanban board is one of the methods to limit work in progress.
Work in progress is money spent with no return because work in progress is I'm
spending money on programmers to get the job done, as they're programming the
software, but there's no return yet because they're still programming it.
One of the things that it could do is that it hides bottlenecks.
It hides things that can slow down the process because you don't know what they are
until the work is actually done.
It's when the work is getting done is when the risk can happen.
The risk of the software crashing, the risk of the server's hard drive dying.
The hard drive on the server can't die if the server was never turned on.
The software can't crash or the programming software using to program or code with
can't crash if you never actually started it.
So it's potential risk.
The moment you start doing the work, that's when the risk could take place.
If you're not doing the task, there is no risk there.
Eg. if you're not driving the car, there is no way to get into a car accident
if you're not in the car.
But the moment you get into the car and you start driving the car, the work in
progress, if you get into work, for example, now you can get into an accident.
There's potential risk there.
Agile projects, of course limits or tries to limit the work in progress, optimizing it,
making quick, making it as efficient as possible, so there is very little work in
progress.
The best way to do this is just to use a Kanban board and limit how much work you
can do in each cycle or each phase of that particular project.
Now, one theory that I do want to cover in this section is this bottleneck and theory of
constraint.
Now, by looking at this diagram,
I want you to watch this diagram carefully.
And let's take my trusty pin here that I have and you'll notice, so this blue one here,
this is all the work that needs to get done.
In comes this red section.
This is all the development work.
But you notice there's something odd about this development work.
It's getting wider.
Look at how wide this thing is, right?
You notice it's getting very, very wide as the project is progressing.
And what's causing this? Why?
What's the bottleneck?
What's constraining this one, pushing the work down?
In theory, all of this blue should go into this purple one.
In theory, all of the work that's ready to go through development and testing
should be deployed to the users.
But you notice there's some kind of constraint here because it seems like the testing is
stuck here.
The development is not the testing has work to be done.
Nothing is really coming out to deployment.
Whatever's happened here in April it seems, that was it.
That's all we deployed.
We haven't deployed much.
So what's causing this problem?
Well, what's causing that is gonna be known as how we determine that is the theory of
constraint.
How do we find the bottleneck?
And the bottleneck activity is not the development.
The bottleneck activity is the one that comes right after the widening activity.
So that's what the theory specifies.
The one that's coming after the activity that's widening is the bottleneck.
Why?
Because it seems like the work that has to get done, the work that's ready to get done
is pushing down into development.
Now development is doing the work, but development can't push it down.
So whoever, maybe the testers are stuck.
Like they're stuck in one section and they can't finish the testing activities
to take the work from development.
So development is doing work, doing work and they have work ready to push into the
testing section, but it's not pulling.
Remember it's in Agile.
It's a pull system.
So it's not pulling in the development work.
So the development work is widening and widening and wide, while that bottleneck
activity is just staying there.
So when we talk about the theory of constraint or bottlenecks, know this concept for
your exam.
You should expect the questioner to give you a graph and you gotta find the
bottleneck activity.
The bottleneck activity is the one after the activity that is widening the most.
Agile Contrating
This is a difficult topic to cover on an Agile project or to do on Agile project.
Imagine hiring an external company to do the software development for you or to
develop a piece of that software outside the project.
So you gotta get a contract, or even internally, you have contracts with your internal
developers.
This becomes difficult for a couple of reasons.
1. Agile's huge flexibility with scope.
Agile’s flexibility creates difficulty in outlining contract acceptance criteria.
Anytime you've ever written a contract with someone, generally a contract doesn't
have much flexibility in terms of the scope.
I go out and I get a contract with Bob's Painting Company to paint my wall white.
That's different than an Agile project.
In Agile project, the scope shouldn't vary.
If the scope varies a lot, it's the time cost that doesn't vary.
So that's where this becomes difficult.
So the flexibility of the Agile project of scope makes it difficult and outline and
the contract's acceptance criteria because how does the contractor know the
work is done if the scope can vary and change.
Agile attempts to have fixed time and costs while varying the scope or the
functionality on it.
Remember that inverted triangle concept?
One of the Agile values is, we're going to look at customer.
We're gonna take customer collaboration
over contract negotiations.
We want less contract negotiation.
We want more participation, more cooperation or closer cooperation, we want more
feedback on our projects.
So that's what you want from an Agile contract.
Now, you do have a contract that some people refer to as money for nothing and
change for free.
So this, imagine you have a contract.
Let's take a look at money for nothing.
Let's say you do an Agile contract and you have 20 features.
And after 15 features, you realize, now we paid for 20 features.
You do a contract with a software developers, you say, here we got 20 features.
How much are you gonna charge?
So they give us a price on those 20 features.
But after the 15 feature, remember they have to do the most valuable one first.
After the 15 feature, we don't see much value left on this project so we say, cut the
project off, I'm done with this project, you can keep the money.
So it's money for nothing.
The other one is change for free.
Change for free is this.
So let's say, again you got these 20 features you have to get done, but as the project is
progressing, we want to change one of those features, but you have to allow me to
change it for free.
You have to say, I'm not removing the number of features.
I'm just gonna remove feature 10 and I'm gonna replace feature 10 with another
feature.
That's called change for free.
Now, the other thing that I have here,
the other two I have here, is something called a graduated fixed price contract.
This is where me and the buyer, the buyer and the seller.
Me = buyer, the contractor = the sellers
We're gonna share the rewards.
And to do this, we're gonna do an hourly rate based on if they finish early, they get
$20 an hour.
If they finish on time, we'll give them $18 an hour.
If they finish late, we give them $15 an hour.
So those are really low wave rates for programmers, right?
So basically, you're basically paying out a different fee based on how the work is
getting done.
So we are encouraging them, hey can you finish a little bit early on this project?
Because the earlier you finish, the earlier we're gonna see value.
Now the other one here is a fixed price on a work package.
Now this here is basically looking at each one of the work packages or each one of the
features that we have and then telling me a price, okay, this feature is $2,000, this
feature is $3,000, and so on and so on.
So you're basically assigning the cost per each individual feature.
This is probably the most used of these here.
You can combine this with change for free or money for nothing in order to help
promote your Agile contracting.
Agile Quitz