📺 Develpreneur YouTube Episode

Video + transcript

Dealing with Legacy Code: When to Let Go and Start Anew

2024-05-23 •Youtube

Detailed Notes

Welcome back! In our ongoing discussion on improving life and technology, today's focus is on a more dramatic scenario: saving customers from potential disaster due to legacy code. When does legacy code need to be retired, and what signs indicate it's time for a major overhaul? We'll dive into these questions through real-world examples and expert insights.

Read more: https://develpreneur.com/dealing-with-legacy-code-when-to-let-go-and-start-anew

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]
so we're going to carry right into the
next one is uh did you a topic that you
wanted to get into on the podcast
world
uh so the biggest challenge I've been
dealing with and I'm not sure if it it
will be a good
topic is
when to punt on Legacy and invest or
rewrite a current application because
I'm trying to figure out how after the
conversation I had with Dave today this
particular client is in a lot more
trouble than we initially
assessed um but I have to communicate to
them that yes I know you like this thing
and you want to stay on this thing but
there's no way we can duplicate
this um without a full rewrite and he
brought up a very interesting question
to me today and it's like do they have
the original source code because if they
don't have the original source code we
can't upgrade them past one more version
and that's
still six versions behind where IBM is
today and the version they're running
was from
2013 so I think that's a perfect topic
um I have a a project I did exactly that
it was a almost like there were 2014 was
the last time they did it and no they
didn't well they had some source code
but not everything they needed and so it
ended up being a really interesting
Journey that we had with them so I think
that is um I think that's what we'll
talk about is like we'll just give some
examples and our thoughts
on how to approach when do you when do
you kick the Legacy code out the door
and say it's time for
rewrite um gosh I've had several of
those so I think this is this will be a
fun one hello and welcome back we We are
continuing our discussions last time we
got into some stuff that was more like
living a better life this time is more
about uh saving customers from certain
death okay it may not be that bad but it
is it feels like it if you have ever
been in that situation and the situation
we're going to talk about today is
Legacy code when does it need to be
buried in the pyramids in Egypt it's
like when when has it gone on too
long or more importantly when has it
been too long since you touched that
Legacy code when did you let stuff run
too long and now it needs to be
replaced first off because I don't want
to be a miss about this I want to
introduce myself my name is Rob
Broadhead I am one of the founders of
developing orb building better
developers and on the other side is
Michael go ahead and introduce yourself
hey everyone my name is Michael Mass I'm
also one of the co-founders of
developer so we got into this for those
of you and I was totally remissed the
last episode I forgot I didn't give any
of like the cool links so go back to
that episode and just like click on all
the links and and all that kind of stuff
you normally would like our email
address and all that hopefully I'll
remember this time so those of you that
are watching this which if you're not we
also have a YouTube channel you can go
check out check that out develop nor we
have all this stuff getting posted twice
a week just like do the podcast we just
have bonus material and okay you do have
to look at our hor horrible faces but
other than that you have bonus material
and so we were talking before this that
Michael is is hit a spot right now with
a customer that really triggered me in a
sense because I've lived the same thing
and it's a customer that they they've
got a
product it's not a bad product it works
they like it all they really need to do
is update it
and I will start with an experience I
had and then throw it over to Michael is
it I ran into this same thing couple
it's now been a couple years and I'll
get a little technical I apologize I
won't get too technical so you won't
need like to be resuscitated at some
point but they had a really cool custom
application that they had built and it
was built on the eclipse uh Foundation
the r the
RCF and all of its stuff that was there
when it was built and it even had um AJ
or not um uh adobe's uh Adobe script the
flash it had some Flash in there it had
a whole bunch of stuff and it was really
nice and it it worked the downside is
when we touched it it was in like 2021
22 the last time a developer had touched
the code was in
2014 they had some developers that were
in they Consultants they had built this
thing they had made a couple fixes and
stuff like that they put it on some
machines installed it on the machines
wrote off from the sunset nobody knows
what happened to them basically and the
but they didn't need them because the
everything worked it it all worked it
was fine everything was awesome the
problem is and actually I've seen now a
couple customers that have had something
like this where it works long enough
that the underlying technology starts to
disappear so for example some of the
stuff that they they had machines they
were running it on that had to upgrade
and when they did the upgrade they could
not run the software anymore and so they
slowly went from I think originally had
like eight or 10 machines down to seven
or eight two or three and they were down
to one machine when I was introduced to
this they said they did have source code
which basically they had everything that
been dumped on a
machine and they had one working machine
that was not virtual or anything it was
a machine that if somebody spills coffee
on it game
over and so they said hey we would like
you to upgrade this because it's it was
way back the Java versions it was on the
stuff it was on was not work there were
things were starting to fail and they
knew it and they needed to get modern
enough to just keep it going they didn't
they literally wanted almost and I think
I can't remember zero or very close to
zero changes and the only thing was they
knew right away when we got into our
first little I think we did like a intro
project we did 20 or 10 or 20 hours
looked at their stuff said let's let's
assess it and see what you got right
away one of the things I said is like
all of this flash stuff that stuff
doesn't even exist anymore basically we
can't find stuff that's going to we're
not going to be able to take modern
stuff to go connect to that old
technology I said if we do there's like
a whole you could do it but it's a whole
bunch of crap you're going to have to go
through that you you'll have to break
the app anyways and they said that's
okay that stuff we didn't really need
it's like okay cool we'll cut that out I
looked to rest I was like
okay it's going to take a while we're
going to have to like we're GNA have to
get this thing built we're going to have
to and it's on it's on a you know almost
10year old version of eclipse basically
we have the base Foundation of it and so
we've got to upgrade that we're going to
have to upgrade stuff and basically just
said we'll give it a shot let's see what
we can do maybe we'll look out but I'm I
know that there are watershed releases
that we're going to have to do some code
changes and we're going to have to like
Swip out switch out some libraries and
things like
that long story short I know too late
but long story short we spent I think we
spent probably close to six months going
through this trying to upgrade it trying
to as much as possible like just
Shepherd this thing into that next
version and we ended up getting into and
and doing this and all the different
libr that had to be you know updated and
managed and stuff like that we basically
got into something where we couldn't
upgrade without rewriting the core jdbc
stuff that it was using the the core
database connection stuff it was using
did not exist or was not compatible
essentially it had stopped being worked
on and had been renamed and redone to a
point where we were going to have to
rebuild huge pieces of it like large
portion of the code was going to have to
be recoded at which point which is where
we finally get to the point for this
episode is got to a point where it's
like
okay you're going to have to rewrite it
as in yes you can try to build that same
thing again but the effort the time the
cost the
risk is we're going to have to rewrite
it and I had a several conversations
with them and their developers that they
had and said you have this thing that
you cannot support you don't have
anybody you don't have anybody that
knows it you don't have anybody that
knows any piece of it you have other you
have developers and resources that can
do something
modern and they have lots of ideas of
how they wanted to rebuild it and it's
basically what he came to I said we'll
help you if you want we can rebuild it
we can resign it do what you want to but
it needs to be it it has to die you
cannot move that forward forward we can
move it forward on that platform but
nobody does that anymore anybody that's
doing what you wanted to do today would
do we gave them like a half dozen these
are the different ways they would do it
that was great at the time and this is
where we had to really you know convince
them not convince them but agree with
them and say what you have is great you
got an awesome tool it was an awesome
tool 10 years ago and now it is not it's
like your horse and buggy
Rock but that was 200 years ago and now
horse and Buggies are nowhere they're
useless on a road so time to move on to
a bicycle or whatever it is so that was
my that was my experience was that we
really got into a situation where it was
and we may have gone too far in trying
to keep their stuff and I think that's
where we the discussion becomes because
we really did get to a point where while
we were going through it and we were I
warning them along the way on a regular
basis saying this is costly this is
taking a lot of work and this means just
because of the amount of stuff we're
having to touch you're going to have to
go through the testing again you're
going have to spend time on it it's
probably going to break stuff that
hasn't been broken before we're not even
really at this point we were like we're
not even learning the code we're just
learning the back the background in the
libraries and making sure those all SN
and this is becoming more of an issue as
we have these grander applications like
go to react and node lot of this stuff
where there's all these little libraries
that have to
coincide and you're going to run into
those situations yourself I think where
you look at it you say yes we can find
find a way maybe to make this work and
to limp it forward or to upgrade it or
to maintain it or it's either too old or
could be just too poorly written so the
the cost of building something new
building it from scratch or roughly
building it from scratch is equal to or
less than going with what you have had
the bonus is that when you come to the
if you've built from scratch or you
restart now you have a new modern
solution and I've done this several
times for customers where it's not only
that but now we have you unit tests
involved with it we have documentation
you have people you can get a hold of
that can help other developers you know
if you want to move on to another team
or you can go to our team and we can
support it enhance it so that's it in a
very big
nutshell how does that how does that
sort of apply to where does it where
does that what does that have you
thinking about based on your current
customer and share however many details
you feel like make sense to to do it
without as
well so it's an interesting conundrum so
you and I have been around software
since pre- Windows days I mean we' had
to deal with DOs old uh epic or um old
VT 100
machines back in the day God I feel old
saying that uh but I not even the day I
mean we're talking like the 80s the 90s
when people built software it was more
of a waterfall approach they started
with an idea and then they come out with
this big monolithic application that
gets
released and they go through a couple
tweaks and everything gets stabled it's
released it's done there's no more
software right because back then we
didn't have the internet so you once you
release software out into the wild the
software is out in the wild people
bought the software they own it they ran
it if the software was great they ran it
that what they Ed to run their business
my particular client uh is in the
healthcare sector and they're working on
an IBM uh I well what essentially is an
IBM I series but it's actually an older
as400 it is an old green screen epid
machine that IBM put out
uh years ago for things like healthcare
and they're Beast they're really good at
what they do they protect your patient
information you just go in it's a bunch
of green screen bunch of little menu
commands it's not point and click it's
all keyboard driven you print you it
works problem being monolithic softwares
or software these days that gets
packaged and delivered
today we tend to hear things like
software as a service continuous
deployments continuous
integration that stily stems from the
fact that that is one keeping your
software current it's keeping it
up-to-dated constantly addressing bugs
over and over so there's always someone
working in the system the system is
always being tweaked it's almost always
staying somewhat current or at least
able to run on the current operating
system
another project I worked on similar to
this uh wasn't so much uh a 400
application but it was actually a
Windows 95 dos application so if you
worked
on back when they had Windows 95 even
Windows 98 still supported Doss if you
wrote a dos-based
application you could still run it on
dos Windows um 31 Windows 95 Windows 98
after Windows 98 your software was dead
in the water you had to go essentially
go back rebuild the software in the
current Technologies for Windows 2000
and up because it was all the NT
architecture
NTFS uh not fat 13 or fat 32 uh so you
had to go through this process the
problem is it doesn't make sense to try
to convert some of those applications
because who wants WR and basic anymore I
mean you literally are going to have to
um dig look for that needle in the Hast
stack because there's that few
developers that do that AIM now granted
dos is now have an open source it's now
in the public domain and hey we have
people playing around with it again but
truthfully will it ever be a business
level
application operating system in probably
not so you're going to going to run into
these problems and especially with the
way technolog is going and systems are
being built we have to keep up with this
we have to look at changing this the
problem you run into is if you have
someone that's been working with the
piece of software for more than five
maybe 10 years it they purchased it from
a company you run into situations where
the company's not in business anymore
you can't get updates to the software
anymore because of you know time
technology changes like Rob said or heck
it's a mobile app and the mobile devices
are now all 64-bit and your application
was compiled in 32bit you can't P it
over you have to get this SCE code
recompile it and hope it works for the
64-bit operating system but there you go
oh you may not even have the source code
you might be uh what was it interplay or
wizard of the co and we can't get ice
bondale 2 anymore because they lost the
source code they were able to do all the
other enhanced editions because they
found all the code on a computer except
ice1 Dale 2
so as far as lessons learn we constantly
have to watch and keep up with current
technology but we do need to look at and
figure out how to help our customers
move along in this particular case I've
been doing the assessment now for about
two weeks and we thought that they had a
current enough
um
as400 release build that we could Port
them
up except we found out there two
versions back from where IBM made a
change that they have to now recompile
the source to change something for the
new operating system levels if they
don't have the source we're dead we
can't go forward so now we have to
figure out how to get the data out of
the system so that maybe we can do
something else
and I think that's the that's where you
sort of draw a line with customers and
that's where with the the conversations
I've had it
is um there's the two sides of that is
can we get are if we build you know when
you get them to even the idea of okay
right we build a new thing we build it
from scratch or something we don't use
what we have anymore it's almost always
can I get my data out or at least having
that conversation of does that data need
to come forward because those are that
could be a very big thing moving that
data forward
particularly if you want to call fix it
if you want to modernize the design of
the solution which often is what you
want to do because usually the thing was
built and designed for a very different
system from what we have today and so
you have different different concerns
different Integrations different user
experience all of the stuff around that
and different ways even to deliver
reports and things of that nature so you
you do have to think about it is what
happens to the data to the to the
history of having that application there
it's like if you want to do it on a very
simple think about it it's like if you
had that if you played a game back in
the day and you had saves for that game
can you move those saves to your new
game logical question people ask it all
the time it means a lot more to quote
move your saves from an old system if
you're a multi-billion Dollar business
because you need to take that data that
customer data that sales data all of
that stuff most likely you need to bring
forward and so that needs to be part of
the discussion is what happens it's sort
of like a two for there as well what
happens if that system dies what happens
if that machine if you can't get into
that system anymore through the
application do you have a way to the get
to the data other than through the
application that may be a red flag that
if you don't you need to look very
quickly at how are we going to get the
data out of that application it may be
virtually impossible it may be something
where they have to go in and manually
you're going to have to go to every page
and have somebody type it all in
somewhere else I've seen some really
nasty we'll call them data migration
processes like that where it's literally
somebody is sitting there and they bring
up a screen and then they swivel over to
another one and they just are entering
the data back and forth they're
literally handm moving the data that can
be pretty nasty and that's where you
want you don't want your customer to get
to that point sometimes it is the
solution is just as much we're going to
like keep you limping along but the
first thing we're going to do is we're
going to find a way to connect hoses and
Integrations to your system to pull that
data out so it doesn't get lost even if
we put it in just some random data store
that we can as long as we can get it
back out that's key and then we can
always come back later and we can you
know build a new front end orever
whatever we need to do so I think it is
part of your conversation needs to be
not only the cost of maintaining what
they've got the risk of losing what they
have including their data and then
what's what is that going to cost them
and then if we build in new system does
it have to support that Legacy system
the Legacy data in some way form or
fashion and that may include and I've
seen run into these where there's it has
to have the old user experience
basically because of for whatever
reason that uh that is the only way that
you can work with the data the way it is
but now in the new
system they bought the you know sort of
bit the bullet and said all right that's
our Legacy experience
we have to maintain it but we're going
to embrace all of the things we can do
and make improvements so now you may
have you know I've seen it where you
have customers before 2020 has a whole
different experience than customers that
have come in since then because they
said well we're just going to start
pulling new data they're gonna all the
new customer data sales data is going to
come in through this new system and
we're just going to have maybe even as
bad as just a screen scraper which may
be something that you guys run into to
go hit the system which is some way to
start moving that data and eventually
hopefully automate it so you don't
literally have to have somebody sitting
there and keying it from one machine to
another that's some of the things I've
thought about so more thoughts on that
yeah it's interesting you pointed that
out because some of the things that have
come up recently is I uncovered that
there's a couple integration points with
this
system with applications that are also
no longer supported or around anymore
and then there's another piece within
Healthcare you have to essentially you
know you have to build your customers
well they have an exchange they go
through and they they have a file that
goes to the exchange that does all that
and then they manually enter that back
into the system when they get the
information back the problem is they
don't know what that
is and I have not found clear
documentation yet as to what that is I
suspect I know what it is um but some of
the verbiage that we've used from Modern
Medical Systems did not ring a bell so
that was a warning flag uh whereas it's
like okay we need to figure out what to
do quickly I knew this was urgent which
is why I took the project to help them
but in the same sense um I'm glad we
went this approach because they really
did not understand what they had
or what they needed to get from A to B
they just knew that you know someone
spills coffee on this we're dead in the
water because they only have one machine
and there is no replacement for
it and that I really hate having to
have part of those I love those projects
and hate those projects and what I hate
about them is the ones where it's you
get into the the initial discussions
about the project and they can't tell
you anything about it they can well
here's some code okay great it's
sometimes it's here's all of the code
great if I'm going to look through a
million lines of code I'm not going to
be able I mean I can get a gist of how
like it's sort of this and it's sort of
that I can look at the data the database
model the and say okay it's sort of this
and it's sort of that but I have to have
some context even there and usually it's
going to take you think about if you're
going to read if if it's read the manual
and somebody gives you a 10,000 page
manual it's going to take a long time to
go through that that and that's roughly
what they're doing when you get just
piles and piles of code you're talking
about something it takes a long time to
do and yeah you can sort of like look
through it and you get an idea and you
can you can get a feel for it's good or
it's bad or it's really confusing or
yeah it seems to be pretty good but
you're not digging for skeletons at that
point you're just like you know blowing
across large portions of systems you're
sort of looking at stuff saying yeah
this makes sense but you're not you know
walking through it line by line by any
means
and so those are the hard projects
because you come in and you say all
right well you don't know what you've
got so we're going to spend a you know
it's basically you you pick a point and
you say this is what it's going to be
you we're going to spend x amount of
time and we're gonna we're going to do
some research and we're going to give
you back what we've got in that amount
of time and it's like I said it's really
tough when you get into that and you get
done with it and you go now what we need
is another block of time and we're going
to have to dig deeper because we've got
all of these red flags that have popped
up and we have to actually start looking
deeper into them we thought we may be
able to get there but here's the
concerns and it's sometimes I've had a
few where it's like okay first round
here's five concerns next round here's
10 more concerns by the time you you're
you're getting into it and very quickly
where it's the point it's like
okay you have a lot of issues and again
that's where it I think that's where you
have to have those conversations and you
say okay the good news is we're here and
we have some paths forward the bad news
is is none of the paths forward are
going to be cheap easy quick or maybe
even include your existing system you
know we're going to get data out of it
the best we can but it maybe that thing
cannot move forward and I think that's
part of what you want to do as a when
you're doing those kinds of
Assessments it's just like anything else
is go hit the high-risk stuff first look
at the things that are critical or that
would the system if those exist
and it's things like do you have the
source code do you I do you have
documentation do you do you have a build
process that you know that works
sometimes say do you have this on
multiple machines when was the last time
you freshly installed it on a machine
things like that which like you you know
shortened that down too they've only got
on one machine they know they're in
trouble they know that can't die so it's
like oh well big problem Sirens are
going off we've got to do something
quickly and so that is leverage at least
then to say
okay this is important this is critical
to your business and in this case you
know probably even more so because it's
dealing with Healthcare information and
filling and all these kinds of things so
it's their business and probably their
patients as well to to at least a medium
to a very great extent so then it's like
all right we got to get in here and
we've got to figure out now it's like if
they're in healthcare it's basically
that like you got somebody that's just
hit the table in an emergency room
they're bleeding out what do you do and
it's it gets into some of the other
conversations we had where there's like
there may be a level of triage there and
it may be something where it's like okay
we're we're stable the patient is stable
right now but they could blow up at any
time and so we need to make sure that we
are prepared for that and as fast as
possible start doing the we'll call it
the healing process of their system or
the replacing process of their system so
we can get them moving forward and this
is where it does become I've found just
like personal thing is I I found that it
is much easier to do that in like little
bites sometimes it's you almost have to
take the whole thing but if you can find
a way to do little bite-sized chunks so
that you can show ready steady progress
so you can start sucking data out of the
existing information system and start
replacing functionality so people can
use the new system even while the old
system exists then I think you build
some you build some trust you build some
confidence and for yourself it helps you
build knowledge about those M those
systems the new one which you should
know because you're building it and the
old one which you don't know squat about
because you just got handed a mess and
honestly the last place we work together
that was exactly what I got they sent me
a hard drive couldn't send it to anyway
they sent me a hard drive that had stuff
in it and they said here you go go
figure it out that's how bad it can be
so parting
thoughts yeah so so like Rob said you
know it can be bad but the thing is
don't always go
in that it has to be
rewrite first go in at
least the way I'm handling this or I've
handled this before is I'm going in and
assessing what the problem is what is
the overlying problem then I'm trying to
understand the customer needs for the
this problem you know is it
life-threatening is it Mission critical
is it
and oh my God moment um and then from
there walk back you know what is it that
the business uses this for how do they
use this and ultimately that's gotten me
to where it is to the fact that okay
they are in as much trouble as we
suspected thankfully it won't affect the
patient so much in this situation
because thankfully we determin that it's
all their billing all their insurance
information all that's on this box all
their scheduling scheduling if that were
to go down they could still use
Microsoft calendar it's the billing
information that they're going to lose
and there's some more disconnects with
that that I'm uncovering but you do you
have to treat it like an onion you got
to peel the layers back you got to
slowly get into it and you may never get
to the core you may get to to a certain
point where it's rotted it's like oh
okay now what do I do well now you
either have to go build or grow a new
onion or replace it with something
else and I think that's a great stopping
point for us at this point partially
because we are out of time but uh I
think this is one of those things that
that we do run into it's especially now
because there's there's been such a enan
ment of technology in the last five or
10 years and it feels like we've said
that for a long time but particularly in
the last five years where remote and a
lot of other things have become a lot
more reality uh the the ability to
communicate you know the world has
shrunk and all those kinds of things and
then there's been a lot of uh
advancements in the internet area that
things that didn't even exist
possibilities you had in the past you
you know that were never going to happen
they were dreams now are very easy to do
and very common place I think this is
something for us all to keep in mind is
that yeah you don't want to break
something that's you know fix something
that's not broken but you also want to
make sure that you're you know properly
maintaining things and updating them and
and keeping them current enough so that
if there is a point where you have to
make a big change you're not having to
essentially like go back to the drawing
board to to rewrite it and by all means
have repositories and things like that
where you're keeping CCT of your source
code document things add comments that
kind of stuff so that you're helping
your organization company your customer
out whenever somebody does come back and
need to take a look at that application
if you have anything that you would like
to throw at us as far as like some of
your experiences or if there's some
applications you want us to look at we
can even do that you can reach us at
info@ developer.com you can check us out
on the developers site out on Facebook
we've got uh stuff out on LinkedIn the
developer ners site we've got forms
we've got blog posts we've got the
podcast we've got the YouTube channel
got a lot of different ways you can
reach us a lot of different Co topics
that we've covered always looking
forward to any kind of information we
get from you guys feedback to just let
us know like where do we want to go what
do you guys want to hear what do you
like what don't you like if you don't
like how we look sorry can't do anything
about that other than I guess we can
cover our face or something like that
we'll use some we'll use some filters
because that's all that's all getting
good we'll just have little AI people
that that act for us and we'll just talk
behind the scenes all right I digress
that being said we're going to wrap this
one up we're not done with the SE we are
still going to just continue talking our
way through the things we're running
into and the best ways that we can grow
as developers and also help our
customers be a blessing to them and to
those that work around us that being
said go out there and have yourself a
great day a great week and we will talk
to you next
time wow that's like painful almost
going through that thinking about like
there's some of those projects I'd sort
of like you know blacked out in my
memory somewhere and it's like oh yeah
that was fun so I have a final thought
for those still
watching what is your take on if you are
The Keeper of the keys you built this
great application it's been out there
for years but now you're done you know
you want to retire or you want to put it
aside you either couldn't sell it or you
did sell it or you know it it's just
essentially
debt given today's state of Open Source
would it behoove not just you but your
customers to put that out on like GitHub
and then open source and let the
community support it or do keep it
behind locked doors and say you know it
was mine sorry you guys are so I'm
done that's actually open source is a
whole different area to get into with
that because there
are so many so many restrictions around
that and legalities and things like that
that may be involved in it but if it is
something in particular that is a you
know like you had a little pet project
and you've got some customers and you
you're just like you're retiring and
I've I've seen a lot of those kinds of
projects and people trying to get PE get
uh Consultants to come in and reverse
engineer an application that they love
but they the developer quit the company
died something like that I think that is
something for you to consider is open
sourcing such things or putting some
some way so that it can even if you
don't want to deal with it that a
company that does or needs to can that
they can go in there and they can make
some changes and yeah it may require a
little bit of your time to go talk to
somebody about it to sort of help do
that handoff
but I I've earned a lot of money having
to dig through stuff that we could have
saved everybody if somebody had just had
an hourlong conversation so that that's
the stuff that I hate that's like blood
money because it's like you could have
saved everybody headaches mistakes and a
lot of time that was cost to your
customer your employer or whatever it is
if you just spent a little bit of time
doing a handoff maybe do a little bit of
documentation that's why it's near and
dear to my heart that if I hand
something over to somebody if I'm
wrapping up a project that I make sure
that I give them contact information for
me plus summaries documentation whatever
I can to say hey if somebody comes in
because I know I've done this enough if
somebody comes in six months from year
now a year 10 years whatever it is these
are some of the questions they're going
to ask these are the answers to them
this is how you get to these things
these are the you know and some here's
the logins here's the passwords here's
all of these things here's the things
you're going to have to worry about a
year from now which is very common where
it's things like if you go set somebody
up a website for example and you get
them an SSL certificate through blah
blah whoever it happens to be company
you know whether it's GoDaddy or one of
those if you they're going to have a Fe
come up a next you know a year or two
years three years down the road the
domain's going to have to be renewed
there's things like that that make sure
people understand these kinds of things
good example ran into something just the
other day had a customer that had picked
up my one of the servers we built for
him we had a demo server Dev server
replicated it it's a production server
we had stuff running on that that was
like backups and things like that for
them that they then upgraded their
backup system they had a new guy came in
did everything he didn't realize that we
also had all this stuff on that thing
that was just backing up files and it
was doing it all local so it wasn't a
huge deal but they now had built you
know a higher-end off-site solution and
we're like hey you're just loading up
you're like filling up that hard drive
now I mean you got plenty of space but
you don't need these things to run
they're you know they're burning
processing time and they're filling
space so maybe we you know if you guys
want to pause those we can pause those
and you can even delete all the old uh
backups that we had because now you've
got a different process so you know you
got to keep an eye out for such things
and just sort of provide like
architectural documents and you know
overall snapshot kind of documents of
this is what it does and this is what it
runs and this is what these things are
and it will it will save so many so many
headaches and uh I I could talk for I
could do a season on issues that we've
run into where they were gotes where we
didn't know there wasn't
documentation things something changed
and we even know where that was until we
had to dig all the way into the code
those kinds of external sources and that
just make sure you you document them any
more thoughts on that before we wrap
this one up no yeah the reason I had
asked that question is because remember
back before the internet we had to
publish software on CDs discs mail it
out and the underlying companies
typically either got bought and that
software carried on or evolved or it
died and so so just if you do think
you're done with something don't
necessarily let it go to the digital
graveyard you know there are things you
can do to save it or even potentially
save your customer's headaches down the
road maybe give them an option like a
retirement plan for you hey I'm done do
you want to buy the source code to
maintain this yourself you know just
just an
option well I think our options is to go
on and wrap up where I'm at at
uh in an evening but whatever the
generic time of the day it is for you
there's I'm sure something awesome that
you have coming up next thank you for
watching uh leave you know feel free to
leave comments down in the down here
we're going to have show notes with all
this kind of stuff all the social things
do that get out there let us know what
you think let us you know follow us
follow the check out the if you're
you're here so go ahead and check out
the podcast if you haven't because there
are some there are some adjustments and
things like that plus then you're not
looking at us while you're driving you
can actually just hear our dulet tones
while you're driving down the street
working out doing all the other stuff
where you don't really have the time to
do visual stuff we will wrap this one up
as always take care we will come back
next time around we're just going to
continue chugging on Tuesdays Thursdays
we get a you get a new drop you get see
whatever our latest stuff is and uh like
I said we're wrapping up this season
pretty soon let us know if you have
requests for the next one otherwise
we're going to make it up like we always
have and we're going to continue on the
next season and and continue talking
through stuff that we find helps us and
hopefully helps you become a better
developer have a good one everybody
[Music]
Transcript Segments
1.35

[Music]

27.199

so we're going to carry right into the

28.48

next one is uh did you a topic that you

30.84

wanted to get into on the podcast

35.92

world

39.6

uh so the biggest challenge I've been

43.16

dealing with and I'm not sure if it it

44.84

will be a good

46.16

topic is

49.239

when to punt on Legacy and invest or

54.039

rewrite a current application because

57.199

I'm trying to figure out how after the

59.12

conversation I had with Dave today this

62.359

particular client is in a lot more

65.72

trouble than we initially

68.92

assessed um but I have to communicate to

72.36

them that yes I know you like this thing

76.52

and you want to stay on this thing but

78.479

there's no way we can duplicate

81.159

this um without a full rewrite and he

84.68

brought up a very interesting question

86.64

to me today and it's like do they have

88.56

the original source code because if they

90.799

don't have the original source code we

93.159

can't upgrade them past one more version

96

and that's

97.04

still six versions behind where IBM is

102.56

today and the version they're running

104.96

was from

107.2

2013 so I think that's a perfect topic

110.04

um I have a a project I did exactly that

114

it was a almost like there were 2014 was

117.039

the last time they did it and no they

118.96

didn't well they had some source code

121.479

but not everything they needed and so it

123.92

ended up being a really interesting

126.2

Journey that we had with them so I think

128.44

that is um I think that's what we'll

131.08

talk about is like we'll just give some

133.76

examples and our thoughts

136.12

on how to approach when do you when do

139.36

you kick the Legacy code out the door

141.4

and say it's time for

143.2

rewrite um gosh I've had several of

145.68

those so I think this is this will be a

147.08

fun one hello and welcome back we We are

150.64

continuing our discussions last time we

153.28

got into some stuff that was more like

155.319

living a better life this time is more

158.64

about uh saving customers from certain

162.04

death okay it may not be that bad but it

164.84

is it feels like it if you have ever

167.68

been in that situation and the situation

171.2

we're going to talk about today is

173.92

Legacy code when does it need to be

177.56

buried in the pyramids in Egypt it's

179.44

like when when has it gone on too

182.239

long or more importantly when has it

185.519

been too long since you touched that

187.84

Legacy code when did you let stuff run

189.72

too long and now it needs to be

193.12

replaced first off because I don't want

195.799

to be a miss about this I want to

197.159

introduce myself my name is Rob

198.44

Broadhead I am one of the founders of

200.08

developing orb building better

202

developers and on the other side is

204.2

Michael go ahead and introduce yourself

206.72

hey everyone my name is Michael Mass I'm

208.76

also one of the co-founders of

211.4

developer so we got into this for those

215.08

of you and I was totally remissed the

216.879

last episode I forgot I didn't give any

218.76

of like the cool links so go back to

221.72

that episode and just like click on all

223.239

the links and and all that kind of stuff

224.68

you normally would like our email

226.4

address and all that hopefully I'll

228.28

remember this time so those of you that

231.4

are watching this which if you're not we

234

also have a YouTube channel you can go

235.599

check out check that out develop nor we

237.4

have all this stuff getting posted twice

238.84

a week just like do the podcast we just

240.799

have bonus material and okay you do have

244.56

to look at our hor horrible faces but

246.159

other than that you have bonus material

248.439

and so we were talking before this that

250.4

Michael is is hit a spot right now with

253.519

a customer that really triggered me in a

256.479

sense because I've lived the same thing

258.32

and it's a customer that they they've

259.84

got a

260.959

product it's not a bad product it works

265.12

they like it all they really need to do

268.36

is update it

270.36

and I will start with an experience I

273.8

had and then throw it over to Michael is

275.72

it I ran into this same thing couple

278.28

it's now been a couple years and I'll

280.16

get a little technical I apologize I

282.039

won't get too technical so you won't

283.44

need like to be resuscitated at some

285.24

point but they had a really cool custom

290.199

application that they had built and it

292.4

was built on the eclipse uh Foundation

296.72

the r the

298.44

RCF and all of its stuff that was there

301.96

when it was built and it even had um AJ

306.6

or not um uh adobe's uh Adobe script the

310.8

flash it had some Flash in there it had

312.639

a whole bunch of stuff and it was really

314.88

nice and it it worked the downside is

319.199

when we touched it it was in like 2021

322.199

22 the last time a developer had touched

324.96

the code was in

327.199

2014 they had some developers that were

329.36

in they Consultants they had built this

331.24

thing they had made a couple fixes and

332.68

stuff like that they put it on some

335.319

machines installed it on the machines

338.24

wrote off from the sunset nobody knows

340.479

what happened to them basically and the

343.919

but they didn't need them because the

345.199

everything worked it it all worked it

346.96

was fine everything was awesome the

349.36

problem is and actually I've seen now a

351.84

couple customers that have had something

353.08

like this where it works long enough

354.919

that the underlying technology starts to

357.96

disappear so for example some of the

359.919

stuff that they they had machines they

361.56

were running it on that had to upgrade

364.919

and when they did the upgrade they could

366.56

not run the software anymore and so they

369

slowly went from I think originally had

370.759

like eight or 10 machines down to seven

372.919

or eight two or three and they were down

375.039

to one machine when I was introduced to

377.72

this they said they did have source code

381.68

which basically they had everything that

383.039

been dumped on a

384.44

machine and they had one working machine

387.88

that was not virtual or anything it was

389.88

a machine that if somebody spills coffee

392.28

on it game

394.52

over and so they said hey we would like

397.199

you to upgrade this because it's it was

399.639

way back the Java versions it was on the

402

stuff it was on was not work there were

403.52

things were starting to fail and they

405.16

knew it and they needed to get modern

407.319

enough to just keep it going they didn't

409.599

they literally wanted almost and I think

412.4

I can't remember zero or very close to

414.52

zero changes and the only thing was they

417.479

knew right away when we got into our

419.8

first little I think we did like a intro

423.52

project we did 20 or 10 or 20 hours

425.84

looked at their stuff said let's let's

427.639

assess it and see what you got right

429.72

away one of the things I said is like

431.639

all of this flash stuff that stuff

434.56

doesn't even exist anymore basically we

436.52

can't find stuff that's going to we're

437.72

not going to be able to take modern

439.08

stuff to go connect to that old

441.12

technology I said if we do there's like

443.16

a whole you could do it but it's a whole

445.639

bunch of crap you're going to have to go

446.68

through that you you'll have to break

447.96

the app anyways and they said that's

450.039

okay that stuff we didn't really need

451.879

it's like okay cool we'll cut that out I

454.599

looked to rest I was like

456.56

okay it's going to take a while we're

459.199

going to have to like we're GNA have to

460.68

get this thing built we're going to have

461.84

to and it's on it's on a you know almost

464.84

10year old version of eclipse basically

467.8

we have the base Foundation of it and so

469.759

we've got to upgrade that we're going to

470.759

have to upgrade stuff and basically just

473.44

said we'll give it a shot let's see what

475.96

we can do maybe we'll look out but I'm I

477.919

know that there are watershed releases

480.52

that we're going to have to do some code

482.56

changes and we're going to have to like

485.28

Swip out switch out some libraries and

486.96

things like

488.159

that long story short I know too late

491.08

but long story short we spent I think we

494.36

spent probably close to six months going

496.56

through this trying to upgrade it trying

498.44

to as much as possible like just

500.28

Shepherd this thing into that next

503.12

version and we ended up getting into and

507.039

and doing this and all the different

509.08

libr that had to be you know updated and

511.8

managed and stuff like that we basically

513.959

got into something where we couldn't

516.599

upgrade without rewriting the core jdbc

521.12

stuff that it was using the the core

523.919

database connection stuff it was using

526.44

did not exist or was not compatible

529.12

essentially it had stopped being worked

531.72

on and had been renamed and redone to a

534.68

point where we were going to have to

536.16

rebuild huge pieces of it like large

539.56

portion of the code was going to have to

540.6

be recoded at which point which is where

543.32

we finally get to the point for this

545.6

episode is got to a point where it's

548.48

like

549.44

okay you're going to have to rewrite it

552.6

as in yes you can try to build that same

555.24

thing again but the effort the time the

558.64

cost the

560.2

risk is we're going to have to rewrite

563.16

it and I had a several conversations

565.959

with them and their developers that they

567.56

had and said you have this thing that

569.92

you cannot support you don't have

572.24

anybody you don't have anybody that

573.48

knows it you don't have anybody that

575.519

knows any piece of it you have other you

578.68

have developers and resources that can

581.2

do something

582.519

modern and they have lots of ideas of

585.64

how they wanted to rebuild it and it's

588.24

basically what he came to I said we'll

590.24

help you if you want we can rebuild it

591.72

we can resign it do what you want to but

594.72

it needs to be it it has to die you

597.72

cannot move that forward forward we can

600.399

move it forward on that platform but

602.36

nobody does that anymore anybody that's

604.92

doing what you wanted to do today would

607.76

do we gave them like a half dozen these

610.079

are the different ways they would do it

611.92

that was great at the time and this is

613.68

where we had to really you know convince

616.12

them not convince them but agree with

618.519

them and say what you have is great you

621.2

got an awesome tool it was an awesome

623.64

tool 10 years ago and now it is not it's

627.64

like your horse and buggy

629.92

Rock but that was 200 years ago and now

632.48

horse and Buggies are nowhere they're

634.48

useless on a road so time to move on to

638.72

a bicycle or whatever it is so that was

641.6

my that was my experience was that we

643.76

really got into a situation where it was

647.519

and we may have gone too far in trying

651.48

to keep their stuff and I think that's

653.12

where we the discussion becomes because

655.24

we really did get to a point where while

657.48

we were going through it and we were I

659.399

warning them along the way on a regular

660.959

basis saying this is costly this is

663.72

taking a lot of work and this means just

665.959

because of the amount of stuff we're

666.92

having to touch you're going to have to

668.48

go through the testing again you're

669.519

going have to spend time on it it's

670.959

probably going to break stuff that

672.079

hasn't been broken before we're not even

674.48

really at this point we were like we're

675.8

not even learning the code we're just

677.88

learning the back the background in the

680

libraries and making sure those all SN

682.519

and this is becoming more of an issue as

684.2

we have these grander applications like

687.639

go to react and node lot of this stuff

689.8

where there's all these little libraries

691.6

that have to

693.399

coincide and you're going to run into

695.24

those situations yourself I think where

696.88

you look at it you say yes we can find

699.959

find a way maybe to make this work and

701.8

to limp it forward or to upgrade it or

703.959

to maintain it or it's either too old or

707.92

could be just too poorly written so the

710.72

the cost of building something new

713.32

building it from scratch or roughly

715.04

building it from scratch is equal to or

717.32

less than going with what you have had

719.68

the bonus is that when you come to the

721.2

if you've built from scratch or you

722.56

restart now you have a new modern

725.68

solution and I've done this several

727.399

times for customers where it's not only

728.76

that but now we have you unit tests

730.839

involved with it we have documentation

732.76

you have people you can get a hold of

734.12

that can help other developers you know

736.44

if you want to move on to another team

738.279

or you can go to our team and we can

739.76

support it enhance it so that's it in a

742.92

very big

745.24

nutshell how does that how does that

747.92

sort of apply to where does it where

749.88

does that what does that have you

751.199

thinking about based on your current

752.88

customer and share however many details

754.76

you feel like make sense to to do it

756.8

without as

757.88

well so it's an interesting conundrum so

762.68

you and I have been around software

764.56

since pre- Windows days I mean we' had

766.88

to deal with DOs old uh epic or um old

771.199

VT 100

773.32

machines back in the day God I feel old

776.72

saying that uh but I not even the day I

780.04

mean we're talking like the 80s the 90s

782.56

when people built software it was more

785.279

of a waterfall approach they started

787.839

with an idea and then they come out with

789.639

this big monolithic application that

792.199

gets

793.079

released and they go through a couple

795.199

tweaks and everything gets stabled it's

797.399

released it's done there's no more

800.56

software right because back then we

803.56

didn't have the internet so you once you

805.68

release software out into the wild the

807.56

software is out in the wild people

809.36

bought the software they own it they ran

811.399

it if the software was great they ran it

815.44

that what they Ed to run their business

818.04

my particular client uh is in the

821.6

healthcare sector and they're working on

825.199

an IBM uh I well what essentially is an

828.959

IBM I series but it's actually an older

832.24

as400 it is an old green screen epid

837.16

machine that IBM put out

839.56

uh years ago for things like healthcare

844.8

and they're Beast they're really good at

847.519

what they do they protect your patient

849.399

information you just go in it's a bunch

851.72

of green screen bunch of little menu

853.88

commands it's not point and click it's

855.959

all keyboard driven you print you it

859.8

works problem being monolithic softwares

864.399

or software these days that gets

866.36

packaged and delivered

870.16

today we tend to hear things like

872.36

software as a service continuous

874.48

deployments continuous

876.92

integration that stily stems from the

879.88

fact that that is one keeping your

881.72

software current it's keeping it

884

up-to-dated constantly addressing bugs

886.36

over and over so there's always someone

888.92

working in the system the system is

891.199

always being tweaked it's almost always

893.32

staying somewhat current or at least

895.36

able to run on the current operating

897.16

system

900.68

another project I worked on similar to

903.68

this uh wasn't so much uh a 400

906.8

application but it was actually a

908.36

Windows 95 dos application so if you

912.519

worked

913.8

on back when they had Windows 95 even

917.399

Windows 98 still supported Doss if you

920.72

wrote a dos-based

923.56

application you could still run it on

926.639

dos Windows um 31 Windows 95 Windows 98

931.44

after Windows 98 your software was dead

933.88

in the water you had to go essentially

935.639

go back rebuild the software in the

938.72

current Technologies for Windows 2000

941.079

and up because it was all the NT

943.079

architecture

944.56

NTFS uh not fat 13 or fat 32 uh so you

951.24

had to go through this process the

953.92

problem is it doesn't make sense to try

958.319

to convert some of those applications

960.88

because who wants WR and basic anymore I

963.92

mean you literally are going to have to

967.319

um dig look for that needle in the Hast

969.959

stack because there's that few

972.16

developers that do that AIM now granted

975.199

dos is now have an open source it's now

976.959

in the public domain and hey we have

979.04

people playing around with it again but

981.72

truthfully will it ever be a business

983.759

level

984.6

application operating system in probably

986.959

not so you're going to going to run into

990.68

these problems and especially with the

993.079

way technolog is going and systems are

995.079

being built we have to keep up with this

997.68

we have to look at changing this the

1000.079

problem you run into is if you have

1002.56

someone that's been working with the

1003.8

piece of software for more than five

1006.12

maybe 10 years it they purchased it from

1009.04

a company you run into situations where

1011.92

the company's not in business anymore

1014.24

you can't get updates to the software

1015.88

anymore because of you know time

1018.44

technology changes like Rob said or heck

1021.48

it's a mobile app and the mobile devices

1023.72

are now all 64-bit and your application

1025.919

was compiled in 32bit you can't P it

1028.439

over you have to get this SCE code

1030.839

recompile it and hope it works for the

1033.48

64-bit operating system but there you go

1036.6

oh you may not even have the source code

1039.48

you might be uh what was it interplay or

1042.28

wizard of the co and we can't get ice

1044.919

bondale 2 anymore because they lost the

1046.799

source code they were able to do all the

1049.48

other enhanced editions because they

1051.2

found all the code on a computer except

1054.44

ice1 Dale 2

1057.52

so as far as lessons learn we constantly

1062.36

have to watch and keep up with current

1066.039

technology but we do need to look at and

1068.559

figure out how to help our customers

1070.88

move along in this particular case I've

1073.32

been doing the assessment now for about

1074.72

two weeks and we thought that they had a

1078.159

current enough

1079.44

um

1080.32

as400 release build that we could Port

1083.559

them

1084.52

up except we found out there two

1087.36

versions back from where IBM made a

1090

change that they have to now recompile

1092.919

the source to change something for the

1095.6

new operating system levels if they

1098.76

don't have the source we're dead we

1100.44

can't go forward so now we have to

1102.24

figure out how to get the data out of

1104.039

the system so that maybe we can do

1106.6

something else

1109.96

and I think that's the that's where you

1113.159

sort of draw a line with customers and

1115

that's where with the the conversations

1117.72

I've had it

1120.24

is um there's the two sides of that is

1123.84

can we get are if we build you know when

1127.88

you get them to even the idea of okay

1130.72

right we build a new thing we build it

1133.28

from scratch or something we don't use

1135

what we have anymore it's almost always

1137.6

can I get my data out or at least having

1140.799

that conversation of does that data need

1143

to come forward because those are that

1147.159

could be a very big thing moving that

1149.6

data forward

1151.159

particularly if you want to call fix it

1154.76

if you want to modernize the design of

1157.12

the solution which often is what you

1159.44

want to do because usually the thing was

1162.039

built and designed for a very different

1164.72

system from what we have today and so

1167.28

you have different different concerns

1169.919

different Integrations different user

1172.32

experience all of the stuff around that

1175.559

and different ways even to deliver

1177.28

reports and things of that nature so you

1180.24

you do have to think about it is what

1183.36

happens to the data to the to the

1186.2

history of having that application there

1189.039

it's like if you want to do it on a very

1190.559

simple think about it it's like if you

1192.44

had that if you played a game back in

1194.88

the day and you had saves for that game

1197.32

can you move those saves to your new

1199.76

game logical question people ask it all

1202.159

the time it means a lot more to quote

1204.72

move your saves from an old system if

1206.919

you're a multi-billion Dollar business

1208.559

because you need to take that data that

1210.84

customer data that sales data all of

1212.72

that stuff most likely you need to bring

1214.88

forward and so that needs to be part of

1218.32

the discussion is what happens it's sort

1221.76

of like a two for there as well what

1223.44

happens if that system dies what happens

1226.2

if that machine if you can't get into

1229.32

that system anymore through the

1231.32

application do you have a way to the get

1233.6

to the data other than through the

1236.08

application that may be a red flag that

1238.6

if you don't you need to look very

1240.72

quickly at how are we going to get the

1242.679

data out of that application it may be

1245.84

virtually impossible it may be something

1247.88

where they have to go in and manually

1249.6

you're going to have to go to every page

1251.32

and have somebody type it all in

1252.84

somewhere else I've seen some really

1255.159

nasty we'll call them data migration

1257.76

processes like that where it's literally

1259.799

somebody is sitting there and they bring

1261.919

up a screen and then they swivel over to

1263.679

another one and they just are entering

1265.039

the data back and forth they're

1266.2

literally handm moving the data that can

1269.559

be pretty nasty and that's where you

1272.12

want you don't want your customer to get

1273.6

to that point sometimes it is the

1276.84

solution is just as much we're going to

1279.96

like keep you limping along but the

1281.679

first thing we're going to do is we're

1282.559

going to find a way to connect hoses and

1284.919

Integrations to your system to pull that

1286.919

data out so it doesn't get lost even if

1289.64

we put it in just some random data store

1291.88

that we can as long as we can get it

1293.08

back out that's key and then we can

1296.039

always come back later and we can you

1297.559

know build a new front end orever

1299.36

whatever we need to do so I think it is

1301.88

part of your conversation needs to be

1304.08

not only the cost of maintaining what

1306.559

they've got the risk of losing what they

1310.52

have including their data and then

1313.84

what's what is that going to cost them

1316.44

and then if we build in new system does

1319.679

it have to support that Legacy system

1323.679

the Legacy data in some way form or

1325.72

fashion and that may include and I've

1327.76

seen run into these where there's it has

1330.76

to have the old user experience

1332.64

basically because of for whatever

1336.12

reason that uh that is the only way that

1339.88

you can work with the data the way it is

1341.559

but now in the new

1342.919

system they bought the you know sort of

1345.039

bit the bullet and said all right that's

1347.12

our Legacy experience

1349.08

we have to maintain it but we're going

1351.48

to embrace all of the things we can do

1354.52

and make improvements so now you may

1356.799

have you know I've seen it where you

1358.12

have customers before 2020 has a whole

1362.279

different experience than customers that

1363.799

have come in since then because they

1365.84

said well we're just going to start

1367.039

pulling new data they're gonna all the

1369.039

new customer data sales data is going to

1370.64

come in through this new system and

1372.88

we're just going to have maybe even as

1374.48

bad as just a screen scraper which may

1376.32

be something that you guys run into to

1377.96

go hit the system which is some way to

1380.72

start moving that data and eventually

1382.36

hopefully automate it so you don't

1384.12

literally have to have somebody sitting

1385.4

there and keying it from one machine to

1387.72

another that's some of the things I've

1389.64

thought about so more thoughts on that

1392.24

yeah it's interesting you pointed that

1393.919

out because some of the things that have

1395.76

come up recently is I uncovered that

1399.84

there's a couple integration points with

1402.12

this

1403.08

system with applications that are also

1406.159

no longer supported or around anymore

1409.679

and then there's another piece within

1411.84

Healthcare you have to essentially you

1414.44

know you have to build your customers

1417.36

well they have an exchange they go

1418.76

through and they they have a file that

1421.679

goes to the exchange that does all that

1423.64

and then they manually enter that back

1425.279

into the system when they get the

1427.44

information back the problem is they

1429.559

don't know what that

1433.24

is and I have not found clear

1436.279

documentation yet as to what that is I

1438.48

suspect I know what it is um but some of

1441.72

the verbiage that we've used from Modern

1444.44

Medical Systems did not ring a bell so

1448.44

that was a warning flag uh whereas it's

1452.919

like okay we need to figure out what to

1454.96

do quickly I knew this was urgent which

1458.559

is why I took the project to help them

1460.84

but in the same sense um I'm glad we

1464.679

went this approach because they really

1466.08

did not understand what they had

1469

or what they needed to get from A to B

1471.08

they just knew that you know someone

1472.6

spills coffee on this we're dead in the

1474.24

water because they only have one machine

1476.039

and there is no replacement for

1478.36

it and that I really hate having to

1482.039

have part of those I love those projects

1484.48

and hate those projects and what I hate

1485.919

about them is the ones where it's you

1488.84

get into the the initial discussions

1491.919

about the project and they can't tell

1493.76

you anything about it they can well

1496.039

here's some code okay great it's

1498.559

sometimes it's here's all of the code

1501.52

great if I'm going to look through a

1503.399

million lines of code I'm not going to

1505.919

be able I mean I can get a gist of how

1507.799

like it's sort of this and it's sort of

1509.32

that I can look at the data the database

1511.2

model the and say okay it's sort of this

1513

and it's sort of that but I have to have

1515.08

some context even there and usually it's

1519.44

going to take you think about if you're

1521.279

going to read if if it's read the manual

1523.52

and somebody gives you a 10,000 page

1525.48

manual it's going to take a long time to

1527.84

go through that that and that's roughly

1529.399

what they're doing when you get just

1530.799

piles and piles of code you're talking

1532.76

about something it takes a long time to

1534.24

do and yeah you can sort of like look

1535.72

through it and you get an idea and you

1537.84

can you can get a feel for it's good or

1540.36

it's bad or it's really confusing or

1542.32

yeah it seems to be pretty good but

1544.52

you're not digging for skeletons at that

1546.24

point you're just like you know blowing

1548.159

across large portions of systems you're

1550.399

sort of looking at stuff saying yeah

1551.64

this makes sense but you're not you know

1554.799

walking through it line by line by any

1556.96

means

1558.48

and so those are the hard projects

1560

because you come in and you say all

1560.919

right well you don't know what you've

1563.24

got so we're going to spend a you know

1565.52

it's basically you you pick a point and

1567.679

you say this is what it's going to be

1569.24

you we're going to spend x amount of

1570.799

time and we're gonna we're going to do

1574.2

some research and we're going to give

1575.24

you back what we've got in that amount

1576.64

of time and it's like I said it's really

1579.24

tough when you get into that and you get

1580.799

done with it and you go now what we need

1583.36

is another block of time and we're going

1586.44

to have to dig deeper because we've got

1588.36

all of these red flags that have popped

1590

up and we have to actually start looking

1591.48

deeper into them we thought we may be

1592.919

able to get there but here's the

1595.08

concerns and it's sometimes I've had a

1597

few where it's like okay first round

1598.919

here's five concerns next round here's

1601.84

10 more concerns by the time you you're

1604.2

you're getting into it and very quickly

1606.32

where it's the point it's like

1607.96

okay you have a lot of issues and again

1611.32

that's where it I think that's where you

1612.84

have to have those conversations and you

1614.679

say okay the good news is we're here and

1617.919

we have some paths forward the bad news

1621.12

is is none of the paths forward are

1623.72

going to be cheap easy quick or maybe

1626.799

even include your existing system you

1628.72

know we're going to get data out of it

1629.76

the best we can but it maybe that thing

1631.88

cannot move forward and I think that's

1634.32

part of what you want to do as a when

1636.08

you're doing those kinds of

1637.72

Assessments it's just like anything else

1639.72

is go hit the high-risk stuff first look

1642.84

at the things that are critical or that

1646.72

would the system if those exist

1650

and it's things like do you have the

1652.2

source code do you I do you have

1655.039

documentation do you do you have a build

1657.76

process that you know that works

1660.559

sometimes say do you have this on

1662.24

multiple machines when was the last time

1663.96

you freshly installed it on a machine

1666.44

things like that which like you you know

1668.08

shortened that down too they've only got

1669.559

on one machine they know they're in

1670.88

trouble they know that can't die so it's

1673.32

like oh well big problem Sirens are

1676

going off we've got to do something

1677.72

quickly and so that is leverage at least

1680.84

then to say

1682.799

okay this is important this is critical

1685.32

to your business and in this case you

1687.08

know probably even more so because it's

1688.519

dealing with Healthcare information and

1690.12

filling and all these kinds of things so

1691.64

it's their business and probably their

1692.84

patients as well to to at least a medium

1695.6

to a very great extent so then it's like

1698.48

all right we got to get in here and

1700.44

we've got to figure out now it's like if

1703.48

they're in healthcare it's basically

1704.84

that like you got somebody that's just

1706.32

hit the table in an emergency room

1708.24

they're bleeding out what do you do and

1710.559

it's it gets into some of the other

1712.279

conversations we had where there's like

1714

there may be a level of triage there and

1716.08

it may be something where it's like okay

1717.919

we're we're stable the patient is stable

1721.44

right now but they could blow up at any

1723.12

time and so we need to make sure that we

1725.399

are prepared for that and as fast as

1727.48

possible start doing the we'll call it

1729.399

the healing process of their system or

1732.2

the replacing process of their system so

1735.44

we can get them moving forward and this

1737.84

is where it does become I've found just

1739.88

like personal thing is I I found that it

1742.24

is much easier to do that in like little

1744.88

bites sometimes it's you almost have to

1747.32

take the whole thing but if you can find

1749.279

a way to do little bite-sized chunks so

1751.24

that you can show ready steady progress

1753.279

so you can start sucking data out of the

1754.84

existing information system and start

1757.159

replacing functionality so people can

1759.2

use the new system even while the old

1761.279

system exists then I think you build

1763.44

some you build some trust you build some

1765.6

confidence and for yourself it helps you

1767.799

build knowledge about those M those

1770.279

systems the new one which you should

1772.32

know because you're building it and the

1773.919

old one which you don't know squat about

1776.08

because you just got handed a mess and

1778.64

honestly the last place we work together

1781.159

that was exactly what I got they sent me

1783.159

a hard drive couldn't send it to anyway

1785.919

they sent me a hard drive that had stuff

1787.679

in it and they said here you go go

1789.32

figure it out that's how bad it can be

1793.12

so parting

1795.6

thoughts yeah so so like Rob said you

1799.32

know it can be bad but the thing is

1803.88

don't always go

1806.36

in that it has to be

1809.2

rewrite first go in at

1812.279

least the way I'm handling this or I've

1815.08

handled this before is I'm going in and

1818.48

assessing what the problem is what is

1822.159

the overlying problem then I'm trying to

1825.519

understand the customer needs for the

1828.039

this problem you know is it

1829.2

life-threatening is it Mission critical

1831.279

is it

1832.96

and oh my God moment um and then from

1837.399

there walk back you know what is it that

1840.24

the business uses this for how do they

1843

use this and ultimately that's gotten me

1845.799

to where it is to the fact that okay

1848.88

they are in as much trouble as we

1851.84

suspected thankfully it won't affect the

1855.48

patient so much in this situation

1858.639

because thankfully we determin that it's

1860.88

all their billing all their insurance

1862.6

information all that's on this box all

1864.6

their scheduling scheduling if that were

1866.919

to go down they could still use

1868.799

Microsoft calendar it's the billing

1871.519

information that they're going to lose

1874.48

and there's some more disconnects with

1876.96

that that I'm uncovering but you do you

1879.76

have to treat it like an onion you got

1881.2

to peel the layers back you got to

1883.279

slowly get into it and you may never get

1885.88

to the core you may get to to a certain

1888.44

point where it's rotted it's like oh

1890.76

okay now what do I do well now you

1893.159

either have to go build or grow a new

1895.919

onion or replace it with something

1901.12

else and I think that's a great stopping

1904.279

point for us at this point partially

1905.72

because we are out of time but uh I

1909.159

think this is one of those things that

1910.44

that we do run into it's especially now

1913.799

because there's there's been such a enan

1918.08

ment of technology in the last five or

1919.72

10 years and it feels like we've said

1921

that for a long time but particularly in

1922.639

the last five years where remote and a

1924.72

lot of other things have become a lot

1926.279

more reality uh the the ability to

1929.84

communicate you know the world has

1931.399

shrunk and all those kinds of things and

1933

then there's been a lot of uh

1935

advancements in the internet area that

1937.679

things that didn't even exist

1938.919

possibilities you had in the past you

1941.32

you know that were never going to happen

1942.559

they were dreams now are very easy to do

1945.12

and very common place I think this is

1946.799

something for us all to keep in mind is

1949.559

that yeah you don't want to break

1951.88

something that's you know fix something

1953.799

that's not broken but you also want to

1956.039

make sure that you're you know properly

1957.559

maintaining things and updating them and

1959.72

and keeping them current enough so that

1961.799

if there is a point where you have to

1963.039

make a big change you're not having to

1964.88

essentially like go back to the drawing

1966.48

board to to rewrite it and by all means

1969.96

have repositories and things like that

1971.36

where you're keeping CCT of your source

1972.679

code document things add comments that

1975.24

kind of stuff so that you're helping

1976.76

your organization company your customer

1979.039

out whenever somebody does come back and

1981.639

need to take a look at that application

1984.24

if you have anything that you would like

1985.679

to throw at us as far as like some of

1987.76

your experiences or if there's some

1989.24

applications you want us to look at we

1990.679

can even do that you can reach us at

1992.6

info@ developer.com you can check us out

1995.44

on the developers site out on Facebook

1997.44

we've got uh stuff out on LinkedIn the

1999.559

developer ners site we've got forms

2002.039

we've got blog posts we've got the

2004.679

podcast we've got the YouTube channel

2006.88

got a lot of different ways you can

2007.96

reach us a lot of different Co topics

2009.559

that we've covered always looking

2011.84

forward to any kind of information we

2013.559

get from you guys feedback to just let

2015.639

us know like where do we want to go what

2017.44

do you guys want to hear what do you

2018.72

like what don't you like if you don't

2020.32

like how we look sorry can't do anything

2021.84

about that other than I guess we can

2023.039

cover our face or something like that

2025.36

we'll use some we'll use some filters

2027

because that's all that's all getting

2028.279

good we'll just have little AI people

2029.84

that that act for us and we'll just talk

2031.96

behind the scenes all right I digress

2034.519

that being said we're going to wrap this

2036.159

one up we're not done with the SE we are

2038.36

still going to just continue talking our

2039.84

way through the things we're running

2041.039

into and the best ways that we can grow

2043.799

as developers and also help our

2045.76

customers be a blessing to them and to

2047.48

those that work around us that being

2049.119

said go out there and have yourself a

2050.44

great day a great week and we will talk

2052.639

to you next

2055.72

time wow that's like painful almost

2058.119

going through that thinking about like

2059.359

there's some of those projects I'd sort

2060.72

of like you know blacked out in my

2062.2

memory somewhere and it's like oh yeah

2065.119

that was fun so I have a final thought

2068.24

for those still

2069.72

watching what is your take on if you are

2074.079

The Keeper of the keys you built this

2076.119

great application it's been out there

2077.96

for years but now you're done you know

2081.2

you want to retire or you want to put it

2083.079

aside you either couldn't sell it or you

2085.76

did sell it or you know it it's just

2089.399

essentially

2090.839

debt given today's state of Open Source

2095.8

would it behoove not just you but your

2098.28

customers to put that out on like GitHub

2100.839

and then open source and let the

2102.2

community support it or do keep it

2104.92

behind locked doors and say you know it

2106.92

was mine sorry you guys are so I'm

2111.48

done that's actually open source is a

2114.32

whole different area to get into with

2116.079

that because there

2117.44

are so many so many restrictions around

2120.44

that and legalities and things like that

2121.92

that may be involved in it but if it is

2124.28

something in particular that is a you

2127.28

know like you had a little pet project

2128.72

and you've got some customers and you

2130.76

you're just like you're retiring and

2132.32

I've I've seen a lot of those kinds of

2133.92

projects and people trying to get PE get

2137.16

uh Consultants to come in and reverse

2139.52

engineer an application that they love

2141.8

but they the developer quit the company

2143.52

died something like that I think that is

2146.44

something for you to consider is open

2149.96

sourcing such things or putting some

2152.079

some way so that it can even if you

2154.2

don't want to deal with it that a

2156.079

company that does or needs to can that

2160.24

they can go in there and they can make

2161.8

some changes and yeah it may require a

2164.28

little bit of your time to go talk to

2165.8

somebody about it to sort of help do

2167.24

that handoff

2169.119

but I I've earned a lot of money having

2172.48

to dig through stuff that we could have

2174.4

saved everybody if somebody had just had

2177.319

an hourlong conversation so that that's

2180.16

the stuff that I hate that's like blood

2181.64

money because it's like you could have

2184.319

saved everybody headaches mistakes and a

2187.68

lot of time that was cost to your

2189.92

customer your employer or whatever it is

2192.16

if you just spent a little bit of time

2193.359

doing a handoff maybe do a little bit of

2195.44

documentation that's why it's near and

2197.2

dear to my heart that if I hand

2198.599

something over to somebody if I'm

2200

wrapping up a project that I make sure

2203.319

that I give them contact information for

2205.839

me plus summaries documentation whatever

2209.48

I can to say hey if somebody comes in

2213.52

because I know I've done this enough if

2215.319

somebody comes in six months from year

2217.359

now a year 10 years whatever it is these

2219.88

are some of the questions they're going

2221.2

to ask these are the answers to them

2224.04

this is how you get to these things

2225.48

these are the you know and some here's

2227.72

the logins here's the passwords here's

2229.319

all of these things here's the things

2230.76

you're going to have to worry about a

2231.839

year from now which is very common where

2234.24

it's things like if you go set somebody

2235.76

up a website for example and you get

2237.76

them an SSL certificate through blah

2240.319

blah whoever it happens to be company

2242.92

you know whether it's GoDaddy or one of

2244.599

those if you they're going to have a Fe

2247.56

come up a next you know a year or two

2249.2

years three years down the road the

2251.28

domain's going to have to be renewed

2252.8

there's things like that that make sure

2255.16

people understand these kinds of things

2257

good example ran into something just the

2258.76

other day had a customer that had picked

2260.48

up my one of the servers we built for

2262.119

him we had a demo server Dev server

2266.16

replicated it it's a production server

2268.92

we had stuff running on that that was

2271.04

like backups and things like that for

2272.76

them that they then upgraded their

2274.56

backup system they had a new guy came in

2276.56

did everything he didn't realize that we

2279.16

also had all this stuff on that thing

2280.88

that was just backing up files and it

2282.64

was doing it all local so it wasn't a

2284.04

huge deal but they now had built you

2286.2

know a higher-end off-site solution and

2289.76

we're like hey you're just loading up

2292.04

you're like filling up that hard drive

2293.92

now I mean you got plenty of space but

2296.48

you don't need these things to run

2297.96

they're you know they're burning

2299.079

processing time and they're filling

2300.28

space so maybe we you know if you guys

2302.04

want to pause those we can pause those

2303.359

and you can even delete all the old uh

2305.56

backups that we had because now you've

2307.079

got a different process so you know you

2309.599

got to keep an eye out for such things

2311.04

and just sort of provide like

2313.119

architectural documents and you know

2315.68

overall snapshot kind of documents of

2318.4

this is what it does and this is what it

2319.72

runs and this is what these things are

2321.52

and it will it will save so many so many

2325.04

headaches and uh I I could talk for I

2327.88

could do a season on issues that we've

2330

run into where they were gotes where we

2332.76

didn't know there wasn't

2334.96

documentation things something changed

2337.119

and we even know where that was until we

2338.64

had to dig all the way into the code

2340.16

those kinds of external sources and that

2343.48

just make sure you you document them any

2346.16

more thoughts on that before we wrap

2347.64

this one up no yeah the reason I had

2351.48

asked that question is because remember

2353.079

back before the internet we had to

2355.079

publish software on CDs discs mail it

2357.4

out and the underlying companies

2360.92

typically either got bought and that

2362.96

software carried on or evolved or it

2366

died and so so just if you do think

2370.52

you're done with something don't

2372.76

necessarily let it go to the digital

2374.56

graveyard you know there are things you

2376.079

can do to save it or even potentially

2379.079

save your customer's headaches down the

2380.72

road maybe give them an option like a

2382.44

retirement plan for you hey I'm done do

2385.76

you want to buy the source code to

2387.88

maintain this yourself you know just

2390.24

just an

2392.2

option well I think our options is to go

2395.16

on and wrap up where I'm at at

2397.92

uh in an evening but whatever the

2399.68

generic time of the day it is for you

2401.2

there's I'm sure something awesome that

2402.839

you have coming up next thank you for

2405.16

watching uh leave you know feel free to

2407.119

leave comments down in the down here

2409.319

we're going to have show notes with all

2410.44

this kind of stuff all the social things

2414.119

do that get out there let us know what

2416.48

you think let us you know follow us

2418.48

follow the check out the if you're

2420.2

you're here so go ahead and check out

2422.04

the podcast if you haven't because there

2423.8

are some there are some adjustments and

2425.4

things like that plus then you're not

2427.44

looking at us while you're driving you

2428.72

can actually just hear our dulet tones

2430.52

while you're driving down the street

2432.2

working out doing all the other stuff

2433.76

where you don't really have the time to

2435.359

do visual stuff we will wrap this one up

2439.359

as always take care we will come back

2441.28

next time around we're just going to

2442.319

continue chugging on Tuesdays Thursdays

2445

we get a you get a new drop you get see

2446.72

whatever our latest stuff is and uh like

2449.4

I said we're wrapping up this season

2450.96

pretty soon let us know if you have

2452.2

requests for the next one otherwise

2454.359

we're going to make it up like we always

2455.76

have and we're going to continue on the

2457.44

next season and and continue talking

2459.2

through stuff that we find helps us and

2462.2

hopefully helps you become a better

2464.319

developer have a good one everybody

2467.87

[Music]