📺 Develpreneur YouTube Episode

Video + transcript

Revisiting “Done” in Agile – Why It Matters More Than You Think

2025-08-14 •Youtube

Detailed Notes

In this episode of Building Better Developers with AI, Rob Broadhead and Michael Meloche revisit their earlier conversation on defining “done” in Agile. They break down why “done” can’t just mean “I finished coding,” and how a clear, enforceable Definition of Done (DoD) prevents scope creep, reduces rework, and keeps projects on track.

You’ll learn: ✅ What “done” really means in Agile ✅ How ambiguity derails projects and creates scope creep ✅ Real-world examples from Michael’s career—before and after a clear DoD ✅ The essential components of a strong Definition of Done ✅ How to implement and enforce your DoD for better delivery

Your Challenge: If your team hasn’t reviewed its Definition of Done in the last 3 months, set aside time this week to review, refine, and commit to it. The clarity you gain could save you weeks of rework.

📌 Listen to the full episode here: https://develpreneur.com/definition-of-done-in-agile/ 📌 Visit the website: https://develpreneur.com/

Transcript Text
[Music]
All right,
little water. And
>> yeah, sorry I tripped you up in that.
You went you talked so long and you
talked through so many of the bullet
points in the first one. I kind of lost
the thread. So by having you paste that,
that allowed me to kind of keep track of
where you were going.
>> Yeah, that was a great idea. I hadn't
really thought of that. Um, let's see.
Did I just do it for this?
>> Yeah, I need the next one.
>> Okay, let's see now. do it for
>> because I floundered on that first one
because it's like I I thought I had the
thread and then I lost the thread. I'm
like crap, what was the thread? So, I
just kind of waffled through it. There's
a I mean there's Yeah, this one is a
lot. So, I'm going to give
it make it. Let's see. Is it done? There
we go. Not main
take this and shove it into Oh, by the
way, hello everybody. Um, we're
recording our way through here. Uh, so
I'm going to paste for you in the
podcast ideas. I'm just going to paste
the next one here.
So this episode we are going to do
defining done in agile. How to stay on
track and avoid scope creep. So this
will be a fun one because it is really a
followup to that last one of scope
creep. And now let's figure out maybe
how to avoid some scope creep. And I'm
going to stick with my Spanish as sucky
as do uno it may be.
Hola. Hello and welcome back to building
better developers developer podcast. I
am Rob Broadhead, one of the founders of
developure, also a founder of RB
Consulting. More about that in a second.
First want to talk about this season,
this series, this episode. We are in the
season doing building better developers
with AI. We're going back two seasons
ago I think it is and we're grabbing a
topic throwing it in AI and saying what
would you suggest for a podcast and then
we're basically analyzing that and it's
giving us some great things to talk
about. So that's what we're looking at
this episode. Our title for this one is
going to be defining done in agile how
to stay on track and avoid scope creep.
Now uh back to RB Consulting. We are a
company that helps others figure out the
best way to use technology. That's the
best way to look at it. Just like you
can do a financial audit or security
audit, you can also do a technical
assessment, which is very similar to it.
You know, technical audit, things like
that. Well, we're going to sit down.
We're going to help you figure out what
do you have, what what is your current
situation, and we're also going to sit
down and talk about your business
because that's really the most important
part about using technology is how to
leverage technology to do what you do.
We're going to help you walk through
your processes. What is it that you do
like in detail? So, it's a, you know,
think about it like sometimes we get too
much in our head. Just like how would
you explain to somebody how to tie a
shoe? There's probably business things
that you do that are along that same
line where you just know how to do it,
but to explain to somebody else, which
means to explain it to a computer or
technology can be a bit of a challenge.
So, we're going to help you bridge that
gap. We're going to help you understand
what's out there because there's a lot
out there. We spent a lot of time. We
are technology agnostic and so we're
going to find ways to help you take your
technology drunk junk drawer and clean
it up and through integration,
simplification, automation, innovation,
we're going to find the best approach
for you that custom recipe for success
so you can have a road map that you can
execute on or we can help you with that
as well. Good thing, bad thing.
Uh this is going to be like one of the
goofiest ones we've had maybe so far out
of a long list. Um,
good thing today was I was sitting there
and I was eating lunch and I had
something like get stuck between my
teeth and I was like, "Okay, I got to go
like get that thing out." And it came
free. The bad thing was when that came
free, I also had part of my tooth came
free. So, I had like a cracked tooth
that somehow had lost its uh its
strength or whatever. So,
not in a painful way. There's nothing
painful yet. I can drink hot and cold
liquids. not causing my head to explode
or anything, but enough that I'm going
to have to go find a dentist very
quickly and get all that kind of stuff
repaired. So, you know, sometimes the
simple things turn into not very simple
things. Sort of the story of my life
right now. Much like Michael's, which he
has re regailed us with in recent
episodes. Let's see how it's going there
this time as we check in with Michael
and he introduces himself. Hey
>> everyone, my name is Michael Malash. I'm
one of the co-founders of Developer
Building Better Developers. I'm also the
founder and owner of Envision QA, where
we help startups and growing companies
build better software faster with fewer
problems. Our services cover software
development, quality assurance, test
automation, and release support.
Companies come to us when they want to
avoid delays, reduce bugs, and launch
with confidence. Whether you're building
your first MVP or scaling a live
project, we make sure that your uh
software is reliable, efficient, and
ready for growth. You can learn more at
envisionqa.com.
Uh, let's see. Good thing, bad thing.
So, last time I talked about the water
issue, so that's been resolved. Um, I
guess good thing we now get to enjoy the
new toilets we had installed a month
ago. Uh, now that the water is working
again, uh, we can finally enjoy all the
upgrades we kind of did in the house,
which we weren't able to do, uh, last
time because we had no water. Uh, and as
far as bad things go, I got a project
that's kind of dragging out and just
dragging me down a little bit. So, but
weather's getting nice, so I'm not gonna
let it get me down.
>> Yes, weather has definitely been getting
nicer. It's been awesome enough that
I've actually had the windows open on a
couple of mornings and not been like
dying of heat exhaustion. So, it's
always good. So, we're going to dive
right in. This time, I followed up from
a prior post. So, it didn't give me like
any, you know, excellent idea or
anything like that. It just uh I said,
"Hey, how about doing this?" And it
said, "Absolutely. Here's a detailed
breakdown." And it gives us the same
kind of thing that we've had in the
past. So, it's a suggested episode
structure and item one with some bullet
points. We'll dive right in. What does
done really mean in agile? Explain the
agile principle of a definition of done.
Do contrast it with just finished
coding. Why clear done criteria are
critical for teams.
I want to I really want to go with the
like jump to the end there. Why clear
done criteria are critical for teams
because
this is one of those things that when we
we sometimes when we start a project and
we say we need to make sure that one of
the first things we do is we define what
done is is that people look at us like
we've got three heads or something like
that. The thing about done is that there
are varying understandings of what done
in a software project in particularly
mean. Like does done mean that you just
wrote some code? Does it mean that you
wrote unit tests with that code? Does it
mean that you have done a full it's gone
through QA? Does it mean that it's been
deployed? Does it mean that the user is
using it? There's a lot of different
ways you can look at done. And within a
development project, there's also things
that done may include things like
uh has it been properly, you know,
besides unit test, has it been properly
commented or documented? Has it been
committed to version control? Has it
been merged into a branch or something
of those nature? Has the uh the ticket
that originally, you know, that
originated that task been moved through
its processes and moved to complete so
that it is done? Um has it been signed
off on? There are things like that that
are very much part of your uh your
development process and your standards
and your team or even your corporate
process and standards that need to be
taken under you know consideration when
you consider what done is some places
done may mean that it has to actually go
through uh like a code review and a
security analysis review and and all of
these other things that are way way more
than
done in the hey I wrote the code and I
tried it on my local machine and it
works. And I'm using air I'm using air
quotes everywhere here for those that
can't see it because that's sort of how
it is. It's like
what really is done and we need to make
sure we do that because that is the that
is the target for whatever we're doing.
So if we ask somebody is it done we're
not going to get well sort of or yeah
but it's not or it's kind of or any of
that. You need to you need to know is it
done or is it not because that's going
to be a key part of scope creep and
estimation and things like that. So
where do you want to pick this one up?
>> So yeah, so you kind of touch on a lot
of things. I'm going to go with
contrasting with just finished coding
because one of my biggest pet peeves is
you do all this work or a developer does
a lot of work and they say they're done,
they push the code up and then it gets
to testing and you go down and you sit
there and you read the the ticket and
you're like the tester's reading the
ticket and they're like what is done?
What did you do? you know, it's not
clear in the requirements what it is
that they were supposed to do. So, what
did you work on? So,
when you're working on the requirements,
the definition of done needs to be clear
for everyone that reads the ticket
because if you're working on the ticket,
um you're working on this change, you
want to make sure that the change is
what is implied in the ticket. There
have been times where I have made
mistakes where I read the ticket one
way, someone else reads the ticket
another way and what gets implemented is
not what was the requirement for the
definition of done. And you run into
these situations when the requirements
may be clear but may not be clear enough
to really define the definition to done.
Case in point, you could have I'll just
pick on login screen because login
screen is just about everywhere. You
could have a situation where I have a
login screen and it's you basically were
told, hey, set it up to where a
registered user can log in with username
and password. Cool. I write the code. I
can log in. Now, it gets to the tester
and they're going to read that as okay.
So, I can log in with username and
password. They it does not specify
things like um case sensitivity, uh
special characters, things of that
nature. So if they go to test a login as
typical login security which has been
around for a while they're going to
break things. They're going to think
well why is this not working as
expected? So they're you need to make
sure that within the requirements
definition of done is some of the things
of what is done. So done would be
implied user can log in using any
username any password or if there are
other requirements then you need to lay
that out that hey username can only be
lowercase username can be camel case
username could be any case as long as
the username matches a user. These are
not just requirements but these are what
needs to essentially be the story for
testing so that you know it's done. So
if someone picks this up or a user goes
to test this, they know specifically how
to test it to see how that works. Now,
if it's a backend change, that's a
little more difficult. You're going to
have to have another developer test
that. But this is to me from a
test-driven developer approach what
definition of done means to me. Because
if I can essentially lay out how this
works, then I can code it. If there are
ambiguities in what I need to do, then
it is not a clear definition at all.
This sort of goes right into the next
point. Why ambiguous done leads to scope
creep when done means different things
to different people leads to unfinished
work. uh hidden bugs or endless tweaking
creates mismatched expectations between
DevQA and clients which is really what
we just talked about is
and it's here it's that it's that back
and forth and I'm going to probably go
right into the next one since Michael
Sor stole this one uh and let him talk
about the next couple items and just
touch on this real quickly to give my
thoughts is really what the problem is
it does become very frustrating when you
don't know what done is because you have
and it it really is very much the
developers QA and customer because you
will have stuff that for example goes to
QA and it's to them not done. It hasn't
covered the requirements that they think
it needs to. So they kick it back to the
developers and they're like why is the
developer not getting the work done? The
developers like why is the QA, you know,
on my butt all the time? Why they keep
changing stuff? Why they why can't they
just accept it? And of course the same
thing happens with the customers like
it'll go all the way to the customer.
The customer's like this isn't what I
wanted. This isn't how I needed. they
miss stuff and it goes back and people
get frustrated. So it does lead to scope
creep and it's really more of that the
scope creep tends to be that like now
people start expanding what they want to
talk about or or add to the requirements
to try to make sure that they can figure
out what you know that it actually gets
done. It's almost shoot for the you know
the star so you fail and hit the moon.
It's that kind of stuff. It's just a bad
situation to be in. Real world examples,
stories from teams where unclear done
led to delays or rework. How a strong
definition of done saved another team
from project chaos. I'm going to throw
that one to you.
Yeah. So, I I'll run with this one
because
the company I've worked for over the
last year's transition. We were acquired
by another company. And before we were
acquired, we had clear
requirements. We knew what needed to be
done. Everything we had, we had
definition done. Our tickets were being
completed on time. We met the
expectations. Yes, there was
occasionally some rework because like
Rob said, when you deal with reports,
you run into, oh, that's a simple
change. But outside of reporting, almost
everything we did was able to be
completed on time, on task, and we knew
what it was we were doing and could test
it. In that transition shift to the new
company as we were pulled in
almost every ticket I have had it feels
like it is a monolithic spike. Every
single ticket I have is ambiguous. It is
basically make this work in inside of
this ecosystem.
Hell or high water just make it work.
The problem is this is such a monolithic
application that you have no idea where
to go within this application. There are
multiple teams working on this project
and unfortunately even though we are in
the project process of transitioning
into this new ecosystem, we're still
making change in the old ecosystem. So
you could have one piece you get it
working and then go back and pull the
latest change. What you just redid this
or oh you changed this now it doesn't
work. So this is so frustrating that
having clear guidelines and definition
of done really avoids that and can
hopefully get you across projects and
meet your deadlines.
>> Excellent. Good examples. And I'm going
to dive into the next one because we're
going to try to get through a couple of
these points this time. uh components of
a good definition of done code complete
and reviewed automated test passing
documentation updated deployment to
staging production verified acceptance
criteria met and signed off I think
that's a really good start and I I think
that I want to sort of touch on these
real quick uh each of these because they
code complete is and reviewed is
something that I think we should do on a
regular basis I think there is very much
a value to reviewing code I have worked
on projects that review have code
reviews very strong all the way to don't
do it at all and the strong honestly the
stronger the better. I think yes it
takes time, there's effort, there's it
can be frustrating because you get
something kicked back to you. It's like,
hey, you need to, you know, make this
conform, but but it does pay off in the
long run. And this is from somebody that
there's more than a few times I've been
frustrated with a code review,
especially uh the code analysis, static
analysis stuff I do all the time. I'll
get frustrated with something, it gets
kicked back and it says you should do
this and I'm like, I don't really want
to do it. like I'm just gonna and
there's always that temptation and
sometimes I fail I fall for it to just
say you know what I'm going to pass it
anyways and we're going to move on but
there is also a value in uh in doing
those uh automated test passing is like
I will I've been on those where it's
like okay I'm creating tests for
everything and I've been a situation
where I'm like all right I'm going to
whip a couple of tests out we're going
to test it we're going to move on um yes
going through and doing those tests can
be timeconuming but particularly getting
those autom automated test built will
help you in the long run. And yes,
sometimes they fail because you change
uh requirements or something like that
change, but it also gives you actually
an extra uh leverage to not change stuff
to say look if we have to change this
and I have used this before. If we have
to change it, the change is not that big
a deal, but we have to retest all of
this stuff or we have to update all of
these tests and then suddenly that thing
that was like, yes, it's a little change
in air quotes actually is something that
is not a small impact and we have to
actually think about that. Uh, and you
could say, well, just skip the testing.
But it's like, well, wait, but any of
those places it's testing, if one of
those fails, then we would have to go
find it. So, you're going to have to
keep doing it.
documentation update. We skip this all
the time. I know everybody does, but it
really should be something that we build
into our processes to make sure that's
part of done is that we, you know,
wherever we need to update
documentation, we do. So, I think the
deployment thing is something is getting
better with CI/CD and some of those
kinds of things and pipelines, but I
think we don't do it enough. I think
it's very good to deploy it and run it
through its tests on the on the new
site, make sure everything goes. Um, and
of course actual done is that it's been
signed off on. So, we probably have a
done during a sprint or done for a
certain step, but that is not done for
that feature because it's not done until
we can go all the way through and
somebody can actually use it. Uh,
thoughts on those?
>> Yeah, I want to briefly touch on that.
I'm going to just go right into the next
one. But one of the things that Rob
touched on, you know, the automated
testing, you know, going back and fixing
those tests, make sure you don't let
your tests get stale or just don't
delete tests that are failing. A lot of
situations, if you're rushing to get to
the end, they I've seen developers do
this where they don't maintain tests.
They just modify the test enough to make
the test pass, but not really meet the
requirement that the test is passing. So
make sure that you keep your tests
somewhat fresh to the requirements as
they change. Uh I'm just going to jump
into five. Uh who creates and maintains
the definition of done? You know project
owners, scrum masters and the dev teams
collaborate and uh DoD evolves as the
project matures. I'm going take that
first one. You know who creates and
maintains the definition done? The team,
your project owners, the scrum masters,
the dev teams. If you are working as the
developers, chances are within your team
itself, you as a team need to sit down
at least quarterly agree on what your
team
wants for definition of done. Everyone
should be on the same page so that there
is no ambiguity, no confusion of when
you scope out tickets, you flush out the
requirements that when you pick a
ticket, you set, hey, I'm going to get
it done in this amount of time. then
you're going to get it done in that
amount of time. And this does require
working with the project owners and the
scrum masters. At the beginning of this,
it's going to be difficult, but in the
long run, it's going to save you a lot
of time, headache, and hassle. What are
your thoughts, Rob?
>> Yeah, I think in that that's the whole
point is that if you have problems with
it early on, if you're if the scrum
master, the product owner u don't even
the dev team, if they don't have a good
definition of dumb, that should show up
in your retrospective. That should be
something that gets flagged. That should
be something that you correct as you
move forward because that's part of the
whole idea is that agile should be
getting better as you go. And honestly,
there have been more part of the reason
that I know that it's important to
define done is that we have had this
come up in sprints during as we've gone
through an agile project and we've
gotten to a point where we're like, you
know what, we need to do a better job of
done. Maybe we need to add something. We
need to change something, tweak
something. we've gotten away from maybe
one of our steps that now we're not
doing it right. So, let's go back to it.
Code review process. There been more
than a few times where it's like we need
to adjust the code review process. Uh
bring more people in, bring less people
in,
provide different uh a different format
of feedback. Um things or you know, less
feedback, more feedback, uh smaller
chunks of work so they're easier to
review. There's a lot of that kind of
stuff that goes on.
We're cruising right along. So um how to
implement definition of done in your
workflow incorporate into user stories
and sprint planning use checklists or
tools like Jira, GitHub and notion make
definition of done visible and agreed
upon by all stakeholders. Uh and this
really is just like once you've defined
done you should document it. There
should be something in your it should be
in your uh your team documentation, your
development processes, your project
processes that this is what done looks
like. These are the steps. These are the
bullet points that have to be a part of
that. They don't have to be included in
order for us to actually be done.
And then within that is we can then if
we're using this especially good if
you're using like you know Jira or one
of those kinds of things Trello or Son
or whatever it is that when it goes into
the done column then we know that all
those things have actually been
completed and it's not bad in some of
those that you have you know sometimes
the the columns the swim lanes that
you're moving your ticket through are
all of the things to define done. So
maybe it's like you start out and then
it's being coded and then once coding's
done it goes to unit testing and once
unit testing it goes to QA review and
then it goes to code review or you know
and like and not necessarily in that
order but it's like you can in your swim
lanes document all of the things that
need to be done and then that should
move through and then you can even have
things around that. You can have logic
that says it can only go from this
column to this swim lane to this swim
lane and only this person can move it
from this swim lane to this swim lane.
things like that that can really help
you
be more efficient with what your
definition of done is and how you move
your tasks through it. Thoughts on that
one?
>> So, the last thing I'll really touch on
with this is holding yourself and your
team accountable is one of the best ways
to implement definition of done into
your workflow.
If your team really it should be a
personal practice because a lot of teams
in some companies don't even do this
which is bad but personally if you want
to be a good developer go from coding to
becoming a developer to really just keep
growing and improving and being the best
developer that you can you need to hold
yourself accountable and make sure that
every task you go into or you work you
look at with the mindset of what is the
definition of done? what is it that I'm
trying to complete with this and how
does this fit into not just what I'm
doing but the bigger picture because
sometimes you could be say hey build
this but in the bigger scope of things
that's not what needs to be it's
actually something else but kind of got
lost in perspective the best example I
can think of for that is go back to that
tree swing picture that's all over the
internet for software development starts
out with this is what was pitched a tree
swing you go through multiple iterations
roller coasters tree, no tree, and all
the customer really wanted was a rope
and a tire. They wanted a tire swing.
Defining definition of done helps you
avoid scope creep, but also helps you
ensure that the requirements stay on
task and get you the right product at
the end of the development cycle.
>> Yeah, we talk a lot about knowing your
why. Your definition of done is your why
for each individual task basically. It's
like it really is. the things that keep
you uh it's a guard rails for your your
work and to make sure that you stay on
task and stay on focus.
That being said, it is time to wrap this
one up. Uh as always, shoot us an email
at info developer.com. If you've got uh
suggestions, product ideas or anything
like that for topic ideas or product
ideas, I guess, as well, any of those
things, we'll be happy to hear from you.
Uh we want your feedback because we're
here for you. so we can build better
developers, you can build a better
podcast uh by letting us know what your
thoughts are and where you want to go,
future topics, uh areas of interest,
things like that. I know there are some
things we haven't spent a lot of time
on, so we can always go back to those.
Um, also you can check us out on X. You
can go out at developer.com. You can go
to or you can go developer. You can go
developer.com and we have plenty of
places for you to leave us feedback.
We've got a contact us form. You can
leave stuff there. You can, we have a
developer Facebook page. You can
definitely put stuff out there. However
you want to get a hold of us, we're
happy to get that feedback and
incorporate into us building a better
piece of sol a better solution, better
bit of content for you. Uh you can
always check us out if you're not on the
uh out on YouTube on the developer
channel. Uh, also if for some reason
you're tired of seeing our faces and you
want to just listen to us on audio,
wherever you listen to podcasts, uh, you
can find the Building Better Developers
Development Podcast.
As always, I appreciate your time.
Appreciate you hanging out with us for a
while. I appreciate you putting up with
my very lame uh, introduction in
Spanish. I'll try to like clean that
stuff up. Uh, go out there and have
yourself a great day, a great week, and
we will talk to you next time.
bonus material. So let's see, we are I
guess to
seven
DoD is a weapon against scope creep.
Keeps features from expanding endlessly.
Forces conversations on what's really
needed. Provides objective criteria for
complete. And then tips for developers
to advocate for a clear definition of
done. Push for DoD clarity uh early and
often. Use it to manage client
expectations. learn to f say let's meet
the definition of done first then
consider enhancements. So where do you
want to go with that?
>> So it kind of goes I think one of seven
and eight kind of go together. So I
think forces conversation on what really
is needed and learn to say let's meet
the DoD first.
This gets back to that why. Why are we
building this project? What is the need?
What is the MVP? If you focus on the MVP
and you focus on the requirements around
getting it done and the why then really
focusing on the definition of done for
that should be a no-brainer. It should
be fairly straightforward to stick to
what is our why and what it you know
what is an MVP that we need to get to
the end of the uh you know end of the
project. If you start getting features
that are not MVP then you are off track.
you need to stick to that MVP and then
focus on the definition of done to get
that MVP done. Once the MVP is done,
then maybe you can come back and look at
some other features and things at that
point. But that is a different
requirement set and a different
definition of done.
Yeah, I think I want to go with
I do I I you sort of stole my thunder,
but I think I want to go with that one
as well, which is basically like let's
finish the work first and then add to
it. I think that that is very often
where we need to go is that I think and
it that is it protects us as developers
as well. So when somebody comes at us
and says, "Okay, what about doing this?"
And we can go back to the ticket and
say, "Okay, is that in the ticket? Did
that get done?" And it's like, "Okay, so
we've done this and this and this." And
when they say, "Well, hey, we want to
make a change." Like, "Well, okay, well,
let's finish this first. Let's not go
back and change it because now then
we're going to have to roll a step back.
We've done these things based on that.
Let's try to get it." Now, it is a
little bit of a
a mini waterfall approach cuz part of
the thing with waterfall is like once
you say you're going to do it, you just
do it and it's like we'll fix it in the
next version. That's sort of what we're
doing here. We're talking about here,
but it really is like let's make sure
that
we get done what we need to get done and
then we'll worry about tweaking that and
enhancements and things like that. And
when you have a a defined process, then
it's going to help you because you're
going to be able to say, "This is where
we're at. This is how long it typically
takes us to get to the, you know, to
done." And so you can just sit back and
wait for x amount of time, and then
we'll be done, and then we can move on
to the next thing. So we can actually
build on that or make adjustments to
what's already been done as opposed to
changing it midstream.
Now to be fair though the waterfall
approach it can be waterfall like but
sometimes the MVP sticking to the MVP.
Yes you can make some changes within the
MVP but make sure it still sticks to the
MVP. If you stick to that then you can
still stay within the agile methodology
and that really applies to the agile
because you can pivot. Okay, the MVP
slightly changed because this feature
isn't quite flushed out. you will run
into that. But as Rob mentioned though,
sometimes it is waterfall because you do
have to kind of stick to what you're
trying to get done first before you can
pivot outside of the MVP.
>> Let me just like give an example on that
is if you are walking and you try to
pivot and you haven't planted your foot,
you're going to plant your butt
basically or your face. If so, you pivot
when you have like you have to settle
essentially. You have to actually have a
stable position to pivot. If you pivot
too much, if you pivot while you're in
the middle of working on something, you
are likely to fall on your butt just
like you would normally. Um, I've been
in too many situations where there is uh
there's this pivoting going on and we
don't get something done and you pivot
midstream and the next thing you know
it's like you've got partial stuff. So
use the done to get yourself to a point
where you're now stable enough that you
can pivot. Otherwise, things get out of
hand really fast and it gets really hard
to keep track of what are we doing,
where are we at, what have we, what is
done, what is not, what's in motion,
what needs to not be in motion and all
those kinds of things. So I think that
uh very much is something that can help
you to say yes, we'll be happy to pivot,
but let us like finish this thought
first. let us get to a resting point or
something that we can pivot and not try
to do it in mid-stream. And this will
help you with firefighting issues and a
lot of other things like that because
those are
uh those are the disruptions that will
be thrown at a sprint, you know, like
hey, change this or throw this in and
we're like, well, no, that's why we
protect our sprints as a scrum master.
That's why you do that is you don't want
to get in a situation where you're doing
too much uh zigging and zagging and
weaving and pivoting and the next thing
you know you really don't know what you
have. You're sitting there on mush
instead of actually solid ground.
I think it is time for me to move on
from the solid ground that I'm on, which
is the end of this episode. And we will
return. We're not done. There's plenty
more stuff out there. There's plenty of
a out there. And the AI is going to just
keep spitting stuff at us. and we're
going to keep talking about it because
we can until we run out of episodes from
that ch season, which we've got more
than a few left and then we'll figure
out where we want to go next. So, you
know, we're always open for new uh for
suggestions for future topics for future
seasons is the perfect time to do so
while we're sort of like starting to
think about where we may go next. You
know, where all the places are. Shoot us
an email, send us feedback really,
wherever you give us feedback, we can
take a look at that. happy to take your
uh whatever it is your suggestions are
and find a way to work that into what we
are doing. I do appreciate so much you
guys hanging out with us and uh we will
see you again next time.
[Music]
Transcript Segments
1.35

[Music]

29.76

All right,

32.32

little water. And

34.64

>> yeah, sorry I tripped you up in that.

36.399

You went you talked so long and you

38.32

talked through so many of the bullet

39.28

points in the first one. I kind of lost

40.96

the thread. So by having you paste that,

43.92

that allowed me to kind of keep track of

46.399

where you were going.

47.2

>> Yeah, that was a great idea. I hadn't

49.36

really thought of that. Um, let's see.

51.52

Did I just do it for this?

53.039

>> Yeah, I need the next one.

54.32

>> Okay, let's see now. do it for

57.84

>> because I floundered on that first one

59.28

because it's like I I thought I had the

60.879

thread and then I lost the thread. I'm

62.239

like crap, what was the thread? So, I

64.799

just kind of waffled through it. There's

67.52

a I mean there's Yeah, this one is a

70

lot. So, I'm going to give

72.479

it make it. Let's see. Is it done? There

74.88

we go. Not main

78.479

take this and shove it into Oh, by the

81.52

way, hello everybody. Um, we're

84.72

recording our way through here. Uh, so

87.84

I'm going to paste for you in the

90.4

podcast ideas. I'm just going to paste

92.24

the next one here.

95.439

So this episode we are going to do

101.119

defining done in agile. How to stay on

103.28

track and avoid scope creep. So this

106.72

will be a fun one because it is really a

108.32

followup to that last one of scope

111.6

creep. And now let's figure out maybe

113.2

how to avoid some scope creep. And I'm

117.6

going to stick with my Spanish as sucky

119.92

as do uno it may be.

124.24

Hola. Hello and welcome back to building

127.04

better developers developer podcast. I

129.52

am Rob Broadhead, one of the founders of

131.44

developure, also a founder of RB

134

Consulting. More about that in a second.

135.92

First want to talk about this season,

137.84

this series, this episode. We are in the

140.16

season doing building better developers

142

with AI. We're going back two seasons

144.08

ago I think it is and we're grabbing a

146.239

topic throwing it in AI and saying what

149.04

would you suggest for a podcast and then

150.959

we're basically analyzing that and it's

152.8

giving us some great things to talk

154.56

about. So that's what we're looking at

156.319

this episode. Our title for this one is

158.319

going to be defining done in agile how

160.879

to stay on track and avoid scope creep.

163.76

Now uh back to RB Consulting. We are a

167.12

company that helps others figure out the

169.36

best way to use technology. That's the

170.959

best way to look at it. Just like you

172.8

can do a financial audit or security

174.879

audit, you can also do a technical

176.56

assessment, which is very similar to it.

178.56

You know, technical audit, things like

179.76

that. Well, we're going to sit down.

181.28

We're going to help you figure out what

182.48

do you have, what what is your current

185.36

situation, and we're also going to sit

186.8

down and talk about your business

187.84

because that's really the most important

189.28

part about using technology is how to

191.92

leverage technology to do what you do.

194.72

We're going to help you walk through

195.76

your processes. What is it that you do

198.08

like in detail? So, it's a, you know,

200.64

think about it like sometimes we get too

202.08

much in our head. Just like how would

203.92

you explain to somebody how to tie a

205.44

shoe? There's probably business things

207.04

that you do that are along that same

208.8

line where you just know how to do it,

210.64

but to explain to somebody else, which

212.72

means to explain it to a computer or

214.72

technology can be a bit of a challenge.

216.48

So, we're going to help you bridge that

217.68

gap. We're going to help you understand

219.44

what's out there because there's a lot

220.959

out there. We spent a lot of time. We

222.799

are technology agnostic and so we're

224.799

going to find ways to help you take your

226.159

technology drunk junk drawer and clean

228.08

it up and through integration,

230.159

simplification, automation, innovation,

232.319

we're going to find the best approach

234.08

for you that custom recipe for success

236.72

so you can have a road map that you can

238.159

execute on or we can help you with that

240.239

as well. Good thing, bad thing.

244.64

Uh this is going to be like one of the

246.72

goofiest ones we've had maybe so far out

248.72

of a long list. Um,

252.159

good thing today was I was sitting there

253.92

and I was eating lunch and I had

256.079

something like get stuck between my

257.68

teeth and I was like, "Okay, I got to go

259.359

like get that thing out." And it came

260.799

free. The bad thing was when that came

263.12

free, I also had part of my tooth came

265.28

free. So, I had like a cracked tooth

267.36

that somehow had lost its uh its

270.88

strength or whatever. So,

273.36

not in a painful way. There's nothing

275.04

painful yet. I can drink hot and cold

276.639

liquids. not causing my head to explode

278.32

or anything, but enough that I'm going

281.44

to have to go find a dentist very

283.12

quickly and get all that kind of stuff

284.72

repaired. So, you know, sometimes the

286.88

simple things turn into not very simple

289.12

things. Sort of the story of my life

290.639

right now. Much like Michael's, which he

293.28

has re regailed us with in recent

296.56

episodes. Let's see how it's going there

298.24

this time as we check in with Michael

299.6

and he introduces himself. Hey

301.36

>> everyone, my name is Michael Malash. I'm

302.96

one of the co-founders of Developer

304.479

Building Better Developers. I'm also the

306.4

founder and owner of Envision QA, where

308.4

we help startups and growing companies

310.16

build better software faster with fewer

312.479

problems. Our services cover software

314.96

development, quality assurance, test

316.479

automation, and release support.

318.88

Companies come to us when they want to

320.32

avoid delays, reduce bugs, and launch

322.639

with confidence. Whether you're building

324.32

your first MVP or scaling a live

327.039

project, we make sure that your uh

329.6

software is reliable, efficient, and

331.6

ready for growth. You can learn more at

333.919

envisionqa.com.

335.919

Uh, let's see. Good thing, bad thing.

337.68

So, last time I talked about the water

339.68

issue, so that's been resolved. Um, I

342.72

guess good thing we now get to enjoy the

345.52

new toilets we had installed a month

347.919

ago. Uh, now that the water is working

350.32

again, uh, we can finally enjoy all the

352.8

upgrades we kind of did in the house,

354.16

which we weren't able to do, uh, last

356

time because we had no water. Uh, and as

358.639

far as bad things go, I got a project

360.88

that's kind of dragging out and just

363.12

dragging me down a little bit. So, but

365.28

weather's getting nice, so I'm not gonna

367.28

let it get me down.

369.68

>> Yes, weather has definitely been getting

371.12

nicer. It's been awesome enough that

373.12

I've actually had the windows open on a

374.8

couple of mornings and not been like

376.88

dying of heat exhaustion. So, it's

378.639

always good. So, we're going to dive

380.319

right in. This time, I followed up from

382.24

a prior post. So, it didn't give me like

384.16

any, you know, excellent idea or

385.68

anything like that. It just uh I said,

387.28

"Hey, how about doing this?" And it

388.72

said, "Absolutely. Here's a detailed

390.4

breakdown." And it gives us the same

392.319

kind of thing that we've had in the

393.44

past. So, it's a suggested episode

395.039

structure and item one with some bullet

397.199

points. We'll dive right in. What does

399.199

done really mean in agile? Explain the

401.84

agile principle of a definition of done.

404.8

Do contrast it with just finished

407.68

coding. Why clear done criteria are

410.8

critical for teams.

414.4

I want to I really want to go with the

416.88

like jump to the end there. Why clear

418.88

done criteria are critical for teams

421.84

because

423.52

this is one of those things that when we

425.12

we sometimes when we start a project and

426.96

we say we need to make sure that one of

428.639

the first things we do is we define what

430.24

done is is that people look at us like

432.479

we've got three heads or something like

434.16

that. The thing about done is that there

438.639

are varying understandings of what done

441.28

in a software project in particularly

442.96

mean. Like does done mean that you just

444.72

wrote some code? Does it mean that you

447.12

wrote unit tests with that code? Does it

449.44

mean that you have done a full it's gone

452.56

through QA? Does it mean that it's been

454.639

deployed? Does it mean that the user is

456.24

using it? There's a lot of different

457.919

ways you can look at done. And within a

460.88

development project, there's also things

462.4

that done may include things like

465.52

uh has it been properly, you know,

467.199

besides unit test, has it been properly

469.28

commented or documented? Has it been

471.599

committed to version control? Has it

473.36

been merged into a branch or something

475.52

of those nature? Has the uh the ticket

478.639

that originally, you know, that

480

originated that task been moved through

482.24

its processes and moved to complete so

484.319

that it is done? Um has it been signed

487.36

off on? There are things like that that

489.039

are very much part of your uh your

492.16

development process and your standards

494.56

and your team or even your corporate

496.639

process and standards that need to be

499.12

taken under you know consideration when

501.599

you consider what done is some places

503.84

done may mean that it has to actually go

505.68

through uh like a code review and a

507.759

security analysis review and and all of

510.16

these other things that are way way more

514.32

than

516.399

done in the hey I wrote the code and I

520

tried it on my local machine and it

522.08

works. And I'm using air I'm using air

524.8

quotes everywhere here for those that

526.399

can't see it because that's sort of how

528

it is. It's like

530.399

what really is done and we need to make

532.08

sure we do that because that is the that

534.56

is the target for whatever we're doing.

536.16

So if we ask somebody is it done we're

538

not going to get well sort of or yeah

539.839

but it's not or it's kind of or any of

543.2

that. You need to you need to know is it

545.279

done or is it not because that's going

546.88

to be a key part of scope creep and

550

estimation and things like that. So

552.24

where do you want to pick this one up?

555.2

>> So yeah, so you kind of touch on a lot

558.88

of things. I'm going to go with

559.92

contrasting with just finished coding

561.76

because one of my biggest pet peeves is

566.64

you do all this work or a developer does

568.64

a lot of work and they say they're done,

571.6

they push the code up and then it gets

574.08

to testing and you go down and you sit

576.399

there and you read the the ticket and

577.92

you're like the tester's reading the

580.56

ticket and they're like what is done?

582.88

What did you do? you know, it's not

585.68

clear in the requirements what it is

588.399

that they were supposed to do. So, what

590.32

did you work on? So,

593.279

when you're working on the requirements,

595.04

the definition of done needs to be clear

596.959

for everyone that reads the ticket

599.839

because if you're working on the ticket,

602.32

um you're working on this change, you

604.8

want to make sure that the change is

607.6

what is implied in the ticket. There

610.08

have been times where I have made

612.16

mistakes where I read the ticket one

614.32

way, someone else reads the ticket

616

another way and what gets implemented is

618.56

not what was the requirement for the

620.88

definition of done. And you run into

622.88

these situations when the requirements

625.76

may be clear but may not be clear enough

628.88

to really define the definition to done.

632

Case in point, you could have I'll just

634.88

pick on login screen because login

636.64

screen is just about everywhere. You

638.48

could have a situation where I have a

640.079

login screen and it's you basically were

643.36

told, hey, set it up to where a

645.36

registered user can log in with username

647.6

and password. Cool. I write the code. I

651.36

can log in. Now, it gets to the tester

654.32

and they're going to read that as okay.

657.04

So, I can log in with username and

658.72

password. They it does not specify

661.76

things like um case sensitivity, uh

664.8

special characters, things of that

666.56

nature. So if they go to test a login as

670.24

typical login security which has been

672.64

around for a while they're going to

674.16

break things. They're going to think

675.279

well why is this not working as

677.519

expected? So they're you need to make

680.24

sure that within the requirements

681.92

definition of done is some of the things

684.88

of what is done. So done would be

687.76

implied user can log in using any

690.48

username any password or if there are

693.44

other requirements then you need to lay

695.44

that out that hey username can only be

698

lowercase username can be camel case

700.48

username could be any case as long as

702.8

the username matches a user. These are

705.519

not just requirements but these are what

707.76

needs to essentially be the story for

710.32

testing so that you know it's done. So

712.32

if someone picks this up or a user goes

714.32

to test this, they know specifically how

716.64

to test it to see how that works. Now,

719.279

if it's a backend change, that's a

720.64

little more difficult. You're going to

721.76

have to have another developer test

723.12

that. But this is to me from a

725.68

test-driven developer approach what

728

definition of done means to me. Because

729.76

if I can essentially lay out how this

732.88

works, then I can code it. If there are

736.48

ambiguities in what I need to do, then

739.36

it is not a clear definition at all.

743.12

This sort of goes right into the next

744.399

point. Why ambiguous done leads to scope

746.639

creep when done means different things

749.04

to different people leads to unfinished

751.839

work. uh hidden bugs or endless tweaking

754.72

creates mismatched expectations between

756.56

DevQA and clients which is really what

759.44

we just talked about is

762.88

and it's here it's that it's that back

764.88

and forth and I'm going to probably go

766.56

right into the next one since Michael

767.92

Sor stole this one uh and let him talk

770.48

about the next couple items and just

772.32

touch on this real quickly to give my

773.76

thoughts is really what the problem is

775.92

it does become very frustrating when you

777.839

don't know what done is because you have

779.2

and it it really is very much the

781.279

developers QA and customer because you

784.079

will have stuff that for example goes to

785.92

QA and it's to them not done. It hasn't

789.839

covered the requirements that they think

791.44

it needs to. So they kick it back to the

793.519

developers and they're like why is the

794.88

developer not getting the work done? The

796.16

developers like why is the QA, you know,

798.639

on my butt all the time? Why they keep

800.32

changing stuff? Why they why can't they

801.92

just accept it? And of course the same

803.839

thing happens with the customers like

805.12

it'll go all the way to the customer.

806.079

The customer's like this isn't what I

807.279

wanted. This isn't how I needed. they

808.639

miss stuff and it goes back and people

811.36

get frustrated. So it does lead to scope

814.639

creep and it's really more of that the

816.72

scope creep tends to be that like now

818.399

people start expanding what they want to

821.12

talk about or or add to the requirements

823.36

to try to make sure that they can figure

824.8

out what you know that it actually gets

826.56

done. It's almost shoot for the you know

828.8

the star so you fail and hit the moon.

831.04

It's that kind of stuff. It's just a bad

833.68

situation to be in. Real world examples,

836.639

stories from teams where unclear done

838.56

led to delays or rework. How a strong

841.199

definition of done saved another team

843.12

from project chaos. I'm going to throw

844.959

that one to you.

848

Yeah. So, I I'll run with this one

849.68

because

852.16

the company I've worked for over the

854.079

last year's transition. We were acquired

856.56

by another company. And before we were

858.88

acquired, we had clear

861.519

requirements. We knew what needed to be

863.199

done. Everything we had, we had

865.36

definition done. Our tickets were being

867.92

completed on time. We met the

870

expectations. Yes, there was

871.6

occasionally some rework because like

873.92

Rob said, when you deal with reports,

875.44

you run into, oh, that's a simple

876.959

change. But outside of reporting, almost

879.6

everything we did was able to be

881.36

completed on time, on task, and we knew

884.72

what it was we were doing and could test

886.48

it. In that transition shift to the new

889.44

company as we were pulled in

892.48

almost every ticket I have had it feels

895.92

like it is a monolithic spike. Every

899.76

single ticket I have is ambiguous. It is

902.72

basically make this work in inside of

905.44

this ecosystem.

907.519

Hell or high water just make it work.

909.6

The problem is this is such a monolithic

911.92

application that you have no idea where

914.88

to go within this application. There are

917.44

multiple teams working on this project

919.519

and unfortunately even though we are in

921.6

the project process of transitioning

924

into this new ecosystem, we're still

925.839

making change in the old ecosystem. So

927.839

you could have one piece you get it

930.16

working and then go back and pull the

931.68

latest change. What you just redid this

933.68

or oh you changed this now it doesn't

935.199

work. So this is so frustrating that

939.12

having clear guidelines and definition

941.92

of done really avoids that and can

944.399

hopefully get you across projects and

946.399

meet your deadlines.

950.16

>> Excellent. Good examples. And I'm going

952.48

to dive into the next one because we're

953.759

going to try to get through a couple of

954.88

these points this time. uh components of

957.279

a good definition of done code complete

959.759

and reviewed automated test passing

962.079

documentation updated deployment to

964.639

staging production verified acceptance

967.12

criteria met and signed off I think

969.36

that's a really good start and I I think

971.68

that I want to sort of touch on these

973.04

real quick uh each of these because they

974.959

code complete is and reviewed is

979.12

something that I think we should do on a

980.639

regular basis I think there is very much

982.32

a value to reviewing code I have worked

985.68

on projects that review have code

987.519

reviews very strong all the way to don't

991.12

do it at all and the strong honestly the

995.199

stronger the better. I think yes it

996.88

takes time, there's effort, there's it

998.639

can be frustrating because you get

1000.639

something kicked back to you. It's like,

1001.839

hey, you need to, you know, make this

1003.92

conform, but but it does pay off in the

1007.839

long run. And this is from somebody that

1009.279

there's more than a few times I've been

1010.72

frustrated with a code review,

1012

especially uh the code analysis, static

1014.16

analysis stuff I do all the time. I'll

1016.16

get frustrated with something, it gets

1017.519

kicked back and it says you should do

1018.8

this and I'm like, I don't really want

1020.16

to do it. like I'm just gonna and

1021.68

there's always that temptation and

1022.959

sometimes I fail I fall for it to just

1024.88

say you know what I'm going to pass it

1026

anyways and we're going to move on but

1029.28

there is also a value in uh in doing

1031.76

those uh automated test passing is like

1035.039

I will I've been on those where it's

1036.959

like okay I'm creating tests for

1038.319

everything and I've been a situation

1039.52

where I'm like all right I'm going to

1040.88

whip a couple of tests out we're going

1042

to test it we're going to move on um yes

1045.919

going through and doing those tests can

1047.439

be timeconuming but particularly getting

1049.679

those autom automated test built will

1052.16

help you in the long run. And yes,

1053.76

sometimes they fail because you change

1055.919

uh requirements or something like that

1057.44

change, but it also gives you actually

1059.039

an extra uh leverage to not change stuff

1062.88

to say look if we have to change this

1064.559

and I have used this before. If we have

1066.4

to change it, the change is not that big

1068

a deal, but we have to retest all of

1071.2

this stuff or we have to update all of

1073.12

these tests and then suddenly that thing

1075.76

that was like, yes, it's a little change

1078

in air quotes actually is something that

1080.4

is not a small impact and we have to

1083.76

actually think about that. Uh, and you

1086.08

could say, well, just skip the testing.

1087.6

But it's like, well, wait, but any of

1088.88

those places it's testing, if one of

1090.48

those fails, then we would have to go

1092.48

find it. So, you're going to have to

1094.16

keep doing it.

1095.84

documentation update. We skip this all

1098.16

the time. I know everybody does, but it

1100.32

really should be something that we build

1102.88

into our processes to make sure that's

1104.64

part of done is that we, you know,

1107.36

wherever we need to update

1108.32

documentation, we do. So, I think the

1111.12

deployment thing is something is getting

1113.52

better with CI/CD and some of those

1115.12

kinds of things and pipelines, but I

1116.64

think we don't do it enough. I think

1118.48

it's very good to deploy it and run it

1121.2

through its tests on the on the new

1123.12

site, make sure everything goes. Um, and

1125.679

of course actual done is that it's been

1128.16

signed off on. So, we probably have a

1131.6

done during a sprint or done for a

1134

certain step, but that is not done for

1136.4

that feature because it's not done until

1138.88

we can go all the way through and

1139.919

somebody can actually use it. Uh,

1142.32

thoughts on those?

1143.44

>> Yeah, I want to briefly touch on that.

1144.799

I'm going to just go right into the next

1146.559

one. But one of the things that Rob

1148.48

touched on, you know, the automated

1149.76

testing, you know, going back and fixing

1152

those tests, make sure you don't let

1153.84

your tests get stale or just don't

1156.48

delete tests that are failing. A lot of

1159.679

situations, if you're rushing to get to

1161.36

the end, they I've seen developers do

1163.52

this where they don't maintain tests.

1165.12

They just modify the test enough to make

1168.559

the test pass, but not really meet the

1170.799

requirement that the test is passing. So

1172.48

make sure that you keep your tests

1175.76

somewhat fresh to the requirements as

1178.32

they change. Uh I'm just going to jump

1180.559

into five. Uh who creates and maintains

1182.72

the definition of done? You know project

1184.64

owners, scrum masters and the dev teams

1186.72

collaborate and uh DoD evolves as the

1189.919

project matures. I'm going take that

1192.24

first one. You know who creates and

1194.16

maintains the definition done? The team,

1196.16

your project owners, the scrum masters,

1197.76

the dev teams. If you are working as the

1200.24

developers, chances are within your team

1202.88

itself, you as a team need to sit down

1207.039

at least quarterly agree on what your

1210.48

team

1212

wants for definition of done. Everyone

1215.039

should be on the same page so that there

1216.64

is no ambiguity, no confusion of when

1219.679

you scope out tickets, you flush out the

1222.16

requirements that when you pick a

1223.84

ticket, you set, hey, I'm going to get

1225.76

it done in this amount of time. then

1228.48

you're going to get it done in that

1229.84

amount of time. And this does require

1232.32

working with the project owners and the

1233.84

scrum masters. At the beginning of this,

1235.919

it's going to be difficult, but in the

1237.76

long run, it's going to save you a lot

1239.039

of time, headache, and hassle. What are

1241.52

your thoughts, Rob?

1242.88

>> Yeah, I think in that that's the whole

1244.48

point is that if you have problems with

1246.24

it early on, if you're if the scrum

1248.32

master, the product owner u don't even

1251.36

the dev team, if they don't have a good

1253.919

definition of dumb, that should show up

1255.76

in your retrospective. That should be

1257.679

something that gets flagged. That should

1258.88

be something that you correct as you

1260.32

move forward because that's part of the

1263.28

whole idea is that agile should be

1264.96

getting better as you go. And honestly,

1267.919

there have been more part of the reason

1269.12

that I know that it's important to

1270.72

define done is that we have had this

1272.4

come up in sprints during as we've gone

1275.679

through an agile project and we've

1277.919

gotten to a point where we're like, you

1279.039

know what, we need to do a better job of

1280.799

done. Maybe we need to add something. We

1282.64

need to change something, tweak

1284.4

something. we've gotten away from maybe

1286.4

one of our steps that now we're not

1287.919

doing it right. So, let's go back to it.

1289.52

Code review process. There been more

1290.96

than a few times where it's like we need

1292.159

to adjust the code review process. Uh

1294.32

bring more people in, bring less people

1295.84

in,

1297.44

provide different uh a different format

1299.6

of feedback. Um things or you know, less

1303.28

feedback, more feedback, uh smaller

1306.24

chunks of work so they're easier to

1307.679

review. There's a lot of that kind of

1308.88

stuff that goes on.

1311.2

We're cruising right along. So um how to

1315.36

implement definition of done in your

1317.84

workflow incorporate into user stories

1320.72

and sprint planning use checklists or

1322.559

tools like Jira, GitHub and notion make

1324.96

definition of done visible and agreed

1326.559

upon by all stakeholders. Uh and this

1329.679

really is just like once you've defined

1332.72

done you should document it. There

1334.159

should be something in your it should be

1336

in your uh your team documentation, your

1339.44

development processes, your project

1342.24

processes that this is what done looks

1344.88

like. These are the steps. These are the

1346.88

bullet points that have to be a part of

1348.559

that. They don't have to be included in

1350.4

order for us to actually be done.

1353.919

And then within that is we can then if

1358.32

we're using this especially good if

1359.52

you're using like you know Jira or one

1361.12

of those kinds of things Trello or Son

1362.64

or whatever it is that when it goes into

1365.679

the done column then we know that all

1369.039

those things have actually been

1370.48

completed and it's not bad in some of

1372.24

those that you have you know sometimes

1373.919

the the columns the swim lanes that

1376.08

you're moving your ticket through are

1378.799

all of the things to define done. So

1380.64

maybe it's like you start out and then

1382.08

it's being coded and then once coding's

1383.919

done it goes to unit testing and once

1385.84

unit testing it goes to QA review and

1387.52

then it goes to code review or you know

1389.76

and like and not necessarily in that

1391.28

order but it's like you can in your swim

1394.159

lanes document all of the things that

1396.08

need to be done and then that should

1397.84

move through and then you can even have

1399.36

things around that. You can have logic

1400.72

that says it can only go from this

1402.24

column to this swim lane to this swim

1404.32

lane and only this person can move it

1405.919

from this swim lane to this swim lane.

1407.76

things like that that can really help

1409.28

you

1410.88

be more efficient with what your

1412.64

definition of done is and how you move

1414.64

your tasks through it. Thoughts on that

1417.039

one?

1417.76

>> So, the last thing I'll really touch on

1420.24

with this is holding yourself and your

1423.679

team accountable is one of the best ways

1425.76

to implement definition of done into

1427.52

your workflow.

1429.2

If your team really it should be a

1432

personal practice because a lot of teams

1433.76

in some companies don't even do this

1435.6

which is bad but personally if you want

1438.159

to be a good developer go from coding to

1440.88

becoming a developer to really just keep

1442.88

growing and improving and being the best

1445.919

developer that you can you need to hold

1448.08

yourself accountable and make sure that

1450.4

every task you go into or you work you

1453.36

look at with the mindset of what is the

1455.76

definition of done? what is it that I'm

1457.919

trying to complete with this and how

1459.76

does this fit into not just what I'm

1462.159

doing but the bigger picture because

1463.76

sometimes you could be say hey build

1466.159

this but in the bigger scope of things

1468.159

that's not what needs to be it's

1469.76

actually something else but kind of got

1471.6

lost in perspective the best example I

1473.84

can think of for that is go back to that

1475.919

tree swing picture that's all over the

1478

internet for software development starts

1480.64

out with this is what was pitched a tree

1483.679

swing you go through multiple iterations

1485.84

roller coasters tree, no tree, and all

1488.88

the customer really wanted was a rope

1491.44

and a tire. They wanted a tire swing.

1494.559

Defining definition of done helps you

1496.72

avoid scope creep, but also helps you

1499.76

ensure that the requirements stay on

1501.44

task and get you the right product at

1504.32

the end of the development cycle.

1507.12

>> Yeah, we talk a lot about knowing your

1508.799

why. Your definition of done is your why

1511.36

for each individual task basically. It's

1513.6

like it really is. the things that keep

1515.84

you uh it's a guard rails for your your

1518.4

work and to make sure that you stay on

1519.76

task and stay on focus.

1522.48

That being said, it is time to wrap this

1524.72

one up. Uh as always, shoot us an email

1527.6

at info developer.com. If you've got uh

1529.84

suggestions, product ideas or anything

1531.76

like that for topic ideas or product

1534.159

ideas, I guess, as well, any of those

1536

things, we'll be happy to hear from you.

1537.52

Uh we want your feedback because we're

1539.279

here for you. so we can build better

1540.799

developers, you can build a better

1542.24

podcast uh by letting us know what your

1544.4

thoughts are and where you want to go,

1545.6

future topics, uh areas of interest,

1548.08

things like that. I know there are some

1549.52

things we haven't spent a lot of time

1550.559

on, so we can always go back to those.

1552.72

Um, also you can check us out on X. You

1556.08

can go out at developer.com. You can go

1557.919

to or you can go developer. You can go

1560.559

developer.com and we have plenty of

1563.2

places for you to leave us feedback.

1564.799

We've got a contact us form. You can

1566.24

leave stuff there. You can, we have a

1568.48

developer Facebook page. You can

1569.84

definitely put stuff out there. However

1572.159

you want to get a hold of us, we're

1573.76

happy to get that feedback and

1575.52

incorporate into us building a better

1578.72

piece of sol a better solution, better

1580.48

bit of content for you. Uh you can

1582.96

always check us out if you're not on the

1585.039

uh out on YouTube on the developer

1587.039

channel. Uh, also if for some reason

1589.039

you're tired of seeing our faces and you

1590.88

want to just listen to us on audio,

1592.48

wherever you listen to podcasts, uh, you

1594.559

can find the Building Better Developers

1596.48

Development Podcast.

1598.88

As always, I appreciate your time.

1601.44

Appreciate you hanging out with us for a

1603.279

while. I appreciate you putting up with

1605.2

my very lame uh, introduction in

1607.76

Spanish. I'll try to like clean that

1609.44

stuff up. Uh, go out there and have

1611.76

yourself a great day, a great week, and

1613.679

we will talk to you next time.

1617.44

bonus material. So let's see, we are I

1622.24

guess to

1625.36

seven

1627.2

DoD is a weapon against scope creep.

1628.88

Keeps features from expanding endlessly.

1631.039

Forces conversations on what's really

1632.96

needed. Provides objective criteria for

1635.2

complete. And then tips for developers

1637.12

to advocate for a clear definition of

1638.799

done. Push for DoD clarity uh early and

1641.84

often. Use it to manage client

1643.52

expectations. learn to f say let's meet

1646.559

the definition of done first then

1648.72

consider enhancements. So where do you

1650.32

want to go with that?

1651.52

>> So it kind of goes I think one of seven

1654.64

and eight kind of go together. So I

1656

think forces conversation on what really

1658.08

is needed and learn to say let's meet

1661.52

the DoD first.

1664.08

This gets back to that why. Why are we

1666.72

building this project? What is the need?

1668.88

What is the MVP? If you focus on the MVP

1672.64

and you focus on the requirements around

1674.72

getting it done and the why then really

1678.88

focusing on the definition of done for

1680.72

that should be a no-brainer. It should

1682.399

be fairly straightforward to stick to

1685.279

what is our why and what it you know

1688.399

what is an MVP that we need to get to

1690.88

the end of the uh you know end of the

1692.64

project. If you start getting features

1695.76

that are not MVP then you are off track.

1698.399

you need to stick to that MVP and then

1700.96

focus on the definition of done to get

1703.039

that MVP done. Once the MVP is done,

1705.919

then maybe you can come back and look at

1707.76

some other features and things at that

1709.6

point. But that is a different

1711.36

requirement set and a different

1712.96

definition of done.

1716.48

Yeah, I think I want to go with

1720.399

I do I I you sort of stole my thunder,

1722.72

but I think I want to go with that one

1723.919

as well, which is basically like let's

1726.399

finish the work first and then add to

1729.279

it. I think that that is very often

1732.799

where we need to go is that I think and

1734.96

it that is it protects us as developers

1737.039

as well. So when somebody comes at us

1738.799

and says, "Okay, what about doing this?"

1741.279

And we can go back to the ticket and

1742.64

say, "Okay, is that in the ticket? Did

1745.919

that get done?" And it's like, "Okay, so

1747.36

we've done this and this and this." And

1749.36

when they say, "Well, hey, we want to

1750.799

make a change." Like, "Well, okay, well,

1752.32

let's finish this first. Let's not go

1754.32

back and change it because now then

1755.6

we're going to have to roll a step back.

1756.88

We've done these things based on that.

1758.64

Let's try to get it." Now, it is a

1760.32

little bit of a

1762.64

a mini waterfall approach cuz part of

1765.279

the thing with waterfall is like once

1766.559

you say you're going to do it, you just

1767.76

do it and it's like we'll fix it in the

1770

next version. That's sort of what we're

1772.399

doing here. We're talking about here,

1773.52

but it really is like let's make sure

1776.559

that

1778.159

we get done what we need to get done and

1780.559

then we'll worry about tweaking that and

1782.72

enhancements and things like that. And

1784.72

when you have a a defined process, then

1789.039

it's going to help you because you're

1790.32

going to be able to say, "This is where

1792.08

we're at. This is how long it typically

1793.919

takes us to get to the, you know, to

1795.6

done." And so you can just sit back and

1798.559

wait for x amount of time, and then

1800.799

we'll be done, and then we can move on

1802.08

to the next thing. So we can actually

1803.76

build on that or make adjustments to

1805.679

what's already been done as opposed to

1807.12

changing it midstream.

1809.679

Now to be fair though the waterfall

1812.159

approach it can be waterfall like but

1815.279

sometimes the MVP sticking to the MVP.

1818.399

Yes you can make some changes within the

1821.679

MVP but make sure it still sticks to the

1824.08

MVP. If you stick to that then you can

1826.72

still stay within the agile methodology

1830.159

and that really applies to the agile

1831.76

because you can pivot. Okay, the MVP

1833.679

slightly changed because this feature

1835.919

isn't quite flushed out. you will run

1838.32

into that. But as Rob mentioned though,

1840.399

sometimes it is waterfall because you do

1842.399

have to kind of stick to what you're

1843.679

trying to get done first before you can

1845.12

pivot outside of the MVP.

1848

>> Let me just like give an example on that

1850.48

is if you are walking and you try to

1853.12

pivot and you haven't planted your foot,

1856.399

you're going to plant your butt

1858.08

basically or your face. If so, you pivot

1862.24

when you have like you have to settle

1864.48

essentially. You have to actually have a

1867.36

stable position to pivot. If you pivot

1869.84

too much, if you pivot while you're in

1871.52

the middle of working on something, you

1873.919

are likely to fall on your butt just

1876.64

like you would normally. Um, I've been

1878.72

in too many situations where there is uh

1882.159

there's this pivoting going on and we

1883.84

don't get something done and you pivot

1885.36

midstream and the next thing you know

1887.84

it's like you've got partial stuff. So

1891.12

use the done to get yourself to a point

1893.039

where you're now stable enough that you

1895.039

can pivot. Otherwise, things get out of

1897.12

hand really fast and it gets really hard

1898.48

to keep track of what are we doing,

1899.76

where are we at, what have we, what is

1902

done, what is not, what's in motion,

1903.919

what needs to not be in motion and all

1905.919

those kinds of things. So I think that

1907.919

uh very much is something that can help

1909.44

you to say yes, we'll be happy to pivot,

1911.519

but let us like finish this thought

1914.08

first. let us get to a resting point or

1916.32

something that we can pivot and not try

1918.72

to do it in mid-stream. And this will

1921.039

help you with firefighting issues and a

1922.799

lot of other things like that because

1924.799

those are

1926.96

uh those are the disruptions that will

1928.72

be thrown at a sprint, you know, like

1930.72

hey, change this or throw this in and

1932.32

we're like, well, no, that's why we

1934.08

protect our sprints as a scrum master.

1936.24

That's why you do that is you don't want

1937.519

to get in a situation where you're doing

1939.12

too much uh zigging and zagging and

1941.44

weaving and pivoting and the next thing

1943.44

you know you really don't know what you

1944.72

have. You're sitting there on mush

1946.08

instead of actually solid ground.

1949.36

I think it is time for me to move on

1950.96

from the solid ground that I'm on, which

1952.559

is the end of this episode. And we will

1955.279

return. We're not done. There's plenty

1956.88

more stuff out there. There's plenty of

1958.08

a out there. And the AI is going to just

1960.399

keep spitting stuff at us. and we're

1962.399

going to keep talking about it because

1964.159

we can until we run out of episodes from

1966.399

that ch season, which we've got more

1968

than a few left and then we'll figure

1969.679

out where we want to go next. So, you

1971.76

know, we're always open for new uh for

1973.919

suggestions for future topics for future

1976.559

seasons is the perfect time to do so

1978.559

while we're sort of like starting to

1980

think about where we may go next. You

1982.88

know, where all the places are. Shoot us

1984.96

an email, send us feedback really,

1986.799

wherever you give us feedback, we can

1988.159

take a look at that. happy to take your

1990.24

uh whatever it is your suggestions are

1991.84

and find a way to work that into what we

1994.159

are doing. I do appreciate so much you

1996.88

guys hanging out with us and uh we will

1999.36

see you again next time.

2002.99

[Music]