📺 Develpreneur YouTube Episode

Video + transcript

Software Development Challenges and How To Navigate Them

2024-03-07 •Youtube

Detailed Notes

Welcome back to our podcast series! In this episode, Navigating Software Development Challenges, we continue our journey through Season 21, dedicated to empowering developers with essential skills and insights. Whether you're a seasoned coder or just starting, we're here to help you navigate the complex world of software development.

Over the years, we've witnessed the evolution of our focus from a broad spectrum to a more refined approach. Our goal is to assist developers in honing their craft, addressing common challenges, and, ultimately, delivering high-quality solutions to their clients.

In today's discussion, Michel and Rob delve into the art of problem-solving in the realm of software consulting. It's not uncommon for clients to find themselves in tricky situations, often due to factors like vendor lock-in or technology sprawl. As consultants and technologists, our task is to guide them out of these predicaments and set them on a path to sustainable success.

Navigating Software Development Challenges

One prevalent issue we've encountered is the tendency for companies, particularly non-technical ones, to rush into technology solutions without proper research or planning. This approach often leads to short-term fixes that fail to scale or maintain over time. Instead, we advocate for a more strategic approach, considering factors like the client's needs, budget, and long-term goals.

A case study shared during the podcast highlights the importance of thorough assessment and strategic intervention. In this scenario, Rob's company has a client who had been using a poorly maintained system built by a side hustle developer, resulting in numerous technical challenges and inefficiencies. By conducting a comprehensive analysis and implementing targeted solutions, we were able to revamp the system, streamline processes, and enhance overall functionality.

Leave The Code In A Better Place

Central to our approach is the concept of leaving code and processes in a better state than we found them. Whether it's fixing bugs, optimizing performance, or implementing best practices, our goal is to deliver tangible improvements that drive long-term value for our clients. Moreover, effective communication and documentation ensure a smooth transition and empower clients to manage their systems effectively.

As we navigate the ever-changing landscape of software development, it's essential to remain adaptable and innovative. By embracing agile methodologies, continuous improvement, and collaborative problem-solving, we can overcome challenges and deliver exceptional results for our clients.

In closing, we invite you to join us on this journey of growth and learning. Whether you're a developer, consultant, or technology enthusiast, there's always something new to discover and explore. Together, let's elevate the standards of software development and make a positive impact on the world.

Thank you for tuning in, and until next time, happy coding!

Additional Resources * What Goes Into Building Software - develpreneur.com/what-goes-into-building-software/ * The Importance of Writing Readable Code - https://develpreneur.com/the-importance-of-writing-readable-code/ * Coder or Developer Learning to Solve Problems - https://develpreneur.com/coder-or-developer-learning-to-solve-problems/ * Master Agile, Scrum, Sprints, and The Software Development Life Cycle - https://develpreneur-classes.teachable.com/p/software_development_life_cycle

Transcript Text
[Music]
well hello and welcome back we are
continuing season 21 uh for those of you
that are podcast listeners the rest of
you uh thank you for hanging out with us
as you out on the YouTube channel we're
continuing to talk through how to be
better developers and this is really our
focus is our focus is our Focus now we
have drifted a little bit if you go way
back uh I think develop andur is now
seven or eight years old we' been around
I think since 2016 2017 I forget when we
originally uh launched but we have
drifted
we sort of started with a very tight
Focus but then as we've added content
and we've just sort of put stuff out
there we've we've gotten very Broad and
one of the things we want to do is bring
it back down our avatars was not it was
not an avatar it was like a Coliseum of
avatars that we were servicing and so
now we're trying to bring stuff down
Avatar just for those you don't know
it's your ideal customer it's like this
is who you want to talk to it is
defining your Niche down to one person
and knowing that person as far as like
how old are they what do they like to do
what are their Hobbies what is their
what is their day job like what is their
commute like it's those kinds of things
and we're not going to get too deep into
that piece but if you go Google uh how
do I Define my avatar or how do I create
my business Avatar or my ideal
customer those things you'll find lots
of recommendations around that that's
going to be some of what we discuss as
we're building the the develop andur
brand here uh today we're we are going
to talk a little more technology we're
going to talk or I guess more problem
solving uh we have in the past we have
discussed some of our current uh
challenges and and some of the customers
we' run into and this episode I want to
talk about uh something we we actually
find fairly often it is a customer that
has gotten themselves into a bind of
some sort for a variety of reasons we'll
talk about but they've gotten themselves
into you know sort of like got
themselves in a bind they're in a little
bit of a corner and they're trying to
figure out a way out and how do we as a
consultant as a technologist as a
problem solver help them out of that how
do how do we get them out of that corner
and not only get them out of that but I
think one of the best things we can do
is set them up so they don't end up back
there so that they are taking some steps
to avoid getting back into that
situation and there's a lot of different
ways that you can you can be sort of uh
pigeon hold and things like that there's
vendor lock in there is uh essentially
what I call technology sprawl where you
just have got you've just grown and
grown and grown and grown and You' just
got 18,000 Solutions of technology so
you may have like we've been places
there's three or four people in the shop
and there are 20 different technologies
that they're trying to maintain which is
just way way too much it it becomes more
of a headache of Switching gears than it
is you know actually solving
anything and I think I'll start with
before I get into like my you know my
specific story that I did want to talk
about that we did what is I go start
with Mike like what do you what do you
see as the most common uh like you maybe
one or three issues that you've run into
as far as like these businesses gotten
themselves into because I know you've
dealt with a lot of small businesses
where they've sort
of they just haven't done they haven't
done what we would we would say the
ideal solution is and so what are maybe
some of like the the common pitfalls
you've
seen so interestingly enough so some of
the ones that uh are one of the biggest
problems I see a lot of companies doing
especially non-technical companies that
want to get into Tech where they want
like a mobile app or they want like a
desktop application or they want some
type of techn uh technology Sol solution
to their problem what a lot of them do
is they go out and they do not do a lot
of research they find the first product
online that kind of meets their needs
they buy it they implement it and now
here we are 3 four years down the road
and they have to hire someone to come in
and maintain this because no one
supports it anymore the company's either
out of business they don't do proper
updates or the software never did what
they wanted and they have so much
customization that it just doesn't work
anymore it it's like a hot mess um
that's one of the number one problems I
have um number
two is it's a startup or they're in that
startup mentality and they want to do
things cheap so they don't want to spend
money and instead they go out and find
all these open- Source possible
solutions for their problem mishmash
them together without much thought and
quickly throw something out there uh the
problem with those uh instances is they
usually are hard to maintain or they do
not scale so once the company starts to
grow you run into a situation of oops
this doesn't work we have to either go
back and rewrite it or throw a lot of
money and development time into this to
actually make it work the way we expect
it to work and probably the third thing
um companies really have no freaking
clue what they're doing and it's a hot
mess from the beginning they hire people
to do what they think they want and you
you typically end up in that swing set
scenario uh for those of you that
probably might not have seen this uh
Google swing uh what is it swing set
problem or roller coaster uh design
online you'll see a little cartoon which
starts with a uh tree swing and ends
with the customer really wanting a tire
swing and that is kind of the third
situation I find myself in
where the company either pitches one
thing and delivers something else or
they totally read what the uh customer
wants and they build something
that doesn't meet the problem it's
something that's a total waste of
time yeah and I think that that that is
probably the the biggest problem
regardless is is that communication
thing that you get from the you know
that that tree swing uh and I think
there yeah I think there's also the
roller coaster example of that that are
totally it shows you the difference the
different things that are communicated
and how vision being translated into
reality can be uh not the same they can
be very very different uh the one I want
to talk about the example I've got is I
think probably that second one a little
bit these are it's a little bit that
they you a little bit of a budget kind
of thing but this is also something I've
seen quite a bit particularly for for
startups and small companies and I went
to this customer contacted me and the
initial issue was or initial request was
they had a uh system they had uh they've
been using it for a couple of years it
was critical it was like it was time
entry it was things like people get paid
based off of this and they invoiced off
of it I mean not directly but it was
like this was core data for their
business and it had been built by I
think he went to church with a guy or
was like a cub scout leader with him or
something like that and so it's somebody
he knew that was a developer and they're
like hey I can go do this and so it was
it was a side Hustle
developer this you know the the guy that
was doing it was just like hey I'm going
to I'm I can write some code on the side
I can give you a good deal we'll put
something together and so he went with
what he knew which happened to be uh it
was it was my SE was my SQL was on the
back end I want to make sure it may have
been squl server now I'm trying to
remember what the back end was
originally it may have been actually SQL
server on the back end U but then it was
also it was classic ASP on the front end
not asp.net classic ASP it was running
on a just a uh a Windows server with
just IIs and it was just basically like
there's your code and the way that was
his version control was Hey we back up
the server every so often so there was
no there's no Version Control there was
uh just something we've probably seen
quite a bit where the versions where it
would be like a page and they would have
a page with another number on it or it
would have a date on it or you be like
uh page uncore testing new thing you
know stuff like that where it's like you
look at the you look at the folder of
files and you're like oh wow you've just
been this is just a developer machine
and they're just basically developing on
the server
which not usually a good approach that
usually tends to be something that
causes a you know causes some
issues so coming into that I guess I'll
put you on the hot seat a little bit so
giving that little thing what would be
your maybe like how do you that or maybe
what would be your first recommendation
to a customer when you walk into that
kind of
situation well the first part I would
try not to laugh about the lack of
Version Control
but uh because from a developer
standpoint especially like as a
contractor or uh just a employee walking
into a situation like that is never
ideal right we don't want to see
software in such a state that it's not
maintainable uh so one of the first
questions would be is what from so I'm
going to take this a little bit from my
company's perspective from my QA
perspective so looking at from a
software with QA in mind the first
question I would be is okay who is the
customer you're serving what is this
application serving you know what is the
problem you're trying to solve and from
there I would basically Define the user
story Define the use case that you're
trying to solve with this software then
I would go to the end product and say
okay what is it that you are actually
providing are you meeting this use case
are you actually delivering something
that meets what your expect expectations
are at the beginning and then if you're
not then you slowly walk peel back the
onion and walk through the different
stages and find out okay what do you
have implemented what kind of
Technologies do you have you know what's
your stack and from there you look at is
uh well that would be the first thing
the second thing would be um what is
your budget
because if they come at me and say uh I
have no budget I have no money you know
this has to be start mentality this has
to be open source so the first thing I
would look at is are you using the right
Technologies you mentioned SQL Server
well uh my first comment there would be
why are you paying for licenses if you
can't afford it you know my SQL does
pretty much everything you need switch
over to something that's more open
source my SQL postgress something like
that uh in uh first of all
ASP core or you know um basic ASP really
has not been used in a while so that
would be another red flly because
finding developers to develop in that is
going to be very expensive so the next
thing you want to do is okay if you want
to keep it as a scripting language
javascript's pretty much the DEA facto
maybe go with JavaScript maybe PHP maybe
even python depending upon what it is
that you need to push out the door uh
and then kind of walk through the
Technologies there the other thing I
would definitely push would be get
Version Control in ASAP and then uh if
since they don't have Version Control
chances are they probably have little or
no QA in in process at all and I would
probably at least instantiate some
simple QA scripts out there to at least
test the core functionality make sure
that what the product is supposed to do
is at least doing that you may not have
negative test cases to test you know if
it's breaks but at least test the basics
to make sure it's going out the door
correctly since you don't have virsion
control because then you would at least
know that what's going out works and
then you can apply version control over
that to say okay this is a stable
version because if it doesn't work
you're not stable so you're you're going
to know right away okay this is
basically going back to an alpha
version yeah and that's it's interesting
because that's you know even from a QA
perspective if you if you flip that more
to just a pure development perspective
it's really the same thing uh I think
the key there is you start off you don't
come in and just like start ripping out
code and changing stuff there's some key
things you have to do is like get the
context of what's going on there is make
sure that you're clear on that and it's
the first thing really is sort of like
the the why why does this thing exist
who is it serving how what does
successful serving your customer look
like which sometimes and this goes back
to our our couple of the earlier points
sometimes a business hasn't really
thought through their process processes
completely and they can be many years
into business and still have uh gray
areas within their processes or things
that they don't really understand
because they've spread that out across a
couple of different uh employees or or
departments and there's not really
somebody that knows how it all plugs
together it's sort of like a bunch of
black boxes that are just tossing stuff
from box to box as opposed to somebody
being able to trace that all the way
through I think that's one of the key
things and that was one of the things I
talked to them about I said okay you got
this big sprawling thing it had oh like
I want to say it had like two dozen
maybe three dozen menu items and
basically you think each of those was a
page and some little like process to it
and we talked about it and and talked a
little bit about the budget it's like
okay well what do you what do you want
to do and I knew coming into it that he
had a limited budget it was one of these
things like this needs to be fixed in
you know I think it was like 10 to 20
hours of work something like that and he
had some key bus like the database every
so often was just rewriting like it
would do a mass update of the employee
table and like all their times would get
set to whoever the last one was that
saved it uh which was interesting enough
never could figure out how to reproduce
it it would happen periodically had logs
everything it like it was some feature
of that structure that was part of why
we went on to the the next project which
was basically we solved a couple things
there uh did a couple things to to get
some backups going and to basically just
develop just like Define a simple
deployment process of okay let's take
this code we're going to put it out into
GitHub I think is where I ended up
putting it or some git
repository and that's where we're going
to start doing our builds from instead
of putting everything on that server and
just writing code there we're going to
have access so if there's a developer
comes in they can always pull the code
down and they can push it back up and
then we have just a little it was just a
little simple ant script that was
essentially like just copy from point A
to point B once you downloaded
everything but then from there it would
very quickly he's like well hey you know
well what's what's really critical
because this is something that's been
built over a couple of years and now you
want to essentially the recommendation
was scrap it and start all over but that
may not be valid but it actually turned
out to me because he said well you know
what I really only need like this this
one function which was funny because it
was actually like 10 functions but he
was really like I just need employees to
be able to enter their time and I like
great that's like one page and we can do
that the conversation continued and it
was like oh well there's these lookup
values and there's these computation
values and so it's like that one page
turned into one or two pages well it was
one page for the user there's like 10
admin Pages behind it for the the
configuration data and I think that's
one of the things that you know I always
want to recommend to say
ask that extra question as far as like
and then what or is that all or how
about you know what happens in this case
because when you do that then you can
get those those details and then as
you're as you're stepping in like this I
think this is a a key point that you
brought up as as well something we did
is like try the best you can to leave it
in better shape than you found it you
know it's one of those it's like okay
they don't have anything so at the very
least you could get them some scripts
that would be you I regardless of your
skill level you could easily build a
couple of scripts that are if you run
this we'll copy the code from point A to
point B so there's actually a production
folder at least and a development folder
that's separate and then also Version
Control is so easy these days it's and
it's so much easier to uh to share dat
to share code out to track changes to
not have 15 different copies of a file
in there uh there's just so many there
just so many benefits to that and it's
so accessible uh if you don't have a
GitHub account pause right here stop go
sign up it takes like no time and people
start it should be on your resume a lot
of places now will request like can I
get your GitHub you know ID or link to
sort of see what you're even from you
know if you do a lot of private stuff
like what's your general activity and
things like that um it gives you it's
it's almost like having a LinkedIn page
for developers is having that that
GitHub thing and so that's what we did
is it was it is it's like you go to the
Y you figure out what the focus is and
this is something I think from a a
Consulting point of view and uh
something we'll probably talk about in
our in our next session
here is how and it's also very uh
indicative of the assessment audit type
products that we've we're trying to
build because that's what it was it was
like just he was basically like tell me
why this is broken I need this fixed can
you do a couple of things to fix this
piece because I know I've got this huge
thing but I really want this one piece I
just need it to work and so we did we
extracted and I told them I said
actually what I could do is you can
leave all that other stuff there we
built uh and I said you know what I can
spin up a little python Jango app that's
basically just going to point to the
same database pull the data I've got
like one or two forms and now it's like
we're going to rewrite that page we're
going to just pull that like none of the
code that does that entry and that
validation is there anymore we're going
to rewrite the whole thing we're going
to make sure that it's done in a manner
that is much easier to maintain it's a
current language in worst case you know
if I had walked away it'd be like at
least this
key uh problem that he needs solved is
in a modern language it's something that
there's a lot of developers out there
and it was in a you know set up in a
case in a sense in a way that somebody
could come in real quick
and be like okay here it is here's the
documentation here's how you run it
here's how you get it here's how you
launch it and you could you could swap
developers in and out fairly
easily so thoughts on thoughts on that
because I know we had a good
conversation before uh s Thor you're too
sense at a couple of those
things so I don't want to go too far
down the rabbit hole on that one uh
because that's a whole discussion in and
of itself getting into the design
process and building it because the uh
one of the things in your case you had
to get this fixed for them quickly right
like they were in a bad State uh that's
one of the things we'll probably discuss
at a later point where there's the you
know right now there's you know what can
you do a little bit better and then the
best way to do things but in this
particular situation um the only thing I
would uh like to add is by doing what
you did you also set it up to a point
where you could get them to a point of
continuous integration where they could
make a change copy like the development
folder to P to roll it out the door so
you actually started building some
processes for them that it seemed that
they didn't have at all and that's
another thing that a lot of companies
miss when they build software they don't
think about the processes of developing
the code testing the code deploying the
code and maintaining the code um that
whole software development life cycle
kind of gets lost if you think about the
agile environment if a company just says
oh well we're agile we're just going to
write code and deploy code without
thinking through the process they get
into trouble
right yeah and I think that's a that is
actually a very that's its own uh long
conversation uh probably a religious
conversation for some people is agile
and how
it what it does to the software
development life cycle and technically
if you really if you're paying attention
and doing right agile does not change
the software development life cycle
you're still doing it you're doing it
differently it's not like waterfall it's
not as uh necessarily maybe distinct uh
although I think there's still those
distinct tasks still exist if you're
doing it right like if you're if you're
doing adinal and you're not doing
requirements Gathering or design you're
doing it wrong if you're not doing
testing you're doing it wrong if you're
not deploying it it's going to be
obvious you're not doing it wrong
because nobody's going to be able to use
it it's like hey I I got all the way
through why what what's wrong with this
project oh well it's because you didn't
get to the deployment phase and so
nobody's actually able to access it
which funny enough is you know that's
one of the things that agile's like you
know drawing points is we are going to
deploy on a regular basis so you're
going to have a useful deployment you
know release at the end of effectively
hopefully each Sprint is that you've got
something that you can work with and I
think that's that's something that I
want to sort of as we're getting to this
one is is there is a as you said sort
like that rabbit hole I think we as
developers often run into the problem
that
we especially as we get
into you know once we've gotten past our
first few years and now we we sort of
we've done this before we've got some
ideas we sort of are starting to settle
into our ways of developing software
that we feel we have like sort of our
ideal and that we don't move off of that
it's like well this is how it has to be
done and that's not the case I mean
ideally yes if we had unlimited funds
and time then yeah there's all these
things that we want to do but the
challenge and I think what makes a
successful consultant is being able to
come in and meet the customer where
they're at instead of saying you need
this Enterprise grade
solution it's saying okay you have a
limited budget you have a limited time
you have a couple of things that are on
fire and need to be put out and so it's
being able to come in and do that triage
and do it in a way that is not just like
slapping a Band-Aid on something but
instead saying okay yes we have to slap
a Band-Aid we have to stop the bleeding
but let's try to do it in a way that is
setting ourselves up for Success at some
point now sometimes you're let me you
just you're it's like you only have time
to slap a Band-Aid on it move on it's
like you can put out the one fire but
you don't have time to do anything to
like address the other fires but that's
usually not the case usually if you take
a second and instead of just panicking
and going like oh we're just going to
fix this bug which is probably how they
got into that situation you think about
a little bit you research a little bit
like you said as you like explore that a
little bit more like okay what what
really you trying to do what really is
going on here because sometimes then
you're going to realize that now you're
not just hitting your you're not just
dealing with the effect you can actually
go find the cause and either directly
address that or at least put that on
their road map to say hey this is why
you're running into it uh which would be
like a a perfect example would be people
that don't do QA like hey if you keep
having the same bug come up over and
over again then maybe you should try
like some testing of some sort maybe
like a little regression test so that
before it goes out to production you
know that you broke it again or Version
Control so you know that oh yeah we
changed this section of code so we need
to make sure that it actually works as
opposed to throwing all your cat out
there and go oh it's broken because it's
broken is not a very useful way to debug
stuff thoughts well and you know as
developers and you mentioned this and
this is something I think we you're
probably going to hear us both say this
a
lot make sure you always leave the code
in a better State than you started with
don't half asset make sure you do a good
enough you know make sure you do the job
well enough if it's just putting out a
fire if it's just fixing a little bug
make sure the code is clean
and concise and it's in a good place
that you're not taking like 20-y old
technology and still throwing in 20-y
Old technology if you can do it with
newer technology and do it right do it
right yeah I think that that uh leave it
better than you you found it is probably
one of the most important things to do
is it's a that's what particularly if
you're going into a Consulting role if
you can do that if you can come in and
regardless of where you're at you know
wherever you enter a prod project that
you enter it and your
work is an improvement on what was there
at least as good as they had but usually
if you can find a way improve it which
is you know better documentation cleaner
code better performing stuff whatever it
is then that's going to help you as a
professionally because then they're
going to say Hey you know Michael came
in and he did this work and it was so
much better than the other stuff that we
had uh it's also going to be more likely
they're going to you know bring you back
and say hey you did a great job on this
we want you to work on that and that's
sort of the moral of story The the happy
ending we'll call of the project that I
went into is it was originally think I
said like it's like a five to 10 hour
project at this point that was a I think
now almost a year and a half ago that I
first uh kind you know we first started
working with them and it has turned
into probably 250300 hours something
like that that we've gone into it we've
Rewritten the entire system we've added
pieces to it it it is it's stable it
actually from the customer point of view
it is something that's probably I don't
know I bet it's saved them easily you
know tens of thousands I think probably
you know hundreds of thousands of
dollars because they were going to take
that solution and replace it with
something that was going to be much more
expensive it was going to be much higher
end it was going to be like a Salesforce
or something along those lines but now
they've realized that they can take that
customized piece we cleaned it up we've
really refined it over the last year and
and helped them Define a couple of their
processes but also added enough features
that they're like no I don't think we
really need that now we've got what we
need and there are a few Integrations
that they wouldn't you know they
wouldn't mind having and they've
actually a couple they would love to
have that we can't because the provider
the vendor doesn't allow integration but
this is like a win-win win kind of thing
is that we have come in we showed them
and and the customer even said that was
part of it he's like hey I want I want
to if you can solve this little problem
and if you can solve this little problem
and I trust you then we're going to work
on bigger problems and so we've built
that trust we've built that relationship
and now it's turned in a steady stream
of work for us but also a steady stream
of improvements for him and his
organization and it's allowed us to have
something that we've we've built and we
are it really is at a point that we can
walk away from it and we could just be
like here you go here's all your pieces
we've got a little bit of documentation
left a little bit of handoff to their
technology people but it's really to
that point where it's like you guys can
maintain it from here on if you want if
you want us to add features we can do
that and so it really is it's just like
you it's one the things it's like good
work is its own reward so I'll give you
your the last two cents before we wrap
this one
up yeah one of the things and I like
that you said that is not only Le the
code in a good place make sure you leave
with the customer in a good place make
sure you have a good handoff make sure
that you communicate what you did so if
the customer does have to go out and
find someone else to do the work they
can hand it off to someone else cleanly
so that they're not in a situation where
oh uh you know this is another hot mess
I need to come in and have this
Rewritten you know if you're leaving it
in a good place you should also leave
the handoff in a good place and like you
said Rob you know some additional
documentation might be needed or maybe
even just a quick uh little summary
write up of what the work that was done
and where it is and maybe a project
structure excellent well said and we
sort of run out of our time for this
episode so I want to thank you guys for
listening as always shoot us an email at
info developer.com if you have any
questions comments you can leave uh
notes things up comments on the the site
if you're on YouTube or you can also see
leave them out on develop or or wherever
if they allow comments wherever you are
listening to podcasts feel free to do so
always looking for more information and
we're just here to serve you to help you
guys become better developers that being
said we're going to wrap this one up so
go there and have yourself a great day a
great week and we will talk to you next
[Music]
time
Transcript Segments
1.35

[Music]

27.64

well hello and welcome back we are

30.039

continuing season 21 uh for those of you

32.96

that are podcast listeners the rest of

35.32

you uh thank you for hanging out with us

39

as you out on the YouTube channel we're

40.36

continuing to talk through how to be

42.12

better developers and this is really our

44.039

focus is our focus is our Focus now we

47.28

have drifted a little bit if you go way

49.76

back uh I think develop andur is now

52.12

seven or eight years old we' been around

54.239

I think since 2016 2017 I forget when we

56.8

originally uh launched but we have

59.559

drifted

60.559

we sort of started with a very tight

63.32

Focus but then as we've added content

65.479

and we've just sort of put stuff out

67.56

there we've we've gotten very Broad and

69.799

one of the things we want to do is bring

71.159

it back down our avatars was not it was

74.32

not an avatar it was like a Coliseum of

77.4

avatars that we were servicing and so

79.439

now we're trying to bring stuff down

81.52

Avatar just for those you don't know

83.159

it's your ideal customer it's like this

85.28

is who you want to talk to it is

88.079

defining your Niche down to one person

90.4

and knowing that person as far as like

92.68

how old are they what do they like to do

94.36

what are their Hobbies what is their

96.079

what is their day job like what is their

97.88

commute like it's those kinds of things

101.159

and we're not going to get too deep into

103.159

that piece but if you go Google uh how

105.88

do I Define my avatar or how do I create

108.719

my business Avatar or my ideal

111.479

customer those things you'll find lots

114.32

of recommendations around that that's

116.479

going to be some of what we discuss as

118.399

we're building the the develop andur

120.64

brand here uh today we're we are going

124.479

to talk a little more technology we're

126.399

going to talk or I guess more problem

129.16

solving uh we have in the past we have

132.319

discussed some of our current uh

135.08

challenges and and some of the customers

136.76

we' run into and this episode I want to

140.28

talk about uh something we we actually

142.8

find fairly often it is a customer that

146.519

has gotten themselves into a bind of

148.08

some sort for a variety of reasons we'll

150.48

talk about but they've gotten themselves

152.519

into you know sort of like got

154.319

themselves in a bind they're in a little

155.48

bit of a corner and they're trying to

156.44

figure out a way out and how do we as a

160.599

consultant as a technologist as a

162.36

problem solver help them out of that how

164.959

do how do we get them out of that corner

167.599

and not only get them out of that but I

170.64

think one of the best things we can do

171.959

is set them up so they don't end up back

174.56

there so that they are taking some steps

177.239

to avoid getting back into that

180.36

situation and there's a lot of different

182.599

ways that you can you can be sort of uh

185.28

pigeon hold and things like that there's

186.959

vendor lock in there is uh essentially

190.68

what I call technology sprawl where you

192.72

just have got you've just grown and

194.519

grown and grown and grown and You' just

196

got 18,000 Solutions of technology so

199.319

you may have like we've been places

200.76

there's three or four people in the shop

202.799

and there are 20 different technologies

205.28

that they're trying to maintain which is

207.2

just way way too much it it becomes more

210.56

of a headache of Switching gears than it

212.519

is you know actually solving

214.72

anything and I think I'll start with

217.08

before I get into like my you know my

218.959

specific story that I did want to talk

220.599

about that we did what is I go start

223.92

with Mike like what do you what do you

226.239

see as the most common uh like you maybe

229.519

one or three issues that you've run into

231.28

as far as like these businesses gotten

233.519

themselves into because I know you've

234.599

dealt with a lot of small businesses

235.959

where they've sort

237.28

of they just haven't done they haven't

239.48

done what we would we would say the

241.2

ideal solution is and so what are maybe

243.319

some of like the the common pitfalls

245.319

you've

248.439

seen so interestingly enough so some of

251.519

the ones that uh are one of the biggest

254.76

problems I see a lot of companies doing

257.479

especially non-technical companies that

259.639

want to get into Tech where they want

261.68

like a mobile app or they want like a

263.919

desktop application or they want some

266.199

type of techn uh technology Sol solution

270.32

to their problem what a lot of them do

272.639

is they go out and they do not do a lot

275.639

of research they find the first product

277.72

online that kind of meets their needs

280.8

they buy it they implement it and now

283.479

here we are 3 four years down the road

285.759

and they have to hire someone to come in

287.88

and maintain this because no one

290.56

supports it anymore the company's either

292.6

out of business they don't do proper

295.039

updates or the software never did what

297.24

they wanted and they have so much

298.44

customization that it just doesn't work

300.52

anymore it it's like a hot mess um

303.4

that's one of the number one problems I

305.56

have um number

307.88

two is it's a startup or they're in that

312.44

startup mentality and they want to do

314.16

things cheap so they don't want to spend

316.36

money and instead they go out and find

318.84

all these open- Source possible

320.72

solutions for their problem mishmash

323.08

them together without much thought and

324.88

quickly throw something out there uh the

327.479

problem with those uh instances is they

330.96

usually are hard to maintain or they do

334.12

not scale so once the company starts to

336.36

grow you run into a situation of oops

339.4

this doesn't work we have to either go

340.88

back and rewrite it or throw a lot of

343.12

money and development time into this to

345

actually make it work the way we expect

346.72

it to work and probably the third thing

349.72

um companies really have no freaking

351.639

clue what they're doing and it's a hot

354.479

mess from the beginning they hire people

356.6

to do what they think they want and you

359.479

you typically end up in that swing set

362

scenario uh for those of you that

364.28

probably might not have seen this uh

366.36

Google swing uh what is it swing set

369.16

problem or roller coaster uh design

372.44

online you'll see a little cartoon which

374.8

starts with a uh tree swing and ends

377.72

with the customer really wanting a tire

379.52

swing and that is kind of the third

382.28

situation I find myself in

384.639

where the company either pitches one

387.12

thing and delivers something else or

388.84

they totally read what the uh customer

391.319

wants and they build something

394.08

that doesn't meet the problem it's

396.599

something that's a total waste of

398.599

time yeah and I think that that that is

402.28

probably the the biggest problem

403.639

regardless is is that communication

405.8

thing that you get from the you know

407.28

that that tree swing uh and I think

409.68

there yeah I think there's also the

410.8

roller coaster example of that that are

413.16

totally it shows you the difference the

416.039

different things that are communicated

417.68

and how vision being translated into

420.52

reality can be uh not the same they can

423.4

be very very different uh the one I want

426.24

to talk about the example I've got is I

430.039

think probably that second one a little

431.479

bit these are it's a little bit that

433.039

they you a little bit of a budget kind

435.16

of thing but this is also something I've

437

seen quite a bit particularly for for

439.52

startups and small companies and I went

442.44

to this customer contacted me and the

445

initial issue was or initial request was

448.72

they had a uh system they had uh they've

452.68

been using it for a couple of years it

454.68

was critical it was like it was time

456.96

entry it was things like people get paid

459.319

based off of this and they invoiced off

461.24

of it I mean not directly but it was

462.8

like this was core data for their

465.599

business and it had been built by I

469.039

think he went to church with a guy or

471.039

was like a cub scout leader with him or

472.8

something like that and so it's somebody

473.919

he knew that was a developer and they're

476.12

like hey I can go do this and so it was

478.36

it was a side Hustle

480.52

developer this you know the the guy that

482.599

was doing it was just like hey I'm going

483.8

to I'm I can write some code on the side

486.12

I can give you a good deal we'll put

488

something together and so he went with

489.84

what he knew which happened to be uh it

493.639

was it was my SE was my SQL was on the

496.639

back end I want to make sure it may have

499.24

been squl server now I'm trying to

500.36

remember what the back end was

501.4

originally it may have been actually SQL

502.84

server on the back end U but then it was

505.319

also it was classic ASP on the front end

509.28

not asp.net classic ASP it was running

512.68

on a just a uh a Windows server with

516.919

just IIs and it was just basically like

520.64

there's your code and the way that was

522.279

his version control was Hey we back up

524.32

the server every so often so there was

525.88

no there's no Version Control there was

529

uh just something we've probably seen

530.68

quite a bit where the versions where it

533.72

would be like a page and they would have

535.24

a page with another number on it or it

536.959

would have a date on it or you be like

540.279

uh page uncore testing new thing you

543.079

know stuff like that where it's like you

544.48

look at the you look at the folder of

546.519

files and you're like oh wow you've just

548.64

been this is just a developer machine

550.72

and they're just basically developing on

552.56

the server

554.32

which not usually a good approach that

557.24

usually tends to be something that

558.48

causes a you know causes some

560.56

issues so coming into that I guess I'll

563.399

put you on the hot seat a little bit so

565.079

giving that little thing what would be

566.76

your maybe like how do you that or maybe

569.8

what would be your first recommendation

571.12

to a customer when you walk into that

572.68

kind of

574.88

situation well the first part I would

576.64

try not to laugh about the lack of

577.88

Version Control

580

but uh because from a developer

582.56

standpoint especially like as a

584.279

contractor or uh just a employee walking

589.12

into a situation like that is never

590.88

ideal right we don't want to see

593.92

software in such a state that it's not

596.36

maintainable uh so one of the first

598.519

questions would be is what from so I'm

602

going to take this a little bit from my

604.36

company's perspective from my QA

606.04

perspective so looking at from a

608.959

software with QA in mind the first

611.76

question I would be is okay who is the

613.88

customer you're serving what is this

615.36

application serving you know what is the

617.279

problem you're trying to solve and from

620

there I would basically Define the user

622.68

story Define the use case that you're

624.88

trying to solve with this software then

627.519

I would go to the end product and say

630.079

okay what is it that you are actually

632.44

providing are you meeting this use case

635

are you actually delivering something

636.92

that meets what your expect expectations

639.04

are at the beginning and then if you're

641

not then you slowly walk peel back the

643.48

onion and walk through the different

645.079

stages and find out okay what do you

646.88

have implemented what kind of

648.12

Technologies do you have you know what's

649.639

your stack and from there you look at is

653.839

uh well that would be the first thing

655.959

the second thing would be um what is

658.279

your budget

659.839

because if they come at me and say uh I

662.56

have no budget I have no money you know

665.279

this has to be start mentality this has

667

to be open source so the first thing I

668.839

would look at is are you using the right

671.88

Technologies you mentioned SQL Server

674.399

well uh my first comment there would be

676.68

why are you paying for licenses if you

678.639

can't afford it you know my SQL does

681.399

pretty much everything you need switch

683

over to something that's more open

685.639

source my SQL postgress something like

688.24

that uh in uh first of all

691.32

ASP core or you know um basic ASP really

696.16

has not been used in a while so that

698.24

would be another red flly because

700.16

finding developers to develop in that is

702.72

going to be very expensive so the next

704.76

thing you want to do is okay if you want

707.24

to keep it as a scripting language

708.839

javascript's pretty much the DEA facto

710.92

maybe go with JavaScript maybe PHP maybe

713.56

even python depending upon what it is

715.639

that you need to push out the door uh

717.88

and then kind of walk through the

719.16

Technologies there the other thing I

720.88

would definitely push would be get

722.8

Version Control in ASAP and then uh if

727.24

since they don't have Version Control

728.399

chances are they probably have little or

729.8

no QA in in process at all and I would

733.399

probably at least instantiate some

735.56

simple QA scripts out there to at least

737.959

test the core functionality make sure

739.68

that what the product is supposed to do

742

is at least doing that you may not have

743.88

negative test cases to test you know if

746.12

it's breaks but at least test the basics

748.68

to make sure it's going out the door

750.279

correctly since you don't have virsion

752.399

control because then you would at least

753.959

know that what's going out works and

756.44

then you can apply version control over

757.959

that to say okay this is a stable

759.8

version because if it doesn't work

762.36

you're not stable so you're you're going

764.12

to know right away okay this is

765.6

basically going back to an alpha

768.959

version yeah and that's it's interesting

771.48

because that's you know even from a QA

774.12

perspective if you if you flip that more

776.04

to just a pure development perspective

778.16

it's really the same thing uh I think

780.56

the key there is you start off you don't

783.56

come in and just like start ripping out

785.199

code and changing stuff there's some key

787.56

things you have to do is like get the

789.16

context of what's going on there is make

791

sure that you're clear on that and it's

792.72

the first thing really is sort of like

794.12

the the why why does this thing exist

796.32

who is it serving how what does

799.16

successful serving your customer look

801.839

like which sometimes and this goes back

803.76

to our our couple of the earlier points

806.079

sometimes a business hasn't really

807.8

thought through their process processes

809.44

completely and they can be many years

812.6

into business and still have uh gray

816.279

areas within their processes or things

818.079

that they don't really understand

819.36

because they've spread that out across a

822.32

couple of different uh employees or or

825.079

departments and there's not really

827.04

somebody that knows how it all plugs

829.04

together it's sort of like a bunch of

830.16

black boxes that are just tossing stuff

832.12

from box to box as opposed to somebody

834.32

being able to trace that all the way

837.079

through I think that's one of the key

839.16

things and that was one of the things I

840.399

talked to them about I said okay you got

841.92

this big sprawling thing it had oh like

845.8

I want to say it had like two dozen

847.32

maybe three dozen menu items and

848.8

basically you think each of those was a

850.279

page and some little like process to it

853

and we talked about it and and talked a

854.72

little bit about the budget it's like

855.72

okay well what do you what do you want

857.24

to do and I knew coming into it that he

858.8

had a limited budget it was one of these

860.079

things like this needs to be fixed in

863.079

you know I think it was like 10 to 20

864.519

hours of work something like that and he

867.639

had some key bus like the database every

870.68

so often was just rewriting like it

873.32

would do a mass update of the employee

875.399

table and like all their times would get

877.04

set to whoever the last one was that

878.639

saved it uh which was interesting enough

881.079

never could figure out how to reproduce

882.68

it it would happen periodically had logs

885.44

everything it like it was some feature

889

of that structure that was part of why

892.8

we went on to the the next project which

894.959

was basically we solved a couple things

896.399

there uh did a couple things to to get

899

some backups going and to basically just

901.92

develop just like Define a simple

905.16

deployment process of okay let's take

908.04

this code we're going to put it out into

910.32

GitHub I think is where I ended up

911.759

putting it or some git

913.6

repository and that's where we're going

916.32

to start doing our builds from instead

918.24

of putting everything on that server and

920.279

just writing code there we're going to

922.199

have access so if there's a developer

923.639

comes in they can always pull the code

925.24

down and they can push it back up and

927.639

then we have just a little it was just a

929.12

little simple ant script that was

930.519

essentially like just copy from point A

932.16

to point B once you downloaded

934.16

everything but then from there it would

936.319

very quickly he's like well hey you know

938.639

well what's what's really critical

940.519

because this is something that's been

942.519

built over a couple of years and now you

944.56

want to essentially the recommendation

947.12

was scrap it and start all over but that

950.519

may not be valid but it actually turned

952.639

out to me because he said well you know

953.759

what I really only need like this this

955.68

one function which was funny because it

957.92

was actually like 10 functions but he

959.88

was really like I just need employees to

962.16

be able to enter their time and I like

964.36

great that's like one page and we can do

967.68

that the conversation continued and it

970.12

was like oh well there's these lookup

972.839

values and there's these computation

974.279

values and so it's like that one page

976.04

turned into one or two pages well it was

979.04

one page for the user there's like 10

981.12

admin Pages behind it for the the

982.959

configuration data and I think that's

985

one of the things that you know I always

987.12

want to recommend to say

989.12

ask that extra question as far as like

991.36

and then what or is that all or how

994.959

about you know what happens in this case

997.8

because when you do that then you can

999.12

get those those details and then as

1003.399

you're as you're stepping in like this I

1005.319

think this is a a key point that you

1007.88

brought up as as well something we did

1009.6

is like try the best you can to leave it

1012.56

in better shape than you found it you

1014.639

know it's one of those it's like okay

1016.72

they don't have anything so at the very

1019.12

least you could get them some scripts

1021.36

that would be you I regardless of your

1023.639

skill level you could easily build a

1025.12

couple of scripts that are if you run

1026.959

this we'll copy the code from point A to

1028.839

point B so there's actually a production

1032

folder at least and a development folder

1034.64

that's separate and then also Version

1037.6

Control is so easy these days it's and

1040.52

it's so much easier to uh to share dat

1043.839

to share code out to track changes to

1047.4

not have 15 different copies of a file

1049.52

in there uh there's just so many there

1051.52

just so many benefits to that and it's

1053.96

so accessible uh if you don't have a

1056.679

GitHub account pause right here stop go

1059.76

sign up it takes like no time and people

1062.919

start it should be on your resume a lot

1064.72

of places now will request like can I

1066.88

get your GitHub you know ID or link to

1069.12

sort of see what you're even from you

1071.72

know if you do a lot of private stuff

1073.2

like what's your general activity and

1075.12

things like that um it gives you it's

1078.36

it's almost like having a LinkedIn page

1079.64

for developers is having that that

1081.679

GitHub thing and so that's what we did

1083.84

is it was it is it's like you go to the

1085.88

Y you figure out what the focus is and

1089.28

this is something I think from a a

1091

Consulting point of view and uh

1092.96

something we'll probably talk about in

1094.64

our in our next session

1096.84

here is how and it's also very uh

1101.159

indicative of the assessment audit type

1104.52

products that we've we're trying to

1106.52

build because that's what it was it was

1109.2

like just he was basically like tell me

1110.84

why this is broken I need this fixed can

1113

you do a couple of things to fix this

1115.08

piece because I know I've got this huge

1117.24

thing but I really want this one piece I

1120.28

just need it to work and so we did we

1122.72

extracted and I told them I said

1124.36

actually what I could do is you can

1125.4

leave all that other stuff there we

1128

built uh and I said you know what I can

1130

spin up a little python Jango app that's

1132.159

basically just going to point to the

1133.24

same database pull the data I've got

1135.48

like one or two forms and now it's like

1137.12

we're going to rewrite that page we're

1139.36

going to just pull that like none of the

1140.919

code that does that entry and that

1142.28

validation is there anymore we're going

1143.48

to rewrite the whole thing we're going

1145.039

to make sure that it's done in a manner

1146.84

that is much easier to maintain it's a

1149.44

current language in worst case you know

1152.76

if I had walked away it'd be like at

1154.4

least this

1155.76

key uh problem that he needs solved is

1158.84

in a modern language it's something that

1160.76

there's a lot of developers out there

1162.64

and it was in a you know set up in a

1164.72

case in a sense in a way that somebody

1167.2

could come in real quick

1168.76

and be like okay here it is here's the

1170.28

documentation here's how you run it

1171.6

here's how you get it here's how you

1172.84

launch it and you could you could swap

1175.799

developers in and out fairly

1177.799

easily so thoughts on thoughts on that

1180.84

because I know we had a good

1181.919

conversation before uh s Thor you're too

1184.84

sense at a couple of those

1186.679

things so I don't want to go too far

1189.159

down the rabbit hole on that one uh

1191.919

because that's a whole discussion in and

1193.36

of itself getting into the design

1195.799

process and building it because the uh

1198.679

one of the things in your case you had

1201.48

to get this fixed for them quickly right

1203.76

like they were in a bad State uh that's

1207.72

one of the things we'll probably discuss

1209.24

at a later point where there's the you

1212.799

know right now there's you know what can

1215

you do a little bit better and then the

1216.48

best way to do things but in this

1218.28

particular situation um the only thing I

1220.44

would uh like to add is by doing what

1225.2

you did you also set it up to a point

1228.52

where you could get them to a point of

1230.52

continuous integration where they could

1232.039

make a change copy like the development

1234.559

folder to P to roll it out the door so

1236.48

you actually started building some

1238.08

processes for them that it seemed that

1239.64

they didn't have at all and that's

1241.799

another thing that a lot of companies

1243.52

miss when they build software they don't

1246.44

think about the processes of developing

1250.039

the code testing the code deploying the

1251.919

code and maintaining the code um that

1254.799

whole software development life cycle

1256.84

kind of gets lost if you think about the

1259.24

agile environment if a company just says

1261.44

oh well we're agile we're just going to

1263.32

write code and deploy code without

1265.72

thinking through the process they get

1266.96

into trouble

1268.24

right yeah and I think that's a that is

1270.64

actually a very that's its own uh long

1274.24

conversation uh probably a religious

1276.24

conversation for some people is agile

1279.84

and how

1281.48

it what it does to the software

1283.76

development life cycle and technically

1286.159

if you really if you're paying attention

1287.64

and doing right agile does not change

1289.96

the software development life cycle

1291.4

you're still doing it you're doing it

1293

differently it's not like waterfall it's

1295.32

not as uh necessarily maybe distinct uh

1298.919

although I think there's still those

1300.24

distinct tasks still exist if you're

1303

doing it right like if you're if you're

1304.96

doing adinal and you're not doing

1306.4

requirements Gathering or design you're

1308.64

doing it wrong if you're not doing

1310.32

testing you're doing it wrong if you're

1311.72

not deploying it it's going to be

1313.08

obvious you're not doing it wrong

1314.12

because nobody's going to be able to use

1315.08

it it's like hey I I got all the way

1317.799

through why what what's wrong with this

1320.12

project oh well it's because you didn't

1321.4

get to the deployment phase and so

1323

nobody's actually able to access it

1325.159

which funny enough is you know that's

1326.919

one of the things that agile's like you

1328.84

know drawing points is we are going to

1332.44

deploy on a regular basis so you're

1334

going to have a useful deployment you

1336.559

know release at the end of effectively

1339.039

hopefully each Sprint is that you've got

1340.72

something that you can work with and I

1343.12

think that's that's something that I

1345.08

want to sort of as we're getting to this

1347.679

one is is there is a as you said sort

1351.36

like that rabbit hole I think we as

1352.72

developers often run into the problem

1354.6

that

1355.799

we especially as we get

1358.72

into you know once we've gotten past our

1360.919

first few years and now we we sort of

1362.52

we've done this before we've got some

1364.159

ideas we sort of are starting to settle

1365.84

into our ways of developing software

1369.039

that we feel we have like sort of our

1371.76

ideal and that we don't move off of that

1374.08

it's like well this is how it has to be

1375.52

done and that's not the case I mean

1378.64

ideally yes if we had unlimited funds

1381.799

and time then yeah there's all these

1383.6

things that we want to do but the

1386

challenge and I think what makes a

1387.679

successful consultant is being able to

1389.679

come in and meet the customer where

1391.12

they're at instead of saying you need

1394.159

this Enterprise grade

1396.84

solution it's saying okay you have a

1400.279

limited budget you have a limited time

1401.919

you have a couple of things that are on

1403.76

fire and need to be put out and so it's

1406

being able to come in and do that triage

1408.279

and do it in a way that is not just like

1411.08

slapping a Band-Aid on something but

1412.919

instead saying okay yes we have to slap

1415.24

a Band-Aid we have to stop the bleeding

1417.2

but let's try to do it in a way that is

1421

setting ourselves up for Success at some

1423.24

point now sometimes you're let me you

1424.72

just you're it's like you only have time

1427.2

to slap a Band-Aid on it move on it's

1428.84

like you can put out the one fire but

1430.48

you don't have time to do anything to

1431.84

like address the other fires but that's

1434.559

usually not the case usually if you take

1438.2

a second and instead of just panicking

1440.12

and going like oh we're just going to

1441.2

fix this bug which is probably how they

1443.559

got into that situation you think about

1445.84

a little bit you research a little bit

1447.4

like you said as you like explore that a

1449.4

little bit more like okay what what

1451.08

really you trying to do what really is

1453.88

going on here because sometimes then

1455.799

you're going to realize that now you're

1456.96

not just hitting your you're not just

1458.679

dealing with the effect you can actually

1460.279

go find the cause and either directly

1463.72

address that or at least put that on

1465.12

their road map to say hey this is why

1468.72

you're running into it uh which would be

1470.96

like a a perfect example would be people

1473.24

that don't do QA like hey if you keep

1475.36

having the same bug come up over and

1476.919

over again then maybe you should try

1479.08

like some testing of some sort maybe

1480.96

like a little regression test so that

1482.52

before it goes out to production you

1484.6

know that you broke it again or Version

1486.679

Control so you know that oh yeah we

1488.799

changed this section of code so we need

1490.88

to make sure that it actually works as

1493.159

opposed to throwing all your cat out

1495.159

there and go oh it's broken because it's

1497.799

broken is not a very useful way to debug

1499.799

stuff thoughts well and you know as

1502.679

developers and you mentioned this and

1504.679

this is something I think we you're

1508.039

probably going to hear us both say this

1509.48

a

1510.919

lot make sure you always leave the code

1513.72

in a better State than you started with

1516.52

don't half asset make sure you do a good

1519.96

enough you know make sure you do the job

1521.399

well enough if it's just putting out a

1523.2

fire if it's just fixing a little bug

1525.279

make sure the code is clean

1528.399

and concise and it's in a good place

1530.919

that you're not taking like 20-y old

1533.36

technology and still throwing in 20-y

1534.84

Old technology if you can do it with

1536.48

newer technology and do it right do it

1539.799

right yeah I think that that uh leave it

1543.159

better than you you found it is probably

1545.6

one of the most important things to do

1547.159

is it's a that's what particularly if

1550.039

you're going into a Consulting role if

1551.72

you can do that if you can come in and

1553.52

regardless of where you're at you know

1556.159

wherever you enter a prod project that

1558.52

you enter it and your

1560.72

work is an improvement on what was there

1563.48

at least as good as they had but usually

1565.12

if you can find a way improve it which

1566.399

is you know better documentation cleaner

1568.76

code better performing stuff whatever it

1571.24

is then that's going to help you as a

1575.279

professionally because then they're

1576.399

going to say Hey you know Michael came

1577.76

in and he did this work and it was so

1579.24

much better than the other stuff that we

1580.84

had uh it's also going to be more likely

1583.279

they're going to you know bring you back

1584.559

and say hey you did a great job on this

1586.36

we want you to work on that and that's

1588.279

sort of the moral of story The the happy

1590.799

ending we'll call of the project that I

1592.88

went into is it was originally think I

1595.96

said like it's like a five to 10 hour

1597.559

project at this point that was a I think

1601.24

now almost a year and a half ago that I

1603.12

first uh kind you know we first started

1605.679

working with them and it has turned

1609.72

into probably 250300 hours something

1613

like that that we've gone into it we've

1614.2

Rewritten the entire system we've added

1616.96

pieces to it it it is it's stable it

1619.32

actually from the customer point of view

1622.2

it is something that's probably I don't

1624.84

know I bet it's saved them easily you

1628.159

know tens of thousands I think probably

1630.44

you know hundreds of thousands of

1631.76

dollars because they were going to take

1633.559

that solution and replace it with

1635.6

something that was going to be much more

1637.039

expensive it was going to be much higher

1638.679

end it was going to be like a Salesforce

1640.12

or something along those lines but now

1643.679

they've realized that they can take that

1645.48

customized piece we cleaned it up we've

1648.039

really refined it over the last year and

1650.279

and helped them Define a couple of their

1652.2

processes but also added enough features

1654.6

that they're like no I don't think we

1656.039

really need that now we've got what we

1657.88

need and there are a few Integrations

1660.44

that they wouldn't you know they

1661.48

wouldn't mind having and they've

1662.919

actually a couple they would love to

1664.2

have that we can't because the provider

1666.2

the vendor doesn't allow integration but

1669.48

this is like a win-win win kind of thing

1671.36

is that we have come in we showed them

1673.559

and and the customer even said that was

1675.32

part of it he's like hey I want I want

1677.32

to if you can solve this little problem

1679.159

and if you can solve this little problem

1680.679

and I trust you then we're going to work

1682.159

on bigger problems and so we've built

1684.279

that trust we've built that relationship

1686.799

and now it's turned in a steady stream

1689.24

of work for us but also a steady stream

1692.2

of improvements for him and his

1694.559

organization and it's allowed us to have

1696.84

something that we've we've built and we

1699

are it really is at a point that we can

1700.64

walk away from it and we could just be

1702.44

like here you go here's all your pieces

1704.12

we've got a little bit of documentation

1705.519

left a little bit of handoff to their

1706.919

technology people but it's really to

1708.919

that point where it's like you guys can

1711.32

maintain it from here on if you want if

1713.039

you want us to add features we can do

1714.84

that and so it really is it's just like

1716.919

you it's one the things it's like good

1718.88

work is its own reward so I'll give you

1721.919

your the last two cents before we wrap

1723.88

this one

1725.24

up yeah one of the things and I like

1728.44

that you said that is not only Le the

1730.64

code in a good place make sure you leave

1733.76

with the customer in a good place make

1735.159

sure you have a good handoff make sure

1737

that you communicate what you did so if

1740.12

the customer does have to go out and

1742.32

find someone else to do the work they

1744.24

can hand it off to someone else cleanly

1746.399

so that they're not in a situation where

1749.44

oh uh you know this is another hot mess

1753.08

I need to come in and have this

1754.84

Rewritten you know if you're leaving it

1757.399

in a good place you should also leave

1759.08

the handoff in a good place and like you

1761.08

said Rob you know some additional

1762.72

documentation might be needed or maybe

1764.88

even just a quick uh little summary

1767.519

write up of what the work that was done

1770.12

and where it is and maybe a project

1772.96

structure excellent well said and we

1777.279

sort of run out of our time for this

1778.84

episode so I want to thank you guys for

1780.64

listening as always shoot us an email at

1782.48

info developer.com if you have any

1784.44

questions comments you can leave uh

1786.399

notes things up comments on the the site

1788.76

if you're on YouTube or you can also see

1791.039

leave them out on develop or or wherever

1793.64

if they allow comments wherever you are

1795.6

listening to podcasts feel free to do so

1798.2

always looking for more information and

1800

we're just here to serve you to help you

1801.279

guys become better developers that being

1803.519

said we're going to wrap this one up so

1805.159

go there and have yourself a great day a

1806.76

great week and we will talk to you next

1811.31

[Music]

1825.039

time