📺 Develpreneur YouTube Episode

Video + transcript

Handling Software Delivery Panic: Strategies for Developers

2024-05-28 •Youtube

Detailed Notes

Welcome back to another episode of Building Better Developers. Today, we’re tackling an issue that every developer faces at some point: panic during software delivery. Whether it’s a critical bug or a new feature that isn’t functioning as expected, panic can strike anytime your software fails in the hands of a user. Rob and Michael cover handling software delivery panic with practical tips and real-life examples.

Read more: https://develpreneur.com/handling-software-delivery-panic-strategies-for-developers

Stay Connected: Join the Developreneur Community

We invite you to join our community and share your coding journey with us. Whether you’re a seasoned developer or just starting, there’s always room to learn and grow together. Contact us at [email protected] with your questions, feedback, or suggestions for future episodes. Together, let’s continue exploring the exciting world of software development.

Transcript Text
[Music]
hey everybody we're back um so we're
thinking about what we're going to do
today and I trying to remember if we had
any I don't think we had anything
particular uh topic wise that we wanted
to cover this time around so is there
something you got off the top of your
head otherwise I'll think of something
off the top of my head real
quick not at the
moment okay I think uh skins go
something my rain into this week is
the um basically it's a customer panic
button and what happened I think I
mentioned this is I had a customer that
it's like you know hey you know go take
a look at the
site been working on it for a while it's
essentially it's not like not a full
demo but like a hey it's demo enough and
this is the this one of those where it's
like the primary guy that's got some
technical knowledge it's not like the
CEO or something like that it's somebody
that you expect to have a little bit of
although not a developer they have a
little bit of understanding of software
development and he does I mean there's
no question about that but the first
thing he did was he logged in and he
went to do like one thing that was like
and it was broken it was just like right
off the bat and it was one of those it
was because you know I'm used to it's
got like 15 values you have to enter in
and if you enter one of these wrong then
it throws it into the I'm not going to
show it to you pile basically because we
you know we're in flight and there's
some stuff there that it's basically
saying oh that's Legacy data so we're
not going to show you that right now and
so he goes and he creates this record it
doesn't show up on the list he panics
he's like oh my God it doesn't work at
all
and I guess in his you know in his
defense it didn't because he was blocked
it was like as soon as he did that he
can't move forward and then he's also
using you know some old data and so it's
you know Panic ensues and I think that's
something that I've seen it often enough
where it's like you put it out there and
somebody takes a look at it and it's
like bam first thing they do is they do
something different that breaks it and
then it's just like all right doesn't
work at all you it's like it's a
showstopper and even if you you know it
works you've run through it you know but
it's like it's a showstopper for them so
I think that's a handling those
situations what do you do to first to
call them and then to you know
essentially go into a little bit of
firefighting mode to do a little triage
to make sure that figure out what
they're doing and and get moving forward
does that sound like a cool or at least
a topic for the first part yeah so we're
going to focus more
on completed code going out running into
issues or proof of Concepts going out
with incorrect expectations causing the
firefighter or um this would be probably
both but it's really more the latter
because it's really more this is where
it's like we haven't fully where you
know there are issues so this is beta
software kind of stuff this is where you
know there's some issues you know
there's a couple things going on you're
not expect it's not should not be
expected to be 100% and literally the
customer is like I know it's got bugs I
know you're still working through stuff
it's like okay so we're on the same page
but we're not on the same page so it's
dealing with those kinds of situations
because I think if
you're if you're new to this if you
haven't handled it before then like
panic and sues on your side as well
because then you're s and and I've been
in those where it's like shoot that
should work and the next thing you know
your head's
down trying to figure out how to fix
that one bug particularly if it occurs
like in a meeting or something because
then it's like all right now I'm totally
focused on this bug as opposed to maybe
something better that you could be doing
with that that project or that
application so I'll sort of like I'll
set the table and then throw it to you
and see what your thoughts are on it and
how you would handle it because I think
it's it'll be another one of those I'll
sort of be like here's what happened
here's my thoughts or here's how I
handle it and then throw it to you for
the followup
cool yeah it's kind of funny because
this if we think back to American own
patient that was Jeff anytime you see
your C son he would the first thing he
would do is go break it yeah it's like
like I said I've seen those people
before now I was thinking Jeff was one
of those some people are gifted like
that they like they can break it because
they don't do it the same way the
developers do and I don't want to I
don't want to yeah right out of the the
um the podcast section so yeah we'll
into that and we we'll talk about that
as well the magic people that are out
there hello and welcome back we are
diving into yet another episode of our
podcast it is building better developers
it is develop andur it was originally
it's develop or became building develop
better developers because the lady in
the box also known as
Alexa uh does not recognize developing
or very well if you say hey play the
next episode of that however if you do
say play the next so to building better
developers she will pop right up if I
were to say that right now she might
even be so sensitive that she would fire
that off wherever your room is so just
so you know that being said my name is
Rob Broadhead I am a founder of develop
andur also a founder of RB Consulting
and uh we've just been cruising through
however many we're up to now 700 plus
episodes on the other side of the
digital divide is my friend Michael I'll
let you introduce yourself
hey everyone my name is Michael Mage I'm
another co-founder of developing ER and
I'm also a founder of Invision
QA this episode I don't want to hang you
have you hanging on too long this
episode we're gonna talk about Panic
basically this is uh really not an
uncommon thing uh probably unfortunately
but it's something that very workable
it's something you can work with that
you can handle and make the Panic not be
a horrible thing and this pan is when
you are delivering software usually now
obviously if it's 100% like we've tested
it this should be bulletproof and
somebody breaks it and panic ensues okay
it's probably a little bit more panic
because that means you didn't you didn't
QA right or they're doing something
completely different that has you know
new and it should not be new at this
point we'll talk about that a little bit
but if it's a beta or something like
that there are these people and sort of
precede it with this is there some
people are just gifted at breaking stuff
you can deliver your you can test it as
thoroughly as you think you can you put
your software out there two minutes
later they give you an email back and
say hey I can't make this work this is
just broken and I've run across several
people like this uh usually QA people
are that's like where they end up
because that's their gift that's what
they do best but sometimes it's going to
be your manager it's going to be your it
could be a CEO it could be whoever it is
and it's usually somebody you don't want
it to be because you just gave them
something that should work and they
basically responded right away it
doesn't and the Panic is usually when
you send it out they should be you know
maybe testing like it's a beta product
they should be testing it and it is a
non it's a non-starter for them they
have hit a roadblock it is something
where they cannot move forward and I
mention this because I had this just the
other day with a customer who is it's
not like this is somebody that is not
technically knowledgeable I mean they're
not a developer but they understand the
software process they understand how
these things go so I'm like hey you can
have an alpha version of it start
banging around a little bit right away
he gets to a
showstopper little bit of a and I didn't
you know I'm in a call with him and he's
like yeah I couldn't get this to work
and so there is a little bit of that
panic because it's like now okay he and
he was he was like this isn't going to
work at all there's no way we're like I
can't imagine that you're anywhere close
to end of this thing being done none of
it works none of it looks right all this
kind of stuff and all of that was and
even he during this was saying you know
I know we haven't really like focused on
the design I know we haven't really
focused I know there's bugs and things
like that but because he's blocked he's
panicked because he's like all right now
this this doesn't work at all it goes
from you know in his mind it goes from
We're 95% there or 90% there or
something like that to we're not
anywhere
close those are the kinds of things we
panic sets in and if you are especially
if you're a consultant uh you know
you're working with a customer or if
your employee and your manager is is
hitting this situation Panic can ensue
on your end because now you're like oh
crap I got to fix this like right
away now two things one don't panic say
take a step back take a deep breath
first thing you want to do is get the
situation that they went into to break
it because sometimes it's as simp as
oh I didn't get your user ID set up with
the right permission or oh you can't set
that value because this other thing's
going on or oh by the way yeah you did
that but that should never happen
because we discussed it because it's in
the requirements it doesn't happen that
way we have it allowed because you're an
admin you know or something like that
and sometimes it is a bug sometimes it's
like oh yeah that's right you don't see
that or that value is not there
and it's just matter of in my testing in
my development mindset I missed it I
didn't think about somebody entering
that value at that point or I didn't
realize that you could enter that value
take that into advisement say okay cool
take a note I will fix that I will
handle that and then do so because they
found it you want to be you do want to
prioritize that a little bit is make
sure that that gets addressed
particularly before you cut them loose
on the the application again if it's
something you can fix right there maybe
but be careful about rabbit holes
because I have been in more especially
like if you're demoing something and
you're on a demo and it breaks right
there because somebody says hey why
don't can you try this and you're like
oh sure I can try that because this
works great and then it blows up one
don't ever say yes I can try that
because like if you haven't gone through
your if you're not sticking to your
script in a demo you're going to have
problems this trust me there just I
don't care how good you think the
software is is there is a magic about
people saying hey can you enter this
value can you do this real quick in a
demo and it breaks everything and if you
try to fix it inevitably you're going to
break everything so now you can't even
get back to the working state that you
had right before you got into the demo
so don't panic you know what level of
trustworthiness your your software is at
if it's crap okay it's like yeah I know
it's full of bugs it's like here's this
we have one happy path and if you vary
from it it will break okay just make
sure you're clear to that but if it's
something where it's like hey we're
mostly there but we still have bugs
understand that okay this person it's
basically thank you you just found a bug
I'll knock that out put it on my list
and move on if they're panicking feel
free to like you know especially if
they're they go from we think this is
almost there to this is not even close
and we're going to bail you know we're
going to bail out on the project I guess
it' be the worst possible thing it's
like okay we're done we're not even
going to talk to you anymore
take a deep breath say hey let me show
you where this does work let me walk you
through it instead of you walking
through it because obviously they found
some broken stuff say hey let me just
alleviate some fears I'm going to walk
you through this and show you that it
does work and that will help alleviate
those fears and help people from
panicking and
overreacting now that's just it in a
nutshell I want to throw it over to
Michael because he's been like
snickering along the way as well and see
what your thoughts are in these kinds of
situations because I also know you have
experienced more than a couple of
them thank you rob
yeah uh plenty of situations like that
um one particular came to mind and we
briefly touched on it before we kicked
off the podcast was uh we actually
worked together at a place where no
matter what we did we could try to test
our code the moment we said the code was
ready boss would go out and within
minutes oh I found a bug and it's like
what did you do um so there was always
that constant anxiety to hit that button
to say the code is done it it's
committed uh and things are good which
actually led me down a interesting path
of my career over that because um prior
to that in college I went through a lot
of classes that actually push test
driven development and
early on a lot of companies and a lot of
developers don't follow that model
because really a lot of people think
well if I write my code the code
performs there's my test the code
works and in a way sure but we still
need to write our unit test we still
need to have some type of QA around our
applications however if you go into the
mindset of a requirement or an
application that you're putting out with
testing first in fact I actually did
that this week I had a ticket come
across that was
fairly well documented with the
requirements but there was kind of a few
missing pieces so I had to go back ask
some more questions uh kind of refine
the requirements first but then I
literally started with a main method and
started stepping through okay what is
the final output what is is supposed to
generate so I created my pojo to
generate the or I'm sorry the dto to
generate the uh output from the API call
so I had a little hardcoded U Json
script that kicked back out into this
call and produced a dto and then I
slowly walked through all the steps so
by the time I was done I literally had
15 methods each method was a specific
requirement point it did a specific task
easily to test and when I was done
testing was mute I all I had to do is
literally write 15 unit tests to test my
methods done and then write a couple
integration tests to test the software
now in Rob situation where he was
talking about this I I've run into a lot
of situations especially with new
clients or even Prospect clients where
it's like hey I have this problem I need
this application or I'm looking to have
this done so what you do is you and you
mock something up you throw something
together that's you know on rubber bands
Sho strings and duct tape to just kind
of present what it will do the problem
is especially in Enterprise if you show
it to the wrong person they think oh
this is great it's going to production
tomorrow and you're like oh no no um
there there's and then you end up in
these weird coding situations where
you're struggling uh 400 you know 200
hours trying to get something out the
door that the big wig thinks was ready
yesterday and it's not so they kind of a
flip to where they went from high level
of hey we're ready to go to you know no
confidence in the project in this
situation you went from hey even though
this doesn't look uh you know isn't
fully functional you demoed
something that looked functional enough
and they're already going to production
so now you're struggling to fill those
holes and gaps to avoid the downfall
that could be coming
and the testing is a good point on that
uh because that is one of the one of the
things you can do to help you know to
make a make lemonade out of the the
lemons of a situation like this is to
talk to them about how did you generate
this issue how did this come about
particularly if you're further into your
your software development life cycle
where this should be a fairly mature
product and I've run into this as well
where I've got a I've got another
customer that it's a fairly mature
product but it is it's amazing and he's
in the QA world uh he's very good at
breaking some and he's got a couple of
employees that are very good at like
they just they always do stuff different
or different enough that it breaks the
system and so what you do is you find
out what they did if you can you know
these days you can maybe have them
recorded or something like that is just
like figure out those steps and then
build that into your tests so for
example this this application I just
talked about one of the things we do is
we've got a basically selenium
based robot that runs through the whole
site and does a whole bunch of stuff to
go check different things out look at
variables make sure things are are
working right it's it's like a smoke
test maybe a little deeper than that but
it's just really so when we go deploy
something kick this thing off hit all
these different pages look at all the
results let's make sure everything's
working still and then if we've got like
over time as they've said oh hey we did
this and this broke then we have
specific we just add that in so now we
test and we'll go work look at that
specific thing and say okay I'm going to
do this action and it better come back
correctly a something I learned back in
college with some of these kinds of
things the special stuff um is we had a
guy and I will never forget his last
name his last name was ens shank and the
way it was
spelled actually broke everybody's sort
we had something that you were supposed
to go in and you're sorting and name or
string based by uh just alphabetical
order and the P the and the pattern that
we went through the sort that we did and
I can't remember which one it was but it
assumed a certain thing it a certain it
assumed a certain order of letters we
didn't realize that until we actually
hit it and realized it was like an i
before e instead of E before I or
something like that I can't remember
what it was but it was something to that
level that only certain words and his
name happened to be one of those words
would break it and the test was you put
your name into it and this guy was like
the smartest guy in the class and he
would run through and he could not get
this thing to work and finally like
dragg the rest of us in we all figured
it out and went through it but it was
because everybody else's worked because
their name didn't have that little magic
problem and that's so often what happens
with an application is that they take
one step different or they set one value
different and that's the one that the
combination of things then breaks it and
it's a matter of find out what that step
is reproduce it and then you should be
able to figure out why is it that their
specific series of steps they took
caused a break when yours did not and so
it is a again something it can be yes
sort of uncomfortable at the moment
because people are like this doesn't
work at all and you're sort of stuck
trying to figure out how to fix it but
if you step back and say okay it's a bug
software has that let's just go with
that I'm going to go figure out what it
did fix it and then you can show them
the next time around and it helps build
confidence to say hey this is what you
did we didn't catch this and maybe you
can show three other flavors of that
that process or that approach that would
have broken it but it's like hey look we
can catch this and this and this and
this and build that confidence back up
and that's Sometimes the best thing is
to say it's
it's not just that you because I think
people don't some people expect you to
have 100% perfect software out of the
gates it's not going to happen but a lot
of people realize there's going to be
some bugs and things like that there's
going to be issues there's G to be
changes if you can respond quickly and
in a you know a logical Manner and say
hey here's what was going on here's what
we changed this is how it's been
improved then a lot of times that is
going to be the big win coming out of it
uh final thoughts on that before we wrap
this one up yeah one additional things
especially with what you kind of
experienced to kind of point out when
you're working on code or tickets or
requirements some things to think about
as you're before you even pick up the
ticket or start the work one do you have
enough requirements do you have enough
Define to work the problem for instance
if it's user inputs do you have the men
Max is it alpha numeric is it Alpha only
can it take special characters Common
Sense questions that kind of want to
Define before you start writing because
that will impact the user
experience one other thing to think
about is not just from the user side but
also what are the uh the um
basically the user acceptance criteria
what you know if I complete this ticket
how do I test it what is acceptable for
completion you know what the minimum
level of completion and then lastly make
sure you add enough debuggers or
comments in your code so that if an
exception or a problem does occur it
gets logged properly so you're not
having to dig through the code to figure
out where the heck something went
wrong that is actually where a lot of
times I've found that is that I found
that you know customer has a problem I
can't track it down and so we add some
logging around that like maybe it's a
process that we thought wasn't going to
fail or code that were like oh that's
going to work every time oh wait no it
doesn't because they just broke
somewhere in there so sometimes that's
where you you know add exception
handling logging things like that U
anything that you can use to help you
with debugging it is always going to be
helpful as well because it's just like
down the road you can say
okay we know that this section of code
at least is is logging the things that
it needs to for us to be able to debug
it outside of the you know outside of
actually doing that that action outside
of like being on the server and of
course depending on your application
sometimes that's easier said than done
uh sometimes you can get more
information out of your server sometimes
you can't all of that it's uh you know
take that on a case-by Case basis that
being said we're going to take this uh
minute by minute on a case-by Case basis
and the case right now is to wrap this
sucker up so we are going to come back
we're not done yet with our season we're
going to continue to talk through some
of the just the challenges and the
experiences that we have each week some
of the technology that we're running
into if you have any questions comments
or anything like that or suggestions
recommendations give us a shoot us an
email at info developer.com check us out
on developer.com um you''ve got a
comment page contact us you can check us
out on our YouTube channel you can check
it out check us out at develop andur on
Twitter SLX you name it we're out there
somewhere and if not let us know and
we'll go get out there so you can
contact us there you just got a contact
us on a different thing chicken and egg
problem that being said go out there and
have yourself a great day a great week
and we will talk to you next
time the rest of you we're going to
continue to talk to you as we wrap this
one up and then cut into figure out what
we're going to do with our next episode
around uh any extra bonus thoughts on
that actually yeah so as you were
wrapping up it just dawned on me um we
didn't talk about tools so as you're
running into these problems or you're
working on software look at using tools
like sonar L sonar ke
uh code debuggers um these are very
useful tools to help you identify areas
of risk within your code potential uh
dependency issues or even uh risk for
like SQL injections things of that
nature the other thing to think of is to
also maybe do like an OAS vulnerability
check to see if there's any dependencies
that your software might be using that
also potentially could have bugs because
if you use thirdparty plugin the bug may
not be you it might be someone else and
then you've got to go down a whole
different Rabbit Hole to fix your coat
yeah I would I would add on yeah I
think if you don't use static code
analysis tools then uh it's very good to
add it's built in there's actually a lot
of them built into most of the modern
IDE but go if you're not really
comfortable about if you don't know if
they're being used go just pick your
favorite search engine do uh static
static code analysis tools for
whatever your language is you know Java
python net whatever and you will find
some uh a lot of them are going to be
the same that you're going to see it's
going to be the same name sort of like
you have like log for J log for n all
those it's one of those you're going to
see it for whatever your language is and
then once you can get an idea of what is
out there then it'll be very helpful
there's also uh there's things you can
tag attach into your uh your GitHub rep
your git
repositories and do some stuff there you
can build it into your if you have like
a your devop structure some of those
things you can use testing you can do
static code analysis as well it is at
least at the same level I think as
particularly unit tests and things like
that I've actually found it's probably
more useful and it's actually useful to
better understand the language I don't
know how many times that I've run an a
static analysis thing across a language
that I've been using sometimes even for
a while and it will bring up some stuff
and say hey you should try this or you
should do that or this isn't used
anymore or this is going to be
deprecated and maybe you have a language
doesn't you don't realize that's going
to be deprecated or you don't realize
there's a better newer way to handle
that process and like Michael implied
it's going to give you a lot of times
Insight of things like hey if you do
this you could be susceptible to some
sort of a an attack or if you do this
you're probably GNA have some logic
issue it's things like that that you
usually will not catch in a compile you
know in quotes a compile run but you
will catch once you start shoving data
through there and it's really helpful
for interpreted languages like a you
know like a python or something like
that and even PHP uh I found that
there's a lot of times those things will
catch stuff before you get it in a you
know actually out in a live environment
and it just speeds up the debug the test
fix
cycle that being said looks like you got
one more thing to say so I'm G to let
you say one more thing yeah in addition
to all of that look at the tools that
you're using a lot of the applications
or Frameworks now have U user input
functionality so like if you have an
input field you can add oh this is alpha
numeric oh it's min max characters so if
you're doing anything especially front
end or user facing make sure that you
are looking at those inputs and applying
the correct um configuration to those
components as you're putting them out
there it'll make your life so much
easier if you do it right as you're
doing it versus trying to do it on the
back
end agreed um it's just again it's
always one of those the sooner you catch
stuff and address it the you know the
the less it's going to cost you in
recoding it and making those changes so
we wrap this one up and we will talk to
you guys next time around leave com
comments notes all that kind of good
stuff uh we will have show notes
probably for some of this I think we'll
try to get some of the links in the show
notes for a couple of the static
analysis tools uh just to help you out
and uh we will be back next time around
[Music]
Transcript Segments
1.35

[Music]

29.48

hey everybody we're back um so we're

32.96

thinking about what we're going to do

34.64

today and I trying to remember if we had

37.64

any I don't think we had anything

40.039

particular uh topic wise that we wanted

43.2

to cover this time around so is there

46.36

something you got off the top of your

47.32

head otherwise I'll think of something

48.8

off the top of my head real

51.52

quick not at the

54.079

moment okay I think uh skins go

58.359

something my rain into this week is

63.199

the um basically it's a customer panic

67.04

button and what happened I think I

69.04

mentioned this is I had a customer that

71.68

it's like you know hey you know go take

73.68

a look at the

75.159

site been working on it for a while it's

78.2

essentially it's not like not a full

80.4

demo but like a hey it's demo enough and

85.04

this is the this one of those where it's

86.4

like the primary guy that's got some

88.28

technical knowledge it's not like the

90.119

CEO or something like that it's somebody

92.28

that you expect to have a little bit of

94.399

although not a developer they have a

96.479

little bit of understanding of software

98

development and he does I mean there's

99.36

no question about that but the first

101.479

thing he did was he logged in and he

102.92

went to do like one thing that was like

105.68

and it was broken it was just like right

107.64

off the bat and it was one of those it

109.84

was because you know I'm used to it's

111.56

got like 15 values you have to enter in

113.56

and if you enter one of these wrong then

115

it throws it into the I'm not going to

117.719

show it to you pile basically because we

120.039

you know we're in flight and there's

122.2

some stuff there that it's basically

123.439

saying oh that's Legacy data so we're

125.079

not going to show you that right now and

126.84

so he goes and he creates this record it

128.479

doesn't show up on the list he panics

129.84

he's like oh my God it doesn't work at

131.44

all

133.08

and I guess in his you know in his

135.4

defense it didn't because he was blocked

137.599

it was like as soon as he did that he

139.28

can't move forward and then he's also

141.08

using you know some old data and so it's

144

you know Panic ensues and I think that's

146.4

something that I've seen it often enough

148.08

where it's like you put it out there and

150.519

somebody takes a look at it and it's

151.92

like bam first thing they do is they do

154.239

something different that breaks it and

156.519

then it's just like all right doesn't

158.8

work at all you it's like it's a

160.44

showstopper and even if you you know it

162.56

works you've run through it you know but

164.959

it's like it's a showstopper for them so

167.12

I think that's a handling those

169.84

situations what do you do to first to

172.92

call them and then to you know

175.04

essentially go into a little bit of

176.92

firefighting mode to do a little triage

178.76

to make sure that figure out what

180.56

they're doing and and get moving forward

182.12

does that sound like a cool or at least

184

a topic for the first part yeah so we're

186.44

going to focus more

188.68

on completed code going out running into

192

issues or proof of Concepts going out

194.879

with incorrect expectations causing the

198.879

firefighter or um this would be probably

203.12

both but it's really more the latter

204.599

because it's really more this is where

205.879

it's like we haven't fully where you

207.959

know there are issues so this is beta

210.319

software kind of stuff this is where you

211.76

know there's some issues you know

212.84

there's a couple things going on you're

214.04

not expect it's not should not be

216.68

expected to be 100% and literally the

219.319

customer is like I know it's got bugs I

221.12

know you're still working through stuff

222.64

it's like okay so we're on the same page

226.92

but we're not on the same page so it's

228.28

dealing with those kinds of situations

229.959

because I think if

231.92

you're if you're new to this if you

234.079

haven't handled it before then like

235.84

panic and sues on your side as well

237.56

because then you're s and and I've been

239

in those where it's like shoot that

240.319

should work and the next thing you know

241.56

your head's

242.599

down trying to figure out how to fix

244.84

that one bug particularly if it occurs

246.959

like in a meeting or something because

248.28

then it's like all right now I'm totally

249.56

focused on this bug as opposed to maybe

251.84

something better that you could be doing

253.519

with that that project or that

255.88

application so I'll sort of like I'll

258.68

set the table and then throw it to you

259.959

and see what your thoughts are on it and

261.28

how you would handle it because I think

262.56

it's it'll be another one of those I'll

263.919

sort of be like here's what happened

265.52

here's my thoughts or here's how I

266.72

handle it and then throw it to you for

269.199

the followup

270.32

cool yeah it's kind of funny because

274

this if we think back to American own

276.56

patient that was Jeff anytime you see

278.68

your C son he would the first thing he

280.479

would do is go break it yeah it's like

283.24

like I said I've seen those people

284.24

before now I was thinking Jeff was one

285.36

of those some people are gifted like

286.96

that they like they can break it because

289.36

they don't do it the same way the

291.84

developers do and I don't want to I

293.84

don't want to yeah right out of the the

296.84

um the podcast section so yeah we'll

299.88

into that and we we'll talk about that

301.36

as well the magic people that are out

304.479

there hello and welcome back we are

307.68

diving into yet another episode of our

310.8

podcast it is building better developers

312.72

it is develop andur it was originally

315.16

it's develop or became building develop

317.039

better developers because the lady in

318.56

the box also known as

321.68

Alexa uh does not recognize developing

324.4

or very well if you say hey play the

326.319

next episode of that however if you do

328.24

say play the next so to building better

330.44

developers she will pop right up if I

332.84

were to say that right now she might

334.16

even be so sensitive that she would fire

335.8

that off wherever your room is so just

337.919

so you know that being said my name is

341.24

Rob Broadhead I am a founder of develop

344.039

andur also a founder of RB Consulting

347.479

and uh we've just been cruising through

349.4

however many we're up to now 700 plus

351.6

episodes on the other side of the

354.68

digital divide is my friend Michael I'll

357.319

let you introduce yourself

359.759

hey everyone my name is Michael Mage I'm

362

another co-founder of developing ER and

364.08

I'm also a founder of Invision

366.84

QA this episode I don't want to hang you

370.36

have you hanging on too long this

371.52

episode we're gonna talk about Panic

374.4

basically this is uh really not an

378.199

uncommon thing uh probably unfortunately

380.88

but it's something that very workable

382.36

it's something you can work with that

383.639

you can handle and make the Panic not be

387.44

a horrible thing and this pan is when

390.24

you are delivering software usually now

393.72

obviously if it's 100% like we've tested

395.919

it this should be bulletproof and

397.28

somebody breaks it and panic ensues okay

401.199

it's probably a little bit more panic

402.88

because that means you didn't you didn't

404.84

QA right or they're doing something

407.36

completely different that has you know

409.4

new and it should not be new at this

411.28

point we'll talk about that a little bit

413.8

but if it's a beta or something like

415.4

that there are these people and sort of

418

precede it with this is there some

419.199

people are just gifted at breaking stuff

422.52

you can deliver your you can test it as

425.56

thoroughly as you think you can you put

427.759

your software out there two minutes

429.44

later they give you an email back and

430.639

say hey I can't make this work this is

432.56

just broken and I've run across several

435.16

people like this uh usually QA people

438.12

are that's like where they end up

440

because that's their gift that's what

442.24

they do best but sometimes it's going to

444.199

be your manager it's going to be your it

445.84

could be a CEO it could be whoever it is

448.479

and it's usually somebody you don't want

450.039

it to be because you just gave them

452.44

something that should work and they

456.24

basically responded right away it

458.24

doesn't and the Panic is usually when

461.599

you send it out they should be you know

464.039

maybe testing like it's a beta product

465.8

they should be testing it and it is a

469.28

non it's a non-starter for them they

471.44

have hit a roadblock it is something

473.08

where they cannot move forward and I

475.28

mention this because I had this just the

476.759

other day with a customer who is it's

480

not like this is somebody that is not

481.919

technically knowledgeable I mean they're

483.36

not a developer but they understand the

485.199

software process they understand how

486.72

these things go so I'm like hey you can

489.479

have an alpha version of it start

491.08

banging around a little bit right away

493.52

he gets to a

495.08

showstopper little bit of a and I didn't

497.4

you know I'm in a call with him and he's

498.919

like yeah I couldn't get this to work

500.919

and so there is a little bit of that

502.159

panic because it's like now okay he and

503.879

he was he was like this isn't going to

505.68

work at all there's no way we're like I

507.759

can't imagine that you're anywhere close

509.199

to end of this thing being done none of

511.44

it works none of it looks right all this

513.12

kind of stuff and all of that was and

515.479

even he during this was saying you know

518

I know we haven't really like focused on

520.2

the design I know we haven't really

521.56

focused I know there's bugs and things

523

like that but because he's blocked he's

526.24

panicked because he's like all right now

528.2

this this doesn't work at all it goes

530.2

from you know in his mind it goes from

532.399

We're 95% there or 90% there or

534.519

something like that to we're not

536

anywhere

537.079

close those are the kinds of things we

539.24

panic sets in and if you are especially

542.32

if you're a consultant uh you know

543.959

you're working with a customer or if

545.6

your employee and your manager is is

547.519

hitting this situation Panic can ensue

550.36

on your end because now you're like oh

552.36

crap I got to fix this like right

554.56

away now two things one don't panic say

558.92

take a step back take a deep breath

562.279

first thing you want to do is get the

564.959

situation that they went into to break

567.24

it because sometimes it's as simp as

571.36

oh I didn't get your user ID set up with

574.44

the right permission or oh you can't set

576.72

that value because this other thing's

579.519

going on or oh by the way yeah you did

583

that but that should never happen

585.839

because we discussed it because it's in

587.36

the requirements it doesn't happen that

588.88

way we have it allowed because you're an

590.44

admin you know or something like that

592.88

and sometimes it is a bug sometimes it's

594.959

like oh yeah that's right you don't see

597.32

that or that value is not there

600

and it's just matter of in my testing in

602.8

my development mindset I missed it I

605.839

didn't think about somebody entering

607.72

that value at that point or I didn't

610

realize that you could enter that value

612.72

take that into advisement say okay cool

615.399

take a note I will fix that I will

617.32

handle that and then do so because they

620.48

found it you want to be you do want to

622.76

prioritize that a little bit is make

624.279

sure that that gets addressed

626

particularly before you cut them loose

627.399

on the the application again if it's

629.16

something you can fix right there maybe

632.279

but be careful about rabbit holes

633.959

because I have been in more especially

635.48

like if you're demoing something and

637.44

you're on a demo and it breaks right

639.76

there because somebody says hey why

641.92

don't can you try this and you're like

643.6

oh sure I can try that because this

644.92

works great and then it blows up one

647.72

don't ever say yes I can try that

649.519

because like if you haven't gone through

651.839

your if you're not sticking to your

653.079

script in a demo you're going to have

655.36

problems this trust me there just I

657.399

don't care how good you think the

658.8

software is is there is a magic about

661.399

people saying hey can you enter this

662.76

value can you do this real quick in a

664.32

demo and it breaks everything and if you

666.76

try to fix it inevitably you're going to

669.68

break everything so now you can't even

671.36

get back to the working state that you

674

had right before you got into the demo

676.72

so don't panic you know what level of

682.399

trustworthiness your your software is at

685.12

if it's crap okay it's like yeah I know

687

it's full of bugs it's like here's this

689.32

we have one happy path and if you vary

691.079

from it it will break okay just make

693.079

sure you're clear to that but if it's

694.8

something where it's like hey we're

696

mostly there but we still have bugs

698.48

understand that okay this person it's

699.959

basically thank you you just found a bug

702.079

I'll knock that out put it on my list

703.92

and move on if they're panicking feel

707.16

free to like you know especially if

708.48

they're they go from we think this is

710.88

almost there to this is not even close

713

and we're going to bail you know we're

714.24

going to bail out on the project I guess

715.68

it' be the worst possible thing it's

716.959

like okay we're done we're not even

718

going to talk to you anymore

721.12

take a deep breath say hey let me show

724.079

you where this does work let me walk you

726.399

through it instead of you walking

728

through it because obviously they found

730.079

some broken stuff say hey let me just

733.079

alleviate some fears I'm going to walk

734.56

you through this and show you that it

735.839

does work and that will help alleviate

739.44

those fears and help people from

741.44

panicking and

742.88

overreacting now that's just it in a

744.92

nutshell I want to throw it over to

746.04

Michael because he's been like

747.16

snickering along the way as well and see

748.8

what your thoughts are in these kinds of

750.959

situations because I also know you have

753.839

experienced more than a couple of

756.48

them thank you rob

759.44

yeah uh plenty of situations like that

764.16

um one particular came to mind and we

767.16

briefly touched on it before we kicked

768.6

off the podcast was uh we actually

771.519

worked together at a place where no

773.519

matter what we did we could try to test

776.12

our code the moment we said the code was

778.44

ready boss would go out and within

781.16

minutes oh I found a bug and it's like

785.16

what did you do um so there was always

788.399

that constant anxiety to hit that button

790.839

to say the code is done it it's

793.36

committed uh and things are good which

797.32

actually led me down a interesting path

799.92

of my career over that because um prior

803.92

to that in college I went through a lot

805.68

of classes that actually push test

807.36

driven development and

809.72

early on a lot of companies and a lot of

812.48

developers don't follow that model

815.88

because really a lot of people think

818.16

well if I write my code the code

820.8

performs there's my test the code

823.8

works and in a way sure but we still

827.959

need to write our unit test we still

829.519

need to have some type of QA around our

832.519

applications however if you go into the

835.199

mindset of a requirement or an

837.8

application that you're putting out with

840

testing first in fact I actually did

842.24

that this week I had a ticket come

844.199

across that was

847.16

fairly well documented with the

850.199

requirements but there was kind of a few

853.16

missing pieces so I had to go back ask

856.04

some more questions uh kind of refine

858.16

the requirements first but then I

860.12

literally started with a main method and

864.839

started stepping through okay what is

867.8

the final output what is is supposed to

869.8

generate so I created my pojo to

872.32

generate the or I'm sorry the dto to

874.56

generate the uh output from the API call

879.399

so I had a little hardcoded U Json

882.639

script that kicked back out into this

884.639

call and produced a dto and then I

887.04

slowly walked through all the steps so

889.04

by the time I was done I literally had

891.639

15 methods each method was a specific

894.839

requirement point it did a specific task

897.959

easily to test and when I was done

900.24

testing was mute I all I had to do is

902.6

literally write 15 unit tests to test my

906.199

methods done and then write a couple

908.88

integration tests to test the software

912.24

now in Rob situation where he was

915

talking about this I I've run into a lot

917.519

of situations especially with new

919.8

clients or even Prospect clients where

922.519

it's like hey I have this problem I need

924.92

this application or I'm looking to have

927.16

this done so what you do is you and you

930

mock something up you throw something

931.68

together that's you know on rubber bands

934.519

Sho strings and duct tape to just kind

936.839

of present what it will do the problem

939.519

is especially in Enterprise if you show

941.639

it to the wrong person they think oh

943.56

this is great it's going to production

945.199

tomorrow and you're like oh no no um

949.079

there there's and then you end up in

950.68

these weird coding situations where

952.279

you're struggling uh 400 you know 200

955.639

hours trying to get something out the

957.36

door that the big wig thinks was ready

960.04

yesterday and it's not so they kind of a

963.839

flip to where they went from high level

967.079

of hey we're ready to go to you know no

970.92

confidence in the project in this

972.6

situation you went from hey even though

974.68

this doesn't look uh you know isn't

976.48

fully functional you demoed

978.92

something that looked functional enough

981.56

and they're already going to production

983.04

so now you're struggling to fill those

984.839

holes and gaps to avoid the downfall

987.24

that could be coming

989.36

and the testing is a good point on that

991.92

uh because that is one of the one of the

995.079

things you can do to help you know to

998.24

make a make lemonade out of the the

1000.12

lemons of a situation like this is to

1002.519

talk to them about how did you generate

1004.68

this issue how did this come about

1006.759

particularly if you're further into your

1009.639

your software development life cycle

1011.36

where this should be a fairly mature

1013.079

product and I've run into this as well

1015.399

where I've got a I've got another

1017.56

customer that it's a fairly mature

1019.279

product but it is it's amazing and he's

1021.959

in the QA world uh he's very good at

1024.6

breaking some and he's got a couple of

1026.199

employees that are very good at like

1027.959

they just they always do stuff different

1030.72

or different enough that it breaks the

1033.72

system and so what you do is you find

1035.76

out what they did if you can you know

1037.52

these days you can maybe have them

1038.64

recorded or something like that is just

1040.16

like figure out those steps and then

1042.199

build that into your tests so for

1044.799

example this this application I just

1047.039

talked about one of the things we do is

1049.32

we've got a basically selenium

1052.44

based robot that runs through the whole

1055.24

site and does a whole bunch of stuff to

1057

go check different things out look at

1058.72

variables make sure things are are

1060.44

working right it's it's like a smoke

1062.28

test maybe a little deeper than that but

1063.84

it's just really so when we go deploy

1066.16

something kick this thing off hit all

1068.44

these different pages look at all the

1069.84

results let's make sure everything's

1071.039

working still and then if we've got like

1074.52

over time as they've said oh hey we did

1076.919

this and this broke then we have

1078.88

specific we just add that in so now we

1081.36

test and we'll go work look at that

1083.52

specific thing and say okay I'm going to

1085.08

do this action and it better come back

1087.559

correctly a something I learned back in

1090.4

college with some of these kinds of

1092.559

things the special stuff um is we had a

1095.72

guy and I will never forget his last

1097.08

name his last name was ens shank and the

1101.32

way it was

1102.88

spelled actually broke everybody's sort

1106.52

we had something that you were supposed

1107.64

to go in and you're sorting and name or

1109.799

string based by uh just alphabetical

1112.88

order and the P the and the pattern that

1116.76

we went through the sort that we did and

1119.08

I can't remember which one it was but it

1122

assumed a certain thing it a certain it

1124.84

assumed a certain order of letters we

1126.919

didn't realize that until we actually

1128.76

hit it and realized it was like an i

1131.12

before e instead of E before I or

1132.96

something like that I can't remember

1134.039

what it was but it was something to that

1135.72

level that only certain words and his

1139.48

name happened to be one of those words

1141.52

would break it and the test was you put

1144.08

your name into it and this guy was like

1146.2

the smartest guy in the class and he

1148.4

would run through and he could not get

1150.24

this thing to work and finally like

1153.28

dragg the rest of us in we all figured

1155.039

it out and went through it but it was

1157.48

because everybody else's worked because

1159.88

their name didn't have that little magic

1162.76

problem and that's so often what happens

1165.24

with an application is that they take

1167.52

one step different or they set one value

1170.52

different and that's the one that the

1173.039

combination of things then breaks it and

1175.96

it's a matter of find out what that step

1178.039

is reproduce it and then you should be

1180.64

able to figure out why is it that their

1182.64

specific series of steps they took

1185.2

caused a break when yours did not and so

1188.36

it is a again something it can be yes

1191.52

sort of uncomfortable at the moment

1193

because people are like this doesn't

1193.919

work at all and you're sort of stuck

1197.32

trying to figure out how to fix it but

1199.48

if you step back and say okay it's a bug

1202.679

software has that let's just go with

1204.52

that I'm going to go figure out what it

1205.76

did fix it and then you can show them

1207.72

the next time around and it helps build

1209.679

confidence to say hey this is what you

1211.96

did we didn't catch this and maybe you

1213.679

can show three other flavors of that

1217

that process or that approach that would

1219.4

have broken it but it's like hey look we

1221.039

can catch this and this and this and

1222.679

this and build that confidence back up

1226.28

and that's Sometimes the best thing is

1227.72

to say it's

1229.2

it's not just that you because I think

1231.72

people don't some people expect you to

1233.4

have 100% perfect software out of the

1235.559

gates it's not going to happen but a lot

1237.52

of people realize there's going to be

1238.6

some bugs and things like that there's

1240.039

going to be issues there's G to be

1241.36

changes if you can respond quickly and

1244.64

in a you know a logical Manner and say

1246.24

hey here's what was going on here's what

1247.6

we changed this is how it's been

1249.48

improved then a lot of times that is

1251.679

going to be the big win coming out of it

1254.4

uh final thoughts on that before we wrap

1255.96

this one up yeah one additional things

1258.6

especially with what you kind of

1259.96

experienced to kind of point out when

1262.039

you're working on code or tickets or

1265.32

requirements some things to think about

1268.039

as you're before you even pick up the

1270

ticket or start the work one do you have

1273.679

enough requirements do you have enough

1276.2

Define to work the problem for instance

1278.919

if it's user inputs do you have the men

1281.2

Max is it alpha numeric is it Alpha only

1284.48

can it take special characters Common

1287.159

Sense questions that kind of want to

1289.4

Define before you start writing because

1291.08

that will impact the user

1293.72

experience one other thing to think

1295.72

about is not just from the user side but

1299.4

also what are the uh the um

1304.36

basically the user acceptance criteria

1308.039

what you know if I complete this ticket

1310.48

how do I test it what is acceptable for

1313.52

completion you know what the minimum

1315.24

level of completion and then lastly make

1318.2

sure you add enough debuggers or

1321.039

comments in your code so that if an

1323.32

exception or a problem does occur it

1325.679

gets logged properly so you're not

1327.64

having to dig through the code to figure

1329.159

out where the heck something went

1331.48

wrong that is actually where a lot of

1333.84

times I've found that is that I found

1335.36

that you know customer has a problem I

1337.559

can't track it down and so we add some

1340.4

logging around that like maybe it's a

1342.12

process that we thought wasn't going to

1343.44

fail or code that were like oh that's

1345.919

going to work every time oh wait no it

1347.76

doesn't because they just broke

1349.279

somewhere in there so sometimes that's

1350.6

where you you know add exception

1352.6

handling logging things like that U

1355.48

anything that you can use to help you

1356.96

with debugging it is always going to be

1358.799

helpful as well because it's just like

1360.52

down the road you can say

1362.24

okay we know that this section of code

1366.12

at least is is logging the things that

1368.279

it needs to for us to be able to debug

1370.2

it outside of the you know outside of

1372.88

actually doing that that action outside

1375.2

of like being on the server and of

1377

course depending on your application

1379.2

sometimes that's easier said than done

1381.32

uh sometimes you can get more

1382.32

information out of your server sometimes

1383.76

you can't all of that it's uh you know

1386.96

take that on a case-by Case basis that

1389.36

being said we're going to take this uh

1391.039

minute by minute on a case-by Case basis

1393

and the case right now is to wrap this

1395.08

sucker up so we are going to come back

1398.039

we're not done yet with our season we're

1399.72

going to continue to talk through some

1401

of the just the challenges and the

1403.4

experiences that we have each week some

1404.919

of the technology that we're running

1406.4

into if you have any questions comments

1408.76

or anything like that or suggestions

1410.24

recommendations give us a shoot us an

1412.2

email at info developer.com check us out

1414.52

on developer.com um you''ve got a

1417.12

comment page contact us you can check us

1419.52

out on our YouTube channel you can check

1421.52

it out check us out at develop andur on

1424.559

Twitter SLX you name it we're out there

1427.32

somewhere and if not let us know and

1429.52

we'll go get out there so you can

1430.88

contact us there you just got a contact

1432.679

us on a different thing chicken and egg

1434.24

problem that being said go out there and

1436.4

have yourself a great day a great week

1438.6

and we will talk to you next

1441.919

time the rest of you we're going to

1443.799

continue to talk to you as we wrap this

1445.279

one up and then cut into figure out what

1447.84

we're going to do with our next episode

1449.48

around uh any extra bonus thoughts on

1452.48

that actually yeah so as you were

1455.08

wrapping up it just dawned on me um we

1458.919

didn't talk about tools so as you're

1462.64

running into these problems or you're

1464.4

working on software look at using tools

1466.88

like sonar L sonar ke

1469.159

uh code debuggers um these are very

1473.76

useful tools to help you identify areas

1476.76

of risk within your code potential uh

1479.52

dependency issues or even uh risk for

1483.039

like SQL injections things of that

1484.88

nature the other thing to think of is to

1487.6

also maybe do like an OAS vulnerability

1490.559

check to see if there's any dependencies

1493

that your software might be using that

1495.039

also potentially could have bugs because

1496.64

if you use thirdparty plugin the bug may

1499.32

not be you it might be someone else and

1501.159

then you've got to go down a whole

1502.36

different Rabbit Hole to fix your coat

1505.039

yeah I would I would add on yeah I

1507.76

think if you don't use static code

1510.399

analysis tools then uh it's very good to

1513.159

add it's built in there's actually a lot

1515.2

of them built into most of the modern

1517.64

IDE but go if you're not really

1519.88

comfortable about if you don't know if

1520.96

they're being used go just pick your

1523.679

favorite search engine do uh static

1525.919

static code analysis tools for

1528.88

whatever your language is you know Java

1531.88

python net whatever and you will find

1534.96

some uh a lot of them are going to be

1536.679

the same that you're going to see it's

1537.96

going to be the same name sort of like

1539.559

you have like log for J log for n all

1542.24

those it's one of those you're going to

1543.88

see it for whatever your language is and

1546.039

then once you can get an idea of what is

1547.52

out there then it'll be very helpful

1549.399

there's also uh there's things you can

1551.159

tag attach into your uh your GitHub rep

1554.64

your git

1555.679

repositories and do some stuff there you

1557.84

can build it into your if you have like

1559.88

a your devop structure some of those

1562.24

things you can use testing you can do

1564.039

static code analysis as well it is at

1567.12

least at the same level I think as

1569.32

particularly unit tests and things like

1571

that I've actually found it's probably

1572.919

more useful and it's actually useful to

1576.24

better understand the language I don't

1577.799

know how many times that I've run an a

1579.399

static analysis thing across a language

1581.559

that I've been using sometimes even for

1583.12

a while and it will bring up some stuff

1585.679

and say hey you should try this or you

1587.2

should do that or this isn't used

1588.6

anymore or this is going to be

1589.96

deprecated and maybe you have a language

1592.279

doesn't you don't realize that's going

1593.48

to be deprecated or you don't realize

1594.88

there's a better newer way to handle

1597.24

that process and like Michael implied

1600.08

it's going to give you a lot of times

1602.6

Insight of things like hey if you do

1604.799

this you could be susceptible to some

1606.24

sort of a an attack or if you do this

1608.559

you're probably GNA have some logic

1610.72

issue it's things like that that you

1612.88

usually will not catch in a compile you

1614.96

know in quotes a compile run but you

1618.399

will catch once you start shoving data

1620.559

through there and it's really helpful

1622.159

for interpreted languages like a you

1624.12

know like a python or something like

1625.36

that and even PHP uh I found that

1627.559

there's a lot of times those things will

1629.08

catch stuff before you get it in a you

1632.279

know actually out in a live environment

1633.76

and it just speeds up the debug the test

1636.24

fix

1637.559

cycle that being said looks like you got

1640.52

one more thing to say so I'm G to let

1641.679

you say one more thing yeah in addition

1644.12

to all of that look at the tools that

1646.44

you're using a lot of the applications

1649.279

or Frameworks now have U user input

1655.039

functionality so like if you have an

1656.919

input field you can add oh this is alpha

1659.279

numeric oh it's min max characters so if

1662.799

you're doing anything especially front

1664.48

end or user facing make sure that you

1667.279

are looking at those inputs and applying

1670.159

the correct um configuration to those

1673.159

components as you're putting them out

1674.64

there it'll make your life so much

1675.96

easier if you do it right as you're

1677.519

doing it versus trying to do it on the

1679.36

back

1680.679

end agreed um it's just again it's

1683.96

always one of those the sooner you catch

1685.519

stuff and address it the you know the

1688.12

the less it's going to cost you in

1689.919

recoding it and making those changes so

1692.919

we wrap this one up and we will talk to

1695.12

you guys next time around leave com

1696.88

comments notes all that kind of good

1698.88

stuff uh we will have show notes

1700.48

probably for some of this I think we'll

1701.88

try to get some of the links in the show

1703.12

notes for a couple of the static

1704.88

analysis tools uh just to help you out

1707.6

and uh we will be back next time around

1712.47

[Music]