📺 Develpreneur YouTube Episode

Video + transcript

CYA Practices in Software Development

2024-03-26 •Youtube

Detailed Notes

Welcome back to another insightful discussion on software development! In this episode, Michael and Rob delve into the critical topic of CYA practices—Cover Your Ass practices—in the realm of software development. As seasoned professionals in the industry, we've encountered our fair share of challenges and learned valuable lessons along the way. Our goal today is to share some of these experiences, insights, and strategies with you, our audience so that you can navigate your own projects more effectively and avoid common pitfalls.

Understanding the Importance of CYA Practices

We start our conversation by reflecting on recent experiences with clients who inadvertently overlooked crucial details in their project agendas. From forgotten tasks to budget uncertainties and unexpected data issues, these situations underscore the importance of robust CYA practices. Whether it's about status reporting, communication, or documentation, having a clear paper trail ensures accountability and transparency.

The Role of Clean Code and Documentation

One of the cornerstones of CYA practices is maintaining clean code and thorough documentation. Michael and Rob emphasize the significance of writing code that is functional, well-documented, and easy to understand. Clean code serves as a source of truth, enabling developers to navigate through the project's intricacies efficiently. Additionally, comprehensive documentation acts as a blueprint for the software's functionality, facilitating smoother transitions for future developers or team members.

Integrating Testing into CYA Practices

A crucial aspect of CYA practices is integrating robust testing methodologies into the development process. We discuss the importance of test-driven development, where tests serve as documentation and use cases for the software's behavior. By prioritizing testing at every stage, developers can catch bugs early, ensure code reliability, and mitigate risks associated with unforeseen edge cases.

Navigating Challenges and Motivating Team Members

As developers, we often encounter situations where stakeholders might find adherence to CYA practices tedious or overlooked. However, we stress the importance of staying motivated and focused on the long-term benefits of these practices. Whether it's adhering to requirements, addressing edge cases, or maintaining testing standards, prioritizing quality over shortcuts ultimately pays off in the form of stable, reliable software.

Embracing a Culture of Accountability

In a rapidly evolving software landscape, embracing a culture of accountability is paramount. Everyone from project managers to developers plays a role in upholding CYA practices and ensuring project success. By fostering open communication, thorough documentation, and a commitment to quality, teams can mitigate risks, streamline development processes, and deliver exceptional results.

As we conclude our discussion, Michael and Rob reiterate the importance of CYA practices in software development. By embracing documentation, clean code, testing, and a culture of accountability, developers can navigate complex projects more effectively and mitigate risks along the way. Remember, the extra effort invested in CYA practices today can save countless headaches tomorrow, ensuring success in the ever-changing software development landscape.

Thank you for tuning in to another episode of Develpreneur. We hope you found this discussion insightful and valuable for your own software development endeavors.

Additional Resources

* CYA Documentation: Getting Started With Consulting - https://develpreneur.com/cya-documentation-getting-started-with-consulting/

* Cover Your Assets – The CYA Anti-Pattern - https://develpreneur.com/cover-your-assets-the-cya-anti-pattern/

* The Importance Of Writing Readable Code - https://develpreneur.com/the-importance-of-writing-readable-code/

* Clean Code Handbook Software Craftsmanship - https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

* Behind the Scenes Podcast Video - https://www.youtube.com/playlist?list=PLxXUHr7mZ-jF8Ip1xF8LUyY97Uzh5QWRq

Transcript Text
[Music]
well hello and welcome back we are here
once again going through another uh
little discussion here between myself
and Michael we are talking about RB
Consulting we talk about Invision QA we
talk about develop andur and the
building better developers site and all
things that are sort of you know bugging
us a little bit and Lessons Learned
along the way as we are launching
advancing and rebooting some companies
so figure if nothing else you know you
can hopefully uh learn from some of our
mistakes and not suffer the same pain
points we are
and uh welcome in Michael what's how's
your day
going pretty good uh it's been a pretty
good week so far uh how about you it has
been uh it's been a fun one it's uh this
is one of those it's a had a great
interview today or meeting today with a
customer and these are these are the fun
ones that you occasionally get because
he he sends me an email and he's like
hey we want to talk about A and B and C
I like okay great we'll talk about these
things
and we get into the call and the one had
already been done had been done like
months ago and he'd forgotten about it
the other one he suddenly realized he
wasn't sure he had the budget for it
right now and the other one uh he was
like well I think we're going to do this
but I'm not really sure about the value
and that was sort of the same thing as
he ended up sort of backing out and
saying oh well maybe it was one of those
that was uh it only worked on the new
data they didn't want to go back and fix
old data and it turned out that it works
fine with the new data he was dealing
with W cany data so one of the things
that he had explicitly chosen to do he
got bit
by so this is I think this is one that
will lead us into I think our podcast
this time I want to do a little um I
guess we'll talk about like cya kind of
stuff because this something I don't
think we've talked about recently as
much we have touched on in the past but
it's the idea of like status reporting
and communicating and making sure that
you're you're clear on what's being done
and also that you have essentially a
paper trail of some sort so you can look
back and say what did I get done and
when did I get it done sound good does
that sound like a fun topic for this
time
around oh yes definitely uh in fact
we've had similar
conversations uh at work and I've had
similar conversations with customers
along those same lines so I I love this
um so why don't you kick it off then
with kind of the use case or where this
came into play this week with uh these
customers we'll do so while you guys get
to see us kick this off on the audio
side again hello and welcome back thank
you for tuning in we are here uh just
coming right through your ear holes
building better developers developer
podcast once again this episode we're
going to get into a little cya
essentially it's uh yes you could talk
about documentation or communication but
at the end of the day it is a little bit
of a cya kind of a topic and the reason
this came up this time is I had a
customer call
today that was uh it initially it's one
of the these where like hey here's the
agenda this is what we want to talk
about great and so we get into the call
and everything's kicks off and right
away the first item we start talking
about it's like I think that's already
there and sure enough it's there it's a
non-issue it's already been taken care
of taken care of months ago it's just
this is one of those where you have
somebody that is not the front line
user and they don't realize necessarily
exactly everything that's going on which
is also an interesting we're going to
talk about because this is somebody that
gets regular status just doesn't
probably read the statuses very closely
and so you know sometimes you have to
look at how you communicate such
statuses but then he had another item
this one we got into the call and he
realized ah I'm not sure I got the
budget for that so let's like hold off
on that so it's he like throws out that
you know that parro and then it's like
oh wait wait maybe we're not going to do
that right now and then he got to
another one and it was well we need to
look at it and it turned out it's one of
these things that the data they were
looking at was wrong it only worked for
new data not old data he ran into it
with the old data it was something he
had explicitly said we don't want to
deal with the old data we're only going
to do this for the new data and so
suddenly the entire agenda it was
basically the call ended up he's like
wow it was really guy good talking to
you guys again at least it was one of
those where just you know nothing
nothing really useful came out of it
other than just you know a little bit of
FaceTime with the
customer so I guess well you said that
you've had some stuff this week that's
that's or recently that is in that same
line so what is the what has been your
experience along those lines
lately so recently especially uh so with
a lot of us weide hustles I also still
work for a full-time job for a software
company and one of the complaints we've
run into recently is we started
rewriting three Pipelines
of our application we had some Legacy
software we decided to just start
writing it the problem we ran into is we
started this project six months ago and
we really didn't have a clear road map
as to what was going to happen in q1
well here we are in q1 and we have
deadlines that are in 30 days well we
have code that is where the business
things were at one place but we're
really at another place and if we
actually had understood that oh this
deadine coming we would put more hands
on something sooner instead of this kind
of little short mad the end in this last
Sprint or two uh the other thing I've
run into is even within the rewrite some
of the code we're putting out there is
very cumbersome very large and very hard
to follow so one of the things uh as we
talk about this uh the C is what do you
think about coding standards with cya
where we
Write Clean code that documents itself
so when we come back we don't have to
struggle and try to figure out what was
done I I think that is one of
the the cya aspect of well documented
code is actually very interesting Tac
that I don't think we we've talked about
I don't think about it as much but it's
actually it's a really good point
because it is something where you will
have you will run into situations and
this is something we ran into recently
as well we had a we've talked about this
we had a
a client that they had a very old
version of software there's a bunch of
upgrades and so we ended up going
through and doing some upgrades and then
it's ended up being moved on to somebody
else and it is something that
one we want to we want to have that road
map of what did we do so we can we can
figure out what we need to do if we're
particular if you're going to like uh do
it to a say a staging server but now you
got to do updates to your production
server so they've got to be in sync you
want to make sure that you have that
uh basically that that road map of how
did I get from point A to point B but
also from a cya point of view if
somebody comes in and takes over your
code and they say hey this was this was
a mess this was just this was worthless
code or you know they wrote all these
bugs into this stuff and sometimes you
will have a situation where okay yeah
you wrote you wrote bad Co code
occasionally we do that but there's also
times where somebody comes in and they
end up not understanding what was built
they don't read the documentation they
don't look at stuff well shame on you if
you don't have documentation because if
you didn't give them documentation then
it's not their fault they didn't read it
but if you did it's nice having that
paper trail essentially which is why I
don't know why anybody in the Modern Age
would not use Version Control while
they're developing I think the best
thing you can do for yourself is get in
a habit even and I've had projects where
they don't officially have version
control I have my own git repository you
can throw it out you can do a GitHub for
free save it off like do labels do
everything at least commit I would say
at least commit and push daily at the
absolute minimum uh I very often we'll
do it based on big chunks of code and
then don't be afraid to like to put some
tags in there or branches or everything
else particularly if it's if it's a
team go ahead and Branch off of it work
on your branch and then merge that thing
back then you know exact what you've
done you have something well documented
and you have that cya you can point to
this is what I did this is how we got
from point A to point B and this is
where I made mistakes and this is where
other people made mistakes and pointed
their finger at
me exactly which is kind of funny which
is why I kind of started this
conversation at the code level kind of
talking about clean code for a couple of
reasons
one essentially your code is the source
of truth right no matter what
documentation you have what winkies you
have you know what may be written on you
know jur tickets or as far as what's
been done at the end of the day what's
in the code is really what's there what
the application does so if you document
your code and you write it cleanly you
you essentially have your blueprint as
to what the application does right there
uh if you're doing Java you know include
some simple Java docs uh and if you're
not really good at using Java doc
uh or some type of you know code
documentation write better code you know
write descriptive code so that as you're
reading the code you can almost read it
as a use case uh that's one approach the
other thing um I want to kind of now
take this from the code level to a tier
up so as developers and even project
managers Engineers we've been through
the process of projects where like you
said you talk to customer and he's like
oh we did this six months ago we forgot
we didn't get it done that kind of gets
you to project management tools like at
lassan um bit bucket uh like you said
get repository and code reviews so where
do you see those kind of working for C
to an extent because at the end of the
day as developers we're not necessarily
the ones putting those in but we have to
use those to kind of record our
work oh I think that is uh those are
great tools to use I think we
Overlook them way too often they're way
too often I've been I've been on a
development team and they have coding
standards that include code reviews and
and regular commits and branches and
pull requests and all of these things
and you'll see that people will commit
code and their comment will be you know
fixed a wrote some code fixed a bug it
like that uselessly INSP specific now
sometimes it's it's nice and you'll have
a and but it's sort of a crutch as
people refer back to like for example a
jro ticket number so I worked on some
code I solve ticket you know 1 2 3 45 6
and so you can at least go to the ticket
and see what it applies to but I think
you're still not using it as well as you
could because you're not really saying
anything about what you did unless
you're going back to that ticket and
you're fully commenting that out you're
better off in your code commits to be
able to have use the space that you have
there to talk about what what were the
changes what are the key pieces you did
and if you have to write a book when you
do a commit you're not committing off
enough you should be doing stuff in you
know little bit more bite-sized chunks
so that you could look at your history
of commits and sort of see what you did
because that gives you that source of
Truth and then with a code review even
better because now it's I had this
commit and that actually is going to
sort of help confirm it because they're
going to do a code review they're going
to look at your comments they're going
to say what did you say you did does the
code do that they're going to help you
out and so it's really good I mean
that's like a a rock solid cya kind of
thing because now you have not only your
your system of truth of your source code
but you have the history the audit trail
of how you got there and if you're if
you're in a public company if somebody's
coming in and they're going to your
company's going to go public then that's
one of the things we're going to look at
is do you have those processes and
procedures in place so that you can
rebuild where you were 6 months ago and
definitely so that you can rebuild
whatever your current version of the
software is
is all right so for the third point with
this if you were to actually put in good
QA practices in place where you actually
have test unit test to test the white
box testing of the code you have your
regression test to test the blackbox
testing or you have the integration test
that tests all the integrated pieces
together then your tests actually become
your documentation your tests become the
use cases as to how the application's
going to work and is as you work the
code and the code breaks something you
have to go fix the test which changes
the use case and you know what has
changed so your stories kind of migrate
with the application if you forgo the
testing and go the documentation route
your documentation can become stale you
could make six months worth of changes
to the code and your documentation may
be six months old or your apis might not
be right and you send that out to a
customer to like it doesn't work what's
going on so that's where I think if we
kind of flip the model on its head where
we as we write these business cases or
we write these use cases from the
project management side to the
developer if we write them with testing
in mind and you kind of put that test
driven uh approach in place then there
really is no excuse for you not to have
cya from the beginning from the moment
you get the requirements you can say
okay here's how you test this here's how
this is supposed to work you write that
test first and then you write the code
so then at the end of the day you have
you know clear as day that your test
works as expected that your code
works that's true yeah I think that's a
that's a good point is your your
documentation could go stale easier than
your test can uh your te but your test
can also I think that's a it's a very
good point but I also think that you
have to make sure that you are keeping
your test up to date as you go I've seen
a lot of situations where a company has
got just awesome bed of unit tests and
maybe even some good regression tests
but they were sort of like version one
and now we're version 2.0 of the of the
application and all that stuff still
works because that core stuff isn't
being touched but they didn't maintain
it along the way so you do have to you
have to have that discipline to continue
to do that and not just do it initially
and we do this so off with documentation
everything else is we build everything
out we do it all right and then we start
writing we get into the implementation
point and stuff starts going out the
window because well we don't have time
to do that so we're going to write the
code we're not going to write the test
so you do want to make sure that you and
this is where the cicd stuff comes in
that continuing integration continuous
integration and deployment and having
your test built in and making sure that
it's with code reviews to make sure that
when there's code written there are
tests that go with that code that are
also being committed so that your whole
system your whole process is being
updated as you go
now that does dovetail into another
point I wanted to talk about a little
bit is um we'll talk like saying
something and nobody's listening which
is the cya part of doing like status and
documentation and tests even if nobody
cares so even though your tests are
there and you're seeing you you've got
the test results that you can always
point back to it
becomes difficult to say the least it's
sort of depressing to be doing all that
work and doing the right thing and
nobody cares you're you're not seeing
your manager is not seeing it or just as
like okay great you did your test uh or
they you know that they never you send a
write a status every day and they never
read it those kinds of things um I
didn't want to talk about get your
thoughts on that is like from that from
your point of view is like when you're
sitting there and you know you're doing
the right thing but nobody cares how do
you motivate yourself to keep doing it
anyways
well one of the biggest motivators for
me that makes me always try to follow
the best practices the test driven um
development approach is simply I don't
want to be the one that puts a piece of
code in there that takes the system down
that cost my company a million dollars
an hour uh I I've been in a couple
situations in my career where code has
gone live and we've actually started
costing customers money the moment it
it's turned on you don't want that
um not only are you potentially on the
hook financially you could legally be on
the hook especially if it's like patient
information you don't want to expose
that stuff you don't want to be a part
of a hip violation and so to me I stay
motivated because of that it's not so
much that my manager wants this or you
know to me at the end of the day I want
to put out the best code that I can and
make sure that the software I write is
the cleanest and that basically if I
touch code I leave it in a better place
than when I came in I want to make sure
that the person that comes behind me can
easily read my code follow along and
know what happen and be able to work it
if there's a problem or if they're
making
change that is one of the biggest not
caveat but one of the biggest things
I've seen with a lot of Junior
developers they don't do that at all
they just quickly let me hack it out
okay done move on mid level developers
they're a little more methodical they're
a little more documentation they spend
the time to try to make sure that they
do it right but again they're under
deadlines so they kind of still rush
through to get things out and then you
have the more senior Engineers where you
know we could be under time high
pressure we could be in on a project
that's under staff and now what are we
going to do we have to make shortcuts
but you try to make the shortcuts not so
much on processes or quality but just
try to make sure that you keep what
you're doing as simple as possible and
not bloat your code so you stay like
hyperfocused you have to make one change
make that one change but make get the
best way you yeah I agree I think that's
the you know that's the key to all of
this is that
the the reason we should be doing this
while it is we talked about the COA as
our our topic for this one and that is a
that is a huge side effect benefit of
doing things the right way but it is
these are also things that will help us
build better code this helps us it's
going to be easier to maintain it's
going to be easier for us to go back
even if we're the maintainer and figure
out what did we do if something breaks
we can figure out what code changed so
we can like get to that break faster if
we have to look at our entire code base
every time we've got a bug we're in
trouble if we can look back and say well
we only changed these five lines of code
then most likely those five lines of
code are where the break occurred or
somehow are related to it so that at
least gives us a starting point and that
is where we become more efficient and
it's we're going to be better as
developers and I think that's why more
senior developers you when you start as
a junior you just you just do what
you're told usually that's just most of
us are that way but then as you get
further along you get a little more
confident and realize that the processes
and procedures are there for a reason
that they protect the customer as well
as us as well as the software stability
itself and so there's a reason that
these these practices are in place and
it's not these aren't things that we can
just you know take a shortcut and say oh
this takes time we're going to throw it
out and instead we need to be more
specific about it and maybe change the
scope or as you said sort of focus maybe
you don't you know maybe you don't
architect the most incredibly perfect
solution to it but instead you simplify
that down but then make sure that simple
solution is so much better it's like a
it's like a car if you got a if you want
to go build a a Porsche from you know
from scratch and you get halfway into it
and you run out of money then you're not
able to do anything but if instead you
said hey I'm just going to build myself
a bike so I can get get from point A to
point B then you're going to get there
faster it's still going to work it's
going to be solid you don't have to have
a a bike that's going to fall apart
versus you know the Porsche that falls
apart it's a I know it's a crappy
analogy but it is one of those things
that we you run into is it's better to
have something lesser and solid that's
Rock Solid than it is to have a whole
bunch of features that half of them
don't work and there's so many products
that are on the you know that are screwn
over the high the internet highway or
whatever it is that failed because
that's exactly what they did they tried
to throw too much stuff at it and it
ended up falling under its own
weight can I add one thing to that in
terms for developers uh regardless of
what level you're at one of the biggest
mistakes we can make when we go to write
code when we go to take an assignment
and go do something we don't take enough
time to review the ticket we don't take
enough time to make sure that all the
requirements are there or potentially
some of the unforeseen edge cases that
might be very edge but may not be for
like a simple like date picker if you
were to uh have like a start date end
date for a search of data you know you
would have an edge case well what
happens if they put in a date that is
outside of the range or put an end date
before start date yes that's an edge
case and a lot of people would test that
but some companies won't test that
because it's like well that's not what
the users are going to put in and
typically that could cause some
weirdness with the system or break the
system so essentially as an additional
point to cover your ass or the CIA is
make sure that before you even do
anything make sure you understand the
tickets make sure you have all the
requirements and make sure that you
understand the edge cases so when you do
write your code again this kind of gets
back to testing you know how to test it
you know what it's supposed to do and
therefore you're writing what should
work and if it's all agreed to on the in
the ticket that's defined if something
breaks you can refer back to the ticket
and say okay that's an edge case that
was not considered we need a new
ticket yeah I think that's one of those
things like your mom used to always say
you know eat your vegetables brush your
teeth and read your requirements
thoroughly I think those are the kinds
of things that we need to like you know
think about because some people see it
and whether it's uh communicating or
receiving it is the developer being sort
of you know obnoxious or rude or
something because they're like well wait
a minute I've got more questions about
this but it's not it's about getting
those details out and being able to
discuss those so that when we build it
we know what we're building and we don't
go halfway into it and then have to
change stuff rewrite all the other
things that could come out of there's a
lot of bad stuff that can come out of
surprise requirements that pop up or
edge cases that suddenly are you know a
lot of times like well nobody's ever
going to do that and then you find out
that half of your population does and
that's those are the kinds of things
that you have to watch out for and that
can they're what cause delays in
software they cause you know the
overruns in budgets and all that kind of
stuff is because the the requirements
piece is shortcut way too often and we
do it as developers too we just read
through like oh yeah I got it no problem
I get it I understand it and then you
realize that no you didn't because you
didn't you didn't think about these half
dozen different cases that are may be
very critical they may not be Edge they
may be things that like oh this probably
happens fairly often and you find out
way too often that it does so I'll give
you your last thought on this
one I was just going to add one
additional piece to that so along with
that the other thing to kind of keep in
mind is when you're dealing with trying
to do things right you're dealing with
requirements uh and those weird edge
cases you know if you again think things
through
uh you'll be in a better place the other
thing you might also consider is as we
continue this weird shift in the economy
shift in our business practices and
shifting in the software model we've
seen a lot of big corporations do the
shift left where they're moving test to
the developers we have fast to fail
where we have to let's get something out
there and see what the customer will do
with it well while those approaches are
well and meaningful they actually bring
up more pitfalls that you really need to
make sure you understand how to c
otherwise you're going to be in trouble
yeah I think that's definit that's good
point is that sometimes you don't want
to get the ugly thing out there because
then it's like yeah you they'll tell you
right away that it's failed but then
they may decide that it's failed so much
they don't want to talk to you again so
you have to watch out for that and
that's what we have to watch out for is
failing by going way too long on a on an
episode so we're going to wrap this one
up um you know just in case that you've
got some limit to your podcast uh
listening time frame today uh as always
show an email info development.com if
you got any questions topics anything
like that that you want to reach out you
can check us out at develop ur.com
there's blog articles there are links to
the the podcast to the YouTube channel
to all kinds of other fun stuff that's
out there fun for everyone well maybe
not everyone but for enough people go
ahead and check out the site and uh
that's we're just going to continue with
this season we're going to continue work
on our way through some of these common
business problems that we're hitting and
share those with you so go out there and
have yourself a great day a great week
and we will talk to you next time it's
really important on an audio version is
to make sure that you have like a little
finger thing like next time because
that's so important these are the things
that you get from a video that you don't
get from the audio is all of the like
extra gesturing that goes on then you
realize people that are talking with
their hands does no good on a on a
podcast so
I think that about wraps it up for us
this time on the video side as well so I
can like this wraps us up or something
give a little hand motion there um and
we'll just continue on we've got like
you know we we have these conversations
all the time and uh this one uh has been
a good another one we just sort of like
jumped in it's like hey what are we
running into because like you guys we
are here all the time running into new
every day it feels like we've got a new
problem to solve and you know six
different ways that we need to solve it
so it's h however we can help each other
out we're more than happy to do so uh
can go ahead and subscribe to the
channel and you'll see whatever our
latest stuff is you get it when it drops
we're doing this twice a week Tuesdays
and Thursdays podcast drops the latest
video is going to drop basically the
video version drops at the same time so
you're really not losing anything if you
want to listen to podcast you get it at
basically the same time that you could
get the the video it's just whatever you
know whether you want to watch us or
whether you want to hear us listen to us
while you're going around in your drive
time and you know doing your Uber Eats
or whatever it is you happen to do so we
want to thank you for your
time uh as always leave some comments
out there let us know what you what you
think subscribe and let us know uh what
are some things you'd like to see us to
talk about in the future if you've got
anything in particular that youve has
been bugging you we'll be more than
happy to either cover it maybe here or
you can shoot us that email and we'll uh
we can take that offline and and talk to
you that way way as well we're always
looking for ways to solve problems and
yeah we have a bunch but we're always
looking for more so any uh parting
thoughts from you
Mike yeah the only thing I would like to
add in addition uh if you are watching
the video uh just make sure to check out
the notes section in uh YouTube or go
out to developer.com and check out the
blog for the podcast we do put
additional links in there to other
material and also to some of the
software that we talked about within the
uh conversations that we have uh good
point yeah I always I forgot to say and
you know links in the show notes because
that's almost always going to be there
there's going to be links to us and
where we can other places that we
reference so I think that'll wrap this
one up we're going to go get back to our
normal non-developer lives and you guys
have a great one and we will talk to you
next
time
Transcript Segments
1.35

[Music]

27.32

well hello and welcome back we are here

30.16

once again going through another uh

32.36

little discussion here between myself

34.36

and Michael we are talking about RB

36.559

Consulting we talk about Invision QA we

38.96

talk about develop andur and the

40.559

building better developers site and all

43.96

things that are sort of you know bugging

46.48

us a little bit and Lessons Learned

48.36

along the way as we are launching

51

advancing and rebooting some companies

52.84

so figure if nothing else you know you

55.48

can hopefully uh learn from some of our

57.359

mistakes and not suffer the same pain

59.32

points we are

60.76

and uh welcome in Michael what's how's

62.68

your day

64.08

going pretty good uh it's been a pretty

67.119

good week so far uh how about you it has

70

been uh it's been a fun one it's uh this

72.52

is one of those it's a had a great

75.36

interview today or meeting today with a

79.159

customer and these are these are the fun

81.4

ones that you occasionally get because

84.119

he he sends me an email and he's like

85.84

hey we want to talk about A and B and C

88.04

I like okay great we'll talk about these

89.72

things

90.479

and we get into the call and the one had

93.92

already been done had been done like

96.04

months ago and he'd forgotten about it

98

the other one he suddenly realized he

99.439

wasn't sure he had the budget for it

101

right now and the other one uh he was

103.96

like well I think we're going to do this

105.399

but I'm not really sure about the value

107

and that was sort of the same thing as

108.2

he ended up sort of backing out and

109.479

saying oh well maybe it was one of those

111.92

that was uh it only worked on the new

114.719

data they didn't want to go back and fix

116.32

old data and it turned out that it works

118.479

fine with the new data he was dealing

119.719

with W cany data so one of the things

121.439

that he had explicitly chosen to do he

124.88

got bit

126.159

by so this is I think this is one that

129.959

will lead us into I think our podcast

132.36

this time I want to do a little um I

135.56

guess we'll talk about like cya kind of

137.879

stuff because this something I don't

139.44

think we've talked about recently as

141.8

much we have touched on in the past but

143.16

it's the idea of like status reporting

145.36

and communicating and making sure that

147.48

you're you're clear on what's being done

150.08

and also that you have essentially a

151.44

paper trail of some sort so you can look

153.239

back and say what did I get done and

154.8

when did I get it done sound good does

157.4

that sound like a fun topic for this

158.599

time

159.519

around oh yes definitely uh in fact

162.68

we've had similar

164.159

conversations uh at work and I've had

166.239

similar conversations with customers

168.48

along those same lines so I I love this

171.76

um so why don't you kick it off then

174.239

with kind of the use case or where this

176.8

came into play this week with uh these

178.84

customers we'll do so while you guys get

182.8

to see us kick this off on the audio

184.599

side again hello and welcome back thank

186.92

you for tuning in we are here uh just

190.12

coming right through your ear holes

191.84

building better developers developer

193.48

podcast once again this episode we're

196.48

going to get into a little cya

198.28

essentially it's uh yes you could talk

200.84

about documentation or communication but

204.4

at the end of the day it is a little bit

205.92

of a cya kind of a topic and the reason

208.84

this came up this time is I had a

211.92

customer call

213.239

today that was uh it initially it's one

216.239

of the these where like hey here's the

217.64

agenda this is what we want to talk

219.04

about great and so we get into the call

222

and everything's kicks off and right

224.439

away the first item we start talking

226.76

about it's like I think that's already

228.319

there and sure enough it's there it's a

230.4

non-issue it's already been taken care

232

of taken care of months ago it's just

235.4

this is one of those where you have

236.879

somebody that is not the front line

240.36

user and they don't realize necessarily

243.12

exactly everything that's going on which

245

is also an interesting we're going to

246.319

talk about because this is somebody that

247.84

gets regular status just doesn't

251.159

probably read the statuses very closely

253.239

and so you know sometimes you have to

255.079

look at how you communicate such

256.88

statuses but then he had another item

259.799

this one we got into the call and he

261.359

realized ah I'm not sure I got the

262.68

budget for that so let's like hold off

264.199

on that so it's he like throws out that

266.28

you know that parro and then it's like

268.04

oh wait wait maybe we're not going to do

269.44

that right now and then he got to

271.199

another one and it was well we need to

273.24

look at it and it turned out it's one of

275.199

these things that the data they were

276.44

looking at was wrong it only worked for

278.12

new data not old data he ran into it

280.72

with the old data it was something he

282.12

had explicitly said we don't want to

283.56

deal with the old data we're only going

284.919

to do this for the new data and so

287.52

suddenly the entire agenda it was

289.56

basically the call ended up he's like

291.16

wow it was really guy good talking to

292.44

you guys again at least it was one of

293.84

those where just you know nothing

296

nothing really useful came out of it

298.039

other than just you know a little bit of

299.84

FaceTime with the

301.28

customer so I guess well you said that

303.759

you've had some stuff this week that's

305.68

that's or recently that is in that same

307.52

line so what is the what has been your

309.52

experience along those lines

312.52

lately so recently especially uh so with

317.68

a lot of us weide hustles I also still

319.919

work for a full-time job for a software

322.319

company and one of the complaints we've

324.919

run into recently is we started

327.319

rewriting three Pipelines

330.319

of our application we had some Legacy

331.96

software we decided to just start

333.68

writing it the problem we ran into is we

337.68

started this project six months ago and

341.52

we really didn't have a clear road map

343.28

as to what was going to happen in q1

345.28

well here we are in q1 and we have

347.96

deadlines that are in 30 days well we

350.479

have code that is where the business

353.6

things were at one place but we're

355.24

really at another place and if we

358.16

actually had understood that oh this

359.4

deadine coming we would put more hands

361.479

on something sooner instead of this kind

363.68

of little short mad the end in this last

367.599

Sprint or two uh the other thing I've

370.08

run into is even within the rewrite some

374

of the code we're putting out there is

376.479

very cumbersome very large and very hard

379.479

to follow so one of the things uh as we

382

talk about this uh the C is what do you

385.599

think about coding standards with cya

389.039

where we

390.199

Write Clean code that documents itself

393.039

so when we come back we don't have to

394.72

struggle and try to figure out what was

396.36

done I I think that is one of

400.44

the the cya aspect of well documented

403.8

code is actually very interesting Tac

406.56

that I don't think we we've talked about

408.44

I don't think about it as much but it's

409.599

actually it's a really good point

410.84

because it is something where you will

413.68

have you will run into situations and

415.759

this is something we ran into recently

417.08

as well we had a we've talked about this

418.96

we had a

420.08

a client that they had a very old

422.919

version of software there's a bunch of

424.68

upgrades and so we ended up going

427.08

through and doing some upgrades and then

428.68

it's ended up being moved on to somebody

430.479

else and it is something that

433.84

one we want to we want to have that road

436.68

map of what did we do so we can we can

439.44

figure out what we need to do if we're

440.84

particular if you're going to like uh do

442.56

it to a say a staging server but now you

444.84

got to do updates to your production

446.039

server so they've got to be in sync you

447.879

want to make sure that you have that

450.24

uh basically that that road map of how

452.16

did I get from point A to point B but

454.72

also from a cya point of view if

456.599

somebody comes in and takes over your

459.039

code and they say hey this was this was

462.4

a mess this was just this was worthless

464.759

code or you know they wrote all these

467.159

bugs into this stuff and sometimes you

469.919

will have a situation where okay yeah

471.84

you wrote you wrote bad Co code

473.72

occasionally we do that but there's also

475.639

times where somebody comes in and they

477.52

end up not understanding what was built

481.08

they don't read the documentation they

482.639

don't look at stuff well shame on you if

484.8

you don't have documentation because if

486.199

you didn't give them documentation then

487.8

it's not their fault they didn't read it

489.919

but if you did it's nice having that

493.84

paper trail essentially which is why I

497.039

don't know why anybody in the Modern Age

499.24

would not use Version Control while

501.28

they're developing I think the best

503.159

thing you can do for yourself is get in

505

a habit even and I've had projects where

507.599

they don't officially have version

509.52

control I have my own git repository you

512.24

can throw it out you can do a GitHub for

514.08

free save it off like do labels do

517.919

everything at least commit I would say

519.8

at least commit and push daily at the

521.839

absolute minimum uh I very often we'll

524.279

do it based on big chunks of code and

526.64

then don't be afraid to like to put some

528.48

tags in there or branches or everything

531.08

else particularly if it's if it's a

534.16

team go ahead and Branch off of it work

536.68

on your branch and then merge that thing

538.399

back then you know exact what you've

540.079

done you have something well documented

543.16

and you have that cya you can point to

545.48

this is what I did this is how we got

548.12

from point A to point B and this is

550.839

where I made mistakes and this is where

552.36

other people made mistakes and pointed

553.92

their finger at

555.959

me exactly which is kind of funny which

558.64

is why I kind of started this

559.92

conversation at the code level kind of

562

talking about clean code for a couple of

564.76

reasons

566.48

one essentially your code is the source

569.16

of truth right no matter what

571.2

documentation you have what winkies you

573.44

have you know what may be written on you

575.959

know jur tickets or as far as what's

578.36

been done at the end of the day what's

580.36

in the code is really what's there what

582.48

the application does so if you document

585.16

your code and you write it cleanly you

588.36

you essentially have your blueprint as

590.12

to what the application does right there

592.44

uh if you're doing Java you know include

594.68

some simple Java docs uh and if you're

597.24

not really good at using Java doc

600.6

uh or some type of you know code

602.56

documentation write better code you know

605.279

write descriptive code so that as you're

606.92

reading the code you can almost read it

608.68

as a use case uh that's one approach the

612.079

other thing um I want to kind of now

614.399

take this from the code level to a tier

616.88

up so as developers and even project

621.279

managers Engineers we've been through

623.68

the process of projects where like you

626.079

said you talk to customer and he's like

628.04

oh we did this six months ago we forgot

630.68

we didn't get it done that kind of gets

632.519

you to project management tools like at

635.8

lassan um bit bucket uh like you said

639.32

get repository and code reviews so where

642.68

do you see those kind of working for C

646.36

to an extent because at the end of the

648.639

day as developers we're not necessarily

650.8

the ones putting those in but we have to

652.639

use those to kind of record our

654.72

work oh I think that is uh those are

657.279

great tools to use I think we

660.24

Overlook them way too often they're way

661.92

too often I've been I've been on a

663.56

development team and they have coding

666.24

standards that include code reviews and

668.399

and regular commits and branches and

670.48

pull requests and all of these things

672.8

and you'll see that people will commit

674.399

code and their comment will be you know

676.6

fixed a wrote some code fixed a bug it

679.36

like that uselessly INSP specific now

683.079

sometimes it's it's nice and you'll have

685.72

a and but it's sort of a crutch as

688.2

people refer back to like for example a

690.12

jro ticket number so I worked on some

692.6

code I solve ticket you know 1 2 3 45 6

696.92

and so you can at least go to the ticket

698.399

and see what it applies to but I think

700.76

you're still not using it as well as you

703.56

could because you're not really saying

704.639

anything about what you did unless

706.16

you're going back to that ticket and

707.6

you're fully commenting that out you're

710.48

better off in your code commits to be

713.36

able to have use the space that you have

715.8

there to talk about what what were the

717.399

changes what are the key pieces you did

719.24

and if you have to write a book when you

720.6

do a commit you're not committing off

722.48

enough you should be doing stuff in you

724.88

know little bit more bite-sized chunks

726.959

so that you could look at your history

729.519

of commits and sort of see what you did

731.68

because that gives you that source of

733.68

Truth and then with a code review even

736.24

better because now it's I had this

738.72

commit and that actually is going to

740.56

sort of help confirm it because they're

741.88

going to do a code review they're going

743.279

to look at your comments they're going

744.36

to say what did you say you did does the

746.12

code do that they're going to help you

748.079

out and so it's really good I mean

750.44

that's like a a rock solid cya kind of

752.76

thing because now you have not only your

755.24

your system of truth of your source code

757.44

but you have the history the audit trail

759.68

of how you got there and if you're if

761.959

you're in a public company if somebody's

763.399

coming in and they're going to your

764.48

company's going to go public then that's

767.079

one of the things we're going to look at

768.199

is do you have those processes and

770.279

procedures in place so that you can

772.6

rebuild where you were 6 months ago and

775.36

definitely so that you can rebuild

777.079

whatever your current version of the

778.6

software is

779.959

is all right so for the third point with

783.04

this if you were to actually put in good

787.519

QA practices in place where you actually

789.68

have test unit test to test the white

792.079

box testing of the code you have your

793.839

regression test to test the blackbox

795.68

testing or you have the integration test

798.76

that tests all the integrated pieces

800.76

together then your tests actually become

803.48

your documentation your tests become the

805.72

use cases as to how the application's

808.079

going to work and is as you work the

811.12

code and the code breaks something you

813.04

have to go fix the test which changes

815.279

the use case and you know what has

817.16

changed so your stories kind of migrate

819.079

with the application if you forgo the

821.6

testing and go the documentation route

824.079

your documentation can become stale you

826.16

could make six months worth of changes

827.88

to the code and your documentation may

829.92

be six months old or your apis might not

832.36

be right and you send that out to a

833.519

customer to like it doesn't work what's

835.32

going on so that's where I think if we

838.639

kind of flip the model on its head where

840.399

we as we write these business cases or

843.16

we write these use cases from the

844.759

project management side to the

847

developer if we write them with testing

849.399

in mind and you kind of put that test

851.48

driven uh approach in place then there

856.04

really is no excuse for you not to have

858.199

cya from the beginning from the moment

861.24

you get the requirements you can say

863.959

okay here's how you test this here's how

865.72

this is supposed to work you write that

868.12

test first and then you write the code

870.04

so then at the end of the day you have

872.759

you know clear as day that your test

875.24

works as expected that your code

878.6

works that's true yeah I think that's a

881.759

that's a good point is your your

883.12

documentation could go stale easier than

886

your test can uh your te but your test

888.8

can also I think that's a it's a very

891.639

good point but I also think that you

892.88

have to make sure that you are keeping

894.36

your test up to date as you go I've seen

896.759

a lot of situations where a company has

899.12

got just awesome bed of unit tests and

903.12

maybe even some good regression tests

905.279

but they were sort of like version one

907.199

and now we're version 2.0 of the of the

909.519

application and all that stuff still

911.32

works because that core stuff isn't

912.92

being touched but they didn't maintain

915.16

it along the way so you do have to you

917.759

have to have that discipline to continue

919.399

to do that and not just do it initially

922.36

and we do this so off with documentation

924.36

everything else is we build everything

925.56

out we do it all right and then we start

927.6

writing we get into the implementation

929.36

point and stuff starts going out the

931.839

window because well we don't have time

933.16

to do that so we're going to write the

934.199

code we're not going to write the test

936.079

so you do want to make sure that you and

938.16

this is where the cicd stuff comes in

940.8

that continuing integration continuous

942.519

integration and deployment and having

944.48

your test built in and making sure that

947.16

it's with code reviews to make sure that

948.639

when there's code written there are

950.6

tests that go with that code that are

953.16

also being committed so that your whole

955.199

system your whole process is being

957.8

updated as you go

959.839

now that does dovetail into another

961.72

point I wanted to talk about a little

963.92

bit is um we'll talk like saying

968.16

something and nobody's listening which

970.399

is the cya part of doing like status and

975

documentation and tests even if nobody

977.959

cares so even though your tests are

980.199

there and you're seeing you you've got

982.959

the test results that you can always

984.44

point back to it

987.36

becomes difficult to say the least it's

989.399

sort of depressing to be doing all that

991.56

work and doing the right thing and

993.68

nobody cares you're you're not seeing

995.6

your manager is not seeing it or just as

997.519

like okay great you did your test uh or

1000

they you know that they never you send a

1001.8

write a status every day and they never

1003.68

read it those kinds of things um I

1006.92

didn't want to talk about get your

1008.279

thoughts on that is like from that from

1010.199

your point of view is like when you're

1011.279

sitting there and you know you're doing

1012.48

the right thing but nobody cares how do

1015

you motivate yourself to keep doing it

1017.839

anyways

1019.759

well one of the biggest motivators for

1022.48

me that makes me always try to follow

1025.6

the best practices the test driven um

1028.76

development approach is simply I don't

1031.76

want to be the one that puts a piece of

1033.48

code in there that takes the system down

1035.079

that cost my company a million dollars

1037.079

an hour uh I I've been in a couple

1039.52

situations in my career where code has

1042.48

gone live and we've actually started

1045.36

costing customers money the moment it

1047.28

it's turned on you don't want that

1049.52

um not only are you potentially on the

1051.84

hook financially you could legally be on

1054.08

the hook especially if it's like patient

1055.679

information you don't want to expose

1057.28

that stuff you don't want to be a part

1058.32

of a hip violation and so to me I stay

1063.2

motivated because of that it's not so

1065.16

much that my manager wants this or you

1068.44

know to me at the end of the day I want

1070.84

to put out the best code that I can and

1073.32

make sure that the software I write is

1075.12

the cleanest and that basically if I

1077.6

touch code I leave it in a better place

1079.52

than when I came in I want to make sure

1081.6

that the person that comes behind me can

1083.4

easily read my code follow along and

1086.4

know what happen and be able to work it

1088.6

if there's a problem or if they're

1090

making

1091

change that is one of the biggest not

1094.24

caveat but one of the biggest things

1095.76

I've seen with a lot of Junior

1097.84

developers they don't do that at all

1099.799

they just quickly let me hack it out

1102.159

okay done move on mid level developers

1104.48

they're a little more methodical they're

1105.6

a little more documentation they spend

1107.559

the time to try to make sure that they

1109.12

do it right but again they're under

1110.64

deadlines so they kind of still rush

1113.12

through to get things out and then you

1115.08

have the more senior Engineers where you

1117.12

know we could be under time high

1119.2

pressure we could be in on a project

1121.24

that's under staff and now what are we

1123.08

going to do we have to make shortcuts

1124.919

but you try to make the shortcuts not so

1126.72

much on processes or quality but just

1129.96

try to make sure that you keep what

1131.4

you're doing as simple as possible and

1133.559

not bloat your code so you stay like

1135.64

hyperfocused you have to make one change

1137.679

make that one change but make get the

1139.08

best way you yeah I agree I think that's

1141.72

the you know that's the key to all of

1143.24

this is that

1144.4

the the reason we should be doing this

1147.36

while it is we talked about the COA as

1149.559

our our topic for this one and that is a

1151.919

that is a huge side effect benefit of

1154.88

doing things the right way but it is

1158.799

these are also things that will help us

1161.52

build better code this helps us it's

1163.679

going to be easier to maintain it's

1165.2

going to be easier for us to go back

1167.12

even if we're the maintainer and figure

1169.28

out what did we do if something breaks

1172.039

we can figure out what code changed so

1174.48

we can like get to that break faster if

1177.32

we have to look at our entire code base

1178.76

every time we've got a bug we're in

1180.08

trouble if we can look back and say well

1182.28

we only changed these five lines of code

1184.2

then most likely those five lines of

1186.44

code are where the break occurred or

1188.2

somehow are related to it so that at

1190.36

least gives us a starting point and that

1192.76

is where we become more efficient and

1195.12

it's we're going to be better as

1196.159

developers and I think that's why more

1198.72

senior developers you when you start as

1200.6

a junior you just you just do what

1202.679

you're told usually that's just most of

1204.32

us are that way but then as you get

1206.039

further along you get a little more

1207.48

confident and realize that the processes

1209.52

and procedures are there for a reason

1211.919

that they protect the customer as well

1213.559

as us as well as the software stability

1217.52

itself and so there's a reason that

1219.799

these these practices are in place and

1222.679

it's not these aren't things that we can

1225.2

just you know take a shortcut and say oh

1226.96

this takes time we're going to throw it

1228.08

out and instead we need to be more

1229.919

specific about it and maybe change the

1231.76

scope or as you said sort of focus maybe

1234.24

you don't you know maybe you don't

1236.28

architect the most incredibly perfect

1238.679

solution to it but instead you simplify

1241.12

that down but then make sure that simple

1242.919

solution is so much better it's like a

1245.559

it's like a car if you got a if you want

1247.799

to go build a a Porsche from you know

1249.88

from scratch and you get halfway into it

1252.08

and you run out of money then you're not

1254.039

able to do anything but if instead you

1256.32

said hey I'm just going to build myself

1257.64

a bike so I can get get from point A to

1259.32

point B then you're going to get there

1261.4

faster it's still going to work it's

1262.679

going to be solid you don't have to have

1264.4

a a bike that's going to fall apart

1266.6

versus you know the Porsche that falls

1268.799

apart it's a I know it's a crappy

1271.08

analogy but it is one of those things

1273.32

that we you run into is it's better to

1275.559

have something lesser and solid that's

1278.64

Rock Solid than it is to have a whole

1280.6

bunch of features that half of them

1282.76

don't work and there's so many products

1285.279

that are on the you know that are screwn

1286.679

over the high the internet highway or

1288.6

whatever it is that failed because

1290.76

that's exactly what they did they tried

1292.12

to throw too much stuff at it and it

1294.36

ended up falling under its own

1296.2

weight can I add one thing to that in

1299.88

terms for developers uh regardless of

1302.919

what level you're at one of the biggest

1305.36

mistakes we can make when we go to write

1308.36

code when we go to take an assignment

1310.2

and go do something we don't take enough

1313.159

time to review the ticket we don't take

1316.4

enough time to make sure that all the

1317.799

requirements are there or potentially

1320.4

some of the unforeseen edge cases that

1323.72

might be very edge but may not be for

1328.279

like a simple like date picker if you

1330.12

were to uh have like a start date end

1332.08

date for a search of data you know you

1334.279

would have an edge case well what

1335.48

happens if they put in a date that is

1337.2

outside of the range or put an end date

1338.919

before start date yes that's an edge

1340.88

case and a lot of people would test that

1343.2

but some companies won't test that

1344.52

because it's like well that's not what

1345.559

the users are going to put in and

1348.08

typically that could cause some

1349.48

weirdness with the system or break the

1351.24

system so essentially as an additional

1354.32

point to cover your ass or the CIA is

1357.679

make sure that before you even do

1359.96

anything make sure you understand the

1362.039

tickets make sure you have all the

1363.559

requirements and make sure that you

1365.36

understand the edge cases so when you do

1366.88

write your code again this kind of gets

1369.08

back to testing you know how to test it

1370.919

you know what it's supposed to do and

1372.84

therefore you're writing what should

1374.84

work and if it's all agreed to on the in

1377.44

the ticket that's defined if something

1380.44

breaks you can refer back to the ticket

1382.52

and say okay that's an edge case that

1384

was not considered we need a new

1386.12

ticket yeah I think that's one of those

1388.08

things like your mom used to always say

1389.48

you know eat your vegetables brush your

1391.08

teeth and read your requirements

1392.76

thoroughly I think those are the kinds

1394.24

of things that we need to like you know

1396.32

think about because some people see it

1399.6

and whether it's uh communicating or

1402.76

receiving it is the developer being sort

1405.6

of you know obnoxious or rude or

1407.48

something because they're like well wait

1408.32

a minute I've got more questions about

1410.159

this but it's not it's about getting

1413.08

those details out and being able to

1415.76

discuss those so that when we build it

1418.52

we know what we're building and we don't

1419.919

go halfway into it and then have to

1421.76

change stuff rewrite all the other

1424.2

things that could come out of there's a

1425.48

lot of bad stuff that can come out of

1427.36

surprise requirements that pop up or

1429.36

edge cases that suddenly are you know a

1433.76

lot of times like well nobody's ever

1434.76

going to do that and then you find out

1436

that half of your population does and

1438.48

that's those are the kinds of things

1439.84

that you have to watch out for and that

1441.76

can they're what cause delays in

1443.679

software they cause you know the

1445.12

overruns in budgets and all that kind of

1447.159

stuff is because the the requirements

1449.76

piece is shortcut way too often and we

1452.88

do it as developers too we just read

1454.32

through like oh yeah I got it no problem

1456.08

I get it I understand it and then you

1457.84

realize that no you didn't because you

1459.64

didn't you didn't think about these half

1462.039

dozen different cases that are may be

1465.399

very critical they may not be Edge they

1467.24

may be things that like oh this probably

1468.72

happens fairly often and you find out

1471.12

way too often that it does so I'll give

1473.52

you your last thought on this

1477.32

one I was just going to add one

1479.72

additional piece to that so along with

1482.44

that the other thing to kind of keep in

1485.24

mind is when you're dealing with trying

1489.64

to do things right you're dealing with

1491.88

requirements uh and those weird edge

1494.32

cases you know if you again think things

1497.84

through

1499.159

uh you'll be in a better place the other

1501.32

thing you might also consider is as we

1505.48

continue this weird shift in the economy

1509.2

shift in our business practices and

1511.399

shifting in the software model we've

1513.48

seen a lot of big corporations do the

1515.399

shift left where they're moving test to

1517.24

the developers we have fast to fail

1520.039

where we have to let's get something out

1521.76

there and see what the customer will do

1523.32

with it well while those approaches are

1526.52

well and meaningful they actually bring

1529.679

up more pitfalls that you really need to

1531.6

make sure you understand how to c

1533.44

otherwise you're going to be in trouble

1535.76

yeah I think that's definit that's good

1537.12

point is that sometimes you don't want

1538.52

to get the ugly thing out there because

1540.24

then it's like yeah you they'll tell you

1542.279

right away that it's failed but then

1543.64

they may decide that it's failed so much

1545.64

they don't want to talk to you again so

1546.919

you have to watch out for that and

1549.159

that's what we have to watch out for is

1550.64

failing by going way too long on a on an

1553

episode so we're going to wrap this one

1555

up um you know just in case that you've

1558

got some limit to your podcast uh

1560.279

listening time frame today uh as always

1563.559

show an email info development.com if

1565.679

you got any questions topics anything

1567.64

like that that you want to reach out you

1569.159

can check us out at develop ur.com

1570.919

there's blog articles there are links to

1573.2

the the podcast to the YouTube channel

1575.44

to all kinds of other fun stuff that's

1577.2

out there fun for everyone well maybe

1580.039

not everyone but for enough people go

1581.96

ahead and check out the site and uh

1584.52

that's we're just going to continue with

1585.799

this season we're going to continue work

1587.44

on our way through some of these common

1588.799

business problems that we're hitting and

1590.919

share those with you so go out there and

1592.44

have yourself a great day a great week

1594.799

and we will talk to you next time it's

1598.84

really important on an audio version is

1601.039

to make sure that you have like a little

1602.24

finger thing like next time because

1604.36

that's so important these are the things

1606.6

that you get from a video that you don't

1608.32

get from the audio is all of the like

1610.32

extra gesturing that goes on then you

1612.96

realize people that are talking with

1614.36

their hands does no good on a on a

1617.039

podcast so

1620.6

I think that about wraps it up for us

1623.24

this time on the video side as well so I

1625.72

can like this wraps us up or something

1627.48

give a little hand motion there um and

1630.08

we'll just continue on we've got like

1632.36

you know we we have these conversations

1634.039

all the time and uh this one uh has been

1637.399

a good another one we just sort of like

1638.72

jumped in it's like hey what are we

1639.919

running into because like you guys we

1642.84

are here all the time running into new

1645.399

every day it feels like we've got a new

1646.919

problem to solve and you know six

1648.72

different ways that we need to solve it

1650.159

so it's h however we can help each other

1652.159

out we're more than happy to do so uh

1654.559

can go ahead and subscribe to the

1655.919

channel and you'll see whatever our

1658.12

latest stuff is you get it when it drops

1660.12

we're doing this twice a week Tuesdays

1661.6

and Thursdays podcast drops the latest

1665.039

video is going to drop basically the

1667.12

video version drops at the same time so

1669.519

you're really not losing anything if you

1672.36

want to listen to podcast you get it at

1673.76

basically the same time that you could

1675

get the the video it's just whatever you

1677.32

know whether you want to watch us or

1678.6

whether you want to hear us listen to us

1680.2

while you're going around in your drive

1682.279

time and you know doing your Uber Eats

1683.919

or whatever it is you happen to do so we

1686.32

want to thank you for your

1688.36

time uh as always leave some comments

1690.6

out there let us know what you what you

1692.159

think subscribe and let us know uh what

1694.72

are some things you'd like to see us to

1695.96

talk about in the future if you've got

1697.279

anything in particular that youve has

1699.24

been bugging you we'll be more than

1701.08

happy to either cover it maybe here or

1703.159

you can shoot us that email and we'll uh

1705.64

we can take that offline and and talk to

1707.679

you that way way as well we're always

1709

looking for ways to solve problems and

1711.2

yeah we have a bunch but we're always

1712.559

looking for more so any uh parting

1715.24

thoughts from you

1716.399

Mike yeah the only thing I would like to

1719.64

add in addition uh if you are watching

1722.039

the video uh just make sure to check out

1725.88

the notes section in uh YouTube or go

1729.36

out to developer.com and check out the

1731.399

blog for the podcast we do put

1733.679

additional links in there to other

1735.399

material and also to some of the

1737.519

software that we talked about within the

1740.279

uh conversations that we have uh good

1743.08

point yeah I always I forgot to say and

1744.919

you know links in the show notes because

1746.44

that's almost always going to be there

1747.88

there's going to be links to us and

1749.559

where we can other places that we

1751.08

reference so I think that'll wrap this

1753.08

one up we're going to go get back to our

1754.84

normal non-developer lives and you guys

1757.44

have a great one and we will talk to you

1759.399

next

1767.039

time