📺 Develpreneur YouTube Episode

Video + transcript

Solving Problems in Software Projects | Building Better Developers with AI

2025-06-12 •Youtube

Detailed Notes

In this episode of Building Better Developers with AI, Rob Broadhead and Michael Meloche explore one of the biggest traps in software development: solving the wrong problems.

Learn how to identify root causes, avoid quick fixes, and build solutions that actually matter. From MVP planning to AI-assisted insights, we’ll show you how to stop wasting time and start delivering real value in your software projects.

🔑 Key Topics Covered: • The illusion of progress in software development • MVP strategy: building what matters • Listening vs. assuming in client discovery • Band-aid fixes vs. systemic solutions • Premature optimization pitfalls • How AI can help developers solve smarter

📘 Mentioned: • Upstream by Dan Heath • Agile retrospectives and sprint backlogs

🎯 Whether you’re a solo dev or leading a product team, this episode will change the way you approach problem-solving.

Check it out: https://develpreneur.com/solving-problems-in-software-projects/

00:00 - Pre-show 02:45 - Podcast 06:10 - Bonus

Transcript Text
[Music]
Just to let you guys know, this is
actually a follow-up from the prior one.
I'm still sitting here. I'm still
working on eating. So, I'm sorry if this
is not going to be the best uh video.
But the important thing is Michael's
gonna sp talk a lot this time because
I'm going to be back munching my food
trying to get myself properly uh the
right amount of nutrients into my system
so I don't just keel over halfway
through the the podcast because
podcasting is so physically strenuous
like
that. This episode um I think I talked
about last time solving problems without
solving the problem.
This is gonna be another one that's
gonna be pretty fun. Looks like it loves
uh rule of 10. So, we've got another 10
items. We're gonna see how this goes. We
will talk about it. Oops. I got to
scroll back up
here and we're going to go three,
two, well, hello and welcome back. We
are continuing our season of developer,
building better developers with AI. Yes,
we're going to use AI this time because
everybody else is using it. No, we're
not going to send like, you know, killer
Terminator robots to your house, but we
are going to terminate all of your fears
about develop becoming a better
developer. Uh, this episode we're
actually going to throw out to AI what
would be a good way to talk about
solving problems without solving the
problem. We're going to see what
happens. But first, I want to introduce
myself. I am Rob Broadhead, one of the
founders of Developer, also a founder of
RB Consulting, where we work with our
customers to understand their business,
help craft a special recipe that's just
for them, their business, how they
specially work. This could be you. What
is your specific problem? I know you
know each industry's got its family of
problems, but each business has got its
own little niche, its own way of
approaching it. And that is required in
order to find the best solution of best
way to use your technology whether that
is through simplification, integration,
automation or innovation. How do you
take that big expensive investment that
you have and turn it into something that
is a real good return on investment?
That's what we do. We sit down with you
and help you figure out the best way
forward. Use a technology assessment and
then move into a road map so that you
can plot out your course and execute on
that. Good thing, bad thing. Uh, good
thing, bad thing. Boy, this has been
it's been a a week of that. So, good
thing. Finally got through uh more or
less. Uh, we close on a a house that has
been in the works for a while tomorrow.
So, we've gotten through lots of stuff.
There's been all kinds of things that
have gone on. This uh housing shift
journey kind of thing started months
ago.
We're not like moving moving into this
right away.
So, we are not done yet. We're going to
continue to move on and I'm sure have
some struggles, but at least we're
getting closer. So, I'm going to say
that's a good thing. A bad thing
is I hate to say it, but it's finally
starting to get hot out. It was like I
it's it's June and we've had great
weather and it's finally starting to get
hot enough that I'm like, "Ah, it's too
hot." It's like I have to turn the air
on and stuff like that. So that's the
bad thing. But a good thing for you guys
is now you get to listen to Michael
while he introduces
himself. Hey everyone, my name is
Michael Malashsh. I'm one of the
co-founders of Developer, building
better developers. I'm also the founder
of Envision QA where we are a software
company that essentially helps customers
helps businesses with their software
problems. It can be anything from custom
software. It can be from store-bought
software. But if you are struggling with
technology and your business to get your
make your customers happy or essentially
just getting through the day with your
technology working so you can get the
work done. Give us a call. We will walk
through the trenches with you to
understand all the problems and all your
processes within your company. and then
we will help devise a process and a
program to get you to the end of your
journey to improve all these caveats,
all these problems that you're having.
So either you will have a better
customer experience with your
application or you're just going to have
a better experience going into work.
You'll be happy to work in your
business, not hate working in your
business and just, you know, hey, let
someone else do it. Good thing. Good
thing this time. So bad things, you
know, weather's been bad, all that crap
all the last few episodes. We got our
lawnmower back that I broke couple weeks
ago. The weather's been warmer, as Rob
mentioned, but it's been comfortable
enough that we've actually been able to
sit outside, enjoy the weather, and my
wife got the little 10ft pool up and we
were able to jump in that. It was
actually not too cold. We were able to
get in that and enjoy that. And we were
actually able to get out to the
riverhouse and actually had decent
weather for a day, but we actually had
decent weather out at the river. So, we
are almost past this rainy season and it
is sunny skies for a while. Maybe warm,
but it's still sunny. It's not cold,
rainy, drabby, or snow.
Yeah, if you start hitting snow in June,
we're in trouble. This episode we are
diving into we're asking AI as we are in
each of these going back two seasons
back we're taking the topic and we're
asking AI about it. So this time the
topic is solving problems without
solving the problem. Now as always AI
loves us and thinks we're really smart
and nice. So it says it's a clever and
thoughtprovoking topic. Well let's see
how well AI was clever and
thoughtprovoking. So, first first
recommendation, the illusion of
progress. Just writing code doesn't mean
you're solving the real problem. Devs
often solve symptoms, not root causes.
Entrepreneurs sometimes launch features
that no one needs. Message progress
isn't about activity, it's about
accuracy. Oh my gosh, this is another
one that just like bam, right in the
kisser.
This is something we talk about way too
often about being productive versus
being busy. We talk about the why. This
goes back to what we talked about last
time, the why. Why are you doing this?
Features that nobody cares
about. Bells and whistles. It's about
doing stuff, adding features, building
functionality that helps people solve
the problem or problems better, faster.
Don't make them stick around. Now, if
you're, you know, if you're in the
marketing world and you want people to
stick on your site and stuff like that,
that's cool. Make it fun. But the
problem you're solving there is that
people want to go away from your site.
So, solve that problem
properly. Don't find ways to stumble
across that across that. I love that one
so much. I'm not going to talk the whole
episode, but I am going to go ahead and
toss it over to you because I know you
have things to say as well. Yeah. from
the marketing side. It's kind of like
handing out those uh $10 Starbucks cards
to get people to go look at your site,
not fixing the problem on your site.
It's like here, we'll pay you to come
look at our site, not actually fix the
site to make you stay or want to come to
us. Oh my god. I mean, it's that that's
probably the best example. It's like,
are you busy or are you getting stuff
done? Are you solving the problem at
hand? We've talked about this a lot.
We've actually talked about this on some
projects we've been on. It gets back to
what is the MVP? What is the end goal?
What is it that the customer needs to
complete the project? Now, if you get
the project done and you have time left,
that's when you add all the bells and
whistles. Do not add the bells and
whistles at the beginning. Get the MVP
done, then work on the extra features.
That is well before we go on I I have to
say that is so hard. We get into the the
heady times of starting a new project
and we have all these visions and all
this stuff we can do and it seems like
the world is our oyster and we can do
whatever we want and the reality smacks
us down and says no you don't have that
much time. You don't have that kind of
resources and all the other things that
are the constraints that can slow us
down.
So just find a way to like it's sort of
like balancing out that roller coaster
of you know all the excitement and we've
got all this energy and then you get
towards the end and it's like I just
want this project done it's a death
march and stuff like that. Finding ways
to balance that
out actually that is part of what I
think agile does the scrum approach in
particular but I don't want to get too
far into that. So, next one. I I'll
touch on that briefly though because
with agile though, the the cool part
with agile is this roller coaster Rob's
talking
about. You may have that like high
energy at the beginning. It's like, oh,
we got all these ideas. You get to a
certain point though when you're doing
the retrospective, throw things out
like, hey, did we complete enough of
this? Is there something we still need
to add? Because maybe one of those fun
features can be added now.
Well, we're still not at the MVP, but
because we're in that moment, is it
something that can be done now for less
time and money versus later?
Yeah, there's always that uh looking for
opportunities. You find an opportunity
to sneak something in. And it goes back
to the idea of having like a a backlog,
we'll call it, because that's what they
do in sprints, of ideas and features
that especially if it's a it's not a big
one, throw those things on the backlog.
And then if you've got a like a lull or
you get a little bonus time or something
like that, then go ahead and and
implement that into it. Diagnosing the
wrong problem. Here's a quote from
Einstein of all people. If I had an hour
to solve a problem, I'd spend 55 minutes
thinking about the problem. Dev off devs
often fix what's broken on the surface,
not what's causing the break. Encourage
asking what problem are we actually
solving for whom? Why? Now, this this is
a pet peeve I have with testers and QA
and users at times when it's like this
is broke. This doesn't work. Like, okay,
you've told me absolutely nothing. Give
me something I can work with. Uh the
best is when somebody will sit there and
there a lot of tools do this. They'll
sit there, they will walk through it and
say, "Here's what I did. Here's where I
got to. This is what I expected. This is
what I saw." That gives us a perfect
idea of this is what they expected. This
is what this should do and it's doing
something different. And that's the key.
And it's not just the it's doing
something different. This goes back to
what we've talked about. Coders are
going to just say, "Okay, I'm just going
to make it do something different." All
right? It's like for example, if your
logic doesn't, you know, when you enter
these three values in and your logic
doesn't give you the right answer, you
just hardcode it to say when those three
values come in, output the answer that
you know it's supposed to be. Doesn't
really help. It's sort of like showing
your work when you were in school. It's
great that you can come up with an
answer, but it's also not necessarily,
you know, going to be consistent enough.
So figure out what you're actually what
is the actual problem and go solve that
so you're not constantly having to play
whack-a-ole changing all of the things
to you know address the the symptoms and
not the actual problem. Thoughts on that
one? Yeah. So that's so there was a book
we went to uh GE uh global leadership
conference a couple years ago and um I
forget the guy I found the book uh yeah
Dan Heath was talking at the GLS and he
was talking about upstream solving
problems before they happen and that is
one of the
biggest keys to being a developer not a
coder. It is not just putting out the
fire but understanding what is causing
the fire. What is the overlaying problem
that needs to be fixed to fix the things
that are happening
downstream? And that whole idea once you
get into that mind shift where it's like
you start asking yourself well what is
the underlining cause? Why are we seeing
all these
problems? Once you start addressing,
okay, not fixing the problems, but where
is this coming from? Is this a systemic
problem with the software itself or is
this a systemic problem with
the foundation or the overall
um process of how we built the
application? Is there something in the
overall logic or uh code that
fundamentally is wrong that is causing
everything else downstream? If we go fix
this one thing, we suddenly free up 40
hours of bug fixes because the problem
is fixed, not fixing the symptoms.
Yeah. And that's
um again that's one of the areas that I
think is why software projects can can
really
uh have an appearance of being worse
than they are. Um because sometimes it's
a it's actually a very small bug. It's a
simple fix, but because it doesn't
actually get addressed, there's like
these
band-aids. The band-aids keep falling
off and now it looks like it's a it's a
complete train wreck when it's really
not that bad. So, it it will behoove
you. It will help you immensely. spend
that little bit extra time, diagnose a
problem, and try to fix it the first
time because I guarantee you all of my
customers I've dealt with over the
years, there is I don't think a single
one that says, "I would rather have it
fixed right away than to say, you know
what, give it the right amount of time,
think through it, verify it, and move
forward." It is way too frustrating for
all of us when we try to blow through a
solution and then end up having to come
back and, you know, correct the
solution. Basically, this throws right
in to the next one, which is band-aid
fixes and systemic sol versus systemic
solutions, which is the example of like
increasing timeouts instead of fixing
latency issues. Adding more features
instead of addressing poor onboarding.
Entrepreneurs often throw features at
churn when the root problem is unmet
expectations. I will I don't want to get
too far into this one could boy this
could go for days but I will mention
that this was specifically a project
that went off the rails very long ago.
I've talked about it before and the
whole idea was that the the guy that was
running the project basically they were
running out of money. They didn't have
the funding to finish it. And so he
figured out what he needed to do is just
get more money. And so what he did is he
said, "Well, there's all these features
we're going to add." and he thought it's
like, well, we'll just add all these
features and there'll be another bucket
of money, you know, a bag of money and
then we're going to be fine. Well, what
ended up happening is there all these
features and now there's all this other
stuff and they took time as well because
he didn't really think through it. They
took more time than he bid he, you know,
budgeted for and now he's in a deeper
hole than he was beforehand. So, you
know, look for the systemic side. This
is again the developer side of it versus
the coder side of it. This is a fun one.
Lack of context equals misguided
solutions. Without understanding the
user journey, business model or tech
limitations, devs can overengineer or
underdel. Real problem solving requires
full stack awareness, not just code. I
cannot preach enough on the this is why
we ask the questions. This is why we sit
down. We say, "Okay, well, what about
the requirement? What about this
situation? How about that? Tell me more
about The more you can get a
conversation out of your customer about
what they're doing, what they need, the
more you're going to have all kinds of
little hidden Easter eggs that come out
and like, "Oh yeah, there's this thing
that we do occasionally." Or, "Oh, yeah,
there's this report that we need." Or,
"Oh, yeah, there's this requirement that
we have that I forgot about that, you
know, or they won't even think about it.
They'll just be like, "Oh, well, we do
ABC, B, C, and D." And you're like,
"Whoa, whoa, whoa, whoa, whoa. I never
heard about this C thing before." for go
back to that C between B and D and let's
explore that. Spend some time really
getting to know the problem and the
users and what is it? You know, what are
you really solving? Not just like what's
the problem, but like how is that being
solved? What actually becomes a good
solution? Thoughts on that? It looks
like you have plenty. Oh yeah. Uh, so
the downside to this, if you don't take
the time to listen, if you take the time
to ask these questions, but you don't
take the time to listen to the
customer. I've done this. Almost any
business person has done this. It's
like, oh, I understand what you're
saying. Here's how I will solve it.
No. Sit down, talk through the problem,
make the customer do the talking. Avoid
yes or no questions.
encourage more exploration into what it
is you're discussing. As Rob said, you
could get into a situation where they
talk about A, B, and C, and you've never
even heard of C. Well, C could be the
critical lynch pin to hold the whole
thing together. If you miss that, you
could get to the very end and find out
that you do not have an MVP. You don't
even have a product that the customer
can use because you missed a core piece
of the application.
So, I've heard this in many business
things. I I've learned this through
experience. Sit down, encourage the
customer to talk through the problems,
prompt them when needed, and then shut
up.
The best part of
that, actually, the best part is then
shut up because that's I think what we
needed is don't don't start solving the
problem before you've heard the whole
problem. More importantly, do not
ask don't ask binary questions. Don't
say, you know, something that's a yes or
a no. I have I have gotten so many times
that I have had to I've tried to get it
to that where it's like just tell me can
this ever occur or can you ensure
guarantee that this situation never
happens? I don't know how many times
I've had a customer say, "Yes, that
situation will never ever ever occur in
our business." And then three weeks
later, they're like, "You've got to
cover this. This happens all the
time. That stuff just drives me nuts."
And that's why I've gotten away from it.
I'm just like, "Tell me how your work
your your stuff goes. Tell me about some
of these process. Let's talk about some
of your customers because then I'll
start getting real answers and not just
the like, okay, I'm going to answer this
question for them.
Moving on, the build trap. Building a
product or feature doesn't mean it's
solving a problem. Encourage
hypothesis-driven development, MVPs that
test assumptions, saying no or not yet
to features requests that don't align
with
goals. This
is really an interesting one because we
actually tend to fall on the other side
of this a little bit more. We've talked
more about the idea of where
you're you never get across the finish
line because you're trying to perfect
it. you're trying to add like this old
feature or this old tweak or what about
this and what about that. This is more
the we'll ship it and consider it done
and then at least now we're we've got
customers which you don't want customers
when you ship them crap because then
they're just going to wear you out. So
this
is just because we have a feature or we
have the
product doesn't mean it's actually doing
anything useful. So this goes back to
really context and things like that.
It's like, are you solving the right
problem? Are you solving in a way that's
actually useful to your users, or is it
just take them too long? Is it too
annoying and too other stuff for them to
actually make use of it? Thoughts on
that one? So, I'm going to just throw a
small thought out on this one. We see
this all the time. If you are dealing
with games as a service like Diablo,
Path of Exile, the game software gets
released, it's like, hey, it's done. But
then you have these seasons or these uh
things that go on over time and the game
from today versus 6 months from now it's
a totally different game. You basically
have been sold on hey we think the
software is good enough to sell it to
you but we're still going to work on
getting it to the end product at some
point. you know, not calling out a
Microsoft who uses its develop or its
users to be their testers because let's
face it, anytime a Microsoft operating
system comes out, it's really not done
or stable 6 to9 months till after it's
released. There are so many bug patches
next, you know, there there's just
problems with
software. Be careful with that. Make
sure that what you are delivering is a
solution, not something that you have to
constantly keep patching, delivering. If
you go back to the early days before the
internet, when you actually sold
software, the software had to go on
physical media, had to be shipped and
delivered, and that was it. That was
all. There was really no such thing as a
patch unless you actually had a customer
call you and you had to ship them floppy
discs. But in
today's environment, it is way too easy
to say it's good enough to ship and then
get stuck in cycles of actually
improving the product to get it to where
it really should have been when it
shipped. Now, this is I don't want to
say that's separate from an MVP. There's
a difference from having a minimally
viable product and selling it to your
customers and saying, "Hey, we are this
is version one. we we are solving this
problem and all we're going to do is
we're going to solve that problem and
solve it well because then what you're
doing is you're selling them on that
problem that solution you're saying
we're solving it cool and they're going
to say and it needs to that's the
minimal viable minimum viable product
part of it is to say it solves it it's
sufficient they are now happier people
than they were otherwise then you can
come out with version two and say all
right now we're going to find a better
way to you know to solve that problem
better way to skin that
hat, but that's not the same as we're
just going to throw it out there and you
know, minimum viable product is for your
users. It's not for you to just be like,
"Okay, we're done. We want to at least
get something out there and generate
revenue." And I know I know that is
difficult with uh when you're in a
public company or when you've got, you
know, customers breathing down your neck
or investors or things like that, it can
get difficult very quickly. Moving
on. Premature optimization example.
Spending days optimizing performance
when the product doesn't yet have users.
Solving future problems wastes time. Ask
is this a problem we're solving right
now? This I have had fights
about because and on some serious number
of occasions because it's yes that is
important. No, that is not important
right now. We are not there yet. If
you're sitting there worrying about the
colors and the font on your
application and you don't even have all
of the pages done yet, you don't even
have any of the key features done yet,
then you are you're cart before the
horse. You are not where you need to be.
That does not mean that you don't want
to think about those things. That does
not mean that you will not be
necessarily frustrated down the road
when you're like, gosh, it would have
been nice if we had known what all of
these pieces were, you know, what these
fonts and colors were before we built
all these screens. That could have made
it nicer, but the thing is is that you
didn't even know those screens were
going to exist back then. So, you
probably would have spent a lot of time
doing something that you really didn't
need to do. And that that is a really
big developer piece is understanding
when to actually execute on some of
these tasks because there's a lot of
stuff if you look at building
applications a lot of things that go on
in building software and there is
essentially a time and a place for each
of these and it's easy to get sort of
focused a little bit too much focused on
like well we need to do this thing right
now and not stepping back and going wait
a minute no we actually don't and this
goes back to something we've talked
about earlier is like spending too much
time up front and not spending enough
time towards the end. Now you're at the
end and you have all these things you
have to have but you wasted your time on
stuff that you don't actually have that
you don't need to have. It's like you
know it'd be one of those things where
it's like you're jettisoning things.
you're you're spending too many resource
too much of your money early on and now
when you have to actually buy like I
don't know food and clothing and and
somewhere to you know a house well you
already blew all your money out there
and yeah you've got like a nice toy or
something like that but you don't have
food and clothing. It's the same kind of
thing. It's just it's resource
management and it's making sure that you
make sure that you're doing the right
thing at the right time and not getting
caught in those little rabbit trails.
Your thoughts?
Yeah, we have both been in many, not us
all the time together, but we have all
been in situations
where you may be trying to solve a
problem and in the process of solving
the problem, you're trying to be a
little more forward thinking. For
instance, if you are like working with
databases or working with message cues,
you may come to a point where it's like,
well, we need to do load testing or we
need to make sure that we can handle the
load of these interactions, these
integrations, integrated systems we
have. There is a point within the life
cycle of an application that yes, it is
time to do that. At the beginning, no.
Until you actually have enough of the
systems in place where you can actually
see how it
works, it is not efficient at it. It's
not worth your time or resources to
spend the time testing that before you
get there because you might get there
and that integrated system may
completely change. You may find a
different solution. So especially in the
early stages of a project, especially if
you're like thinking, oh, we may look at
this or we want to use this or we tried
to use this. Don't get too involved in
the testing, the load testing
or feature set till you get to the point
that it is fully integrated within the
application. Yes, you want testing. Yes,
you want to make sure it works, but
don't go too far. Just make sure you got
the basics and move on.
I'll take this to another thing that's a
like an easy analogy or an easy
example is spending too much time on the
design of a page and the layout of the
the labels and the in the fields and
things like
that when you're, you know, when you're
early on when you're just putting that
thing up because there's a lot of times
that some of those fields will
disappear. Uh some of the labels will
change anyways. uh maybe that whole
screen or page will go away at some
point. There are a lot of things that
can happen where you end up and it's it
is a little bit of a crapshoot. There's
going to be times where you're like,
"Ah, it would have been nice if we had
spent more time on this early on." But
your goal is
to not waste your time on things that
end up not being part of it. You don't
want the stuff that ends up on the
cutting room floor to be stuff that you
spent a lot of time on. You don't want
to be like at the end of like you've
created this big movie and you spent 90%
of your budget on a she a scene that now
you were not even going to use, you
know, something like that. That's sort
of where you can go with some of these.
You can get way too lost in the the
weeds and not realize that some of these
things you don't really have a firm
enough it's not firm enough yet where
you're going to go to really spend that
time on it. Now, I I want to add on to
that though because there are some
benefits to some
pre-planning. So, at the be not in the
middle, but at the beginning of the
project, throw everything at the wall.
Literally, like any idea, get it out
there. Whiteboard, brainstorm as much as
you can, but then as Rob mentioned, get
it to the point where you whittle down
to what you need for the MVP and then
cut the fat. But try to spend enough
time at the beginning to maybe a day or
two, but have enough people talk about
the idea so that you cover as much as
you can to then cut it down to what you
actually need. Because if you don't do
that, you might literally miss a key
feature that you need that you get to
the end and you're like, "Oh crap, I now
need to build this really quickly or
we're not delivering."
And this goes to the I'll throw the
other ones out real quick and then do a
little wrap thought here as it wrap up.
So problem solving as an exploration not
execution. Uh when solutions create new
problems. We say that all the time.
Start with the outcome not the output
and redefining success. Now I've got a
couple items that we'll probably cover
in the bonus we do in the uh after the
the audio wraps up when we have the post
show video.
But the the thing that we sort of a
theme that has come through a lot of
these
is spending the right amount of time on
things is don't rush it. Don't jump in
and just be like, "Okay, I'm like
checking stuff off." That's really more
of a coder kind of thing to do.
Developers are going to say, "You know
what? This is not a science. This is
there's definitely an art to this." And
sometimes it takes a little time for
things to bake in, for the
right creative juices to start flowing,
things like that. So you spend your time
like take a step
back, give the tasks that you need to do
the the amount of time that they need to
get them done. Don't try to rush your
way through it. Don't try to cram, you
know, a square peg into a round hole.
Allow things to go the path they need
to. Yes, you're going to have to push
sometimes. Yes, there's going to be
stress. Yes, there's going to be times
you're going to like do more than you
want, you know, spend more time on
something than you want to,
but make sure that you're not often
spending less time than you needed to. I
think that is where we end up, you know,
kicking ourselves way too often for
doing so. Also, don't kick yourself for
not sending us an email. Shoot me an
email at [email protected] and let us
know your thoughts. What are what are
some of the things that you've run into?
You know, whether you listen to this a
couple seasons ago or whether you're
listening to it now and you're like,
"Oh, this AI thing really has got some
great ideas." I I should look back. It
probably has better ideas than we have.
Although, we are we are like lining up.
So, I'm feeling pretty good about
it. That being said, I'm not going to
poke you for any other stuff. You know
where to see us. You know where to leave
us feedback and all that goodness.
Whether it's at developer on YouTube
channel or podcast, wherever you get
podcast. Also, if you find it somewhere
that you get podcast and we're not
there, let us know. We want to make sure
we're there. As always, go out there and
have yourself a great day, a great week,
and we will talk to you next
time. Bonus material.
All right. So, go back through those
last three topics. Let's see. I think I
want to do the last one. So, problem
solving as an exploration, not
execution. Great developers and
entrepreneurs explore problems deeply
before attempting solutions. When
solutions create new problems, tech
debt, complexity, brittle systems, all
can stem from solutions that weren't
fully thought through. Gosh, I'm really
gonna want to come back to that. Start
with the outcome, not the output. What
result are we trying to achieve? Should
come before what are we building.
Oh, I like that one. Redefining success.
Success isn't just solving a problem.
It's solving the right problem in the
right way. Sometimes the best solution
is doing nothing. reframing the problem,
killing a feature, saying we don't need
to build this. That oh my god, the one I
want. This is something that goes back
to the heart of the RB consulting side
way back when I said sometimes, yes, we
build techn technical solutions.
Sometimes we talk to people and the best
solution is a pencil and a piece of
paper. Sometimes there are processes
that are so broken, it's like you need
to define your processes first. Uh
sometimes it is like I don't know how
often this there's been things where
it's like you know there's a feature
that gets added on and suddenly it slows
the whole thing down and it makes
everybody hate the application. It's
like just kill the feature sometimes.
It's like you know what the best thing
we can do with that is not take it on
because that's not our wheelhouse that
turns us into something we're not. And
there are so many products and
applications out there that did that.
They did something nice and then they
like, "Oh, we got to grow." And they add
some features and next thing they know,
they've grown into somewhere they don't
need to grow into. God, that last
statement you just said there. I mean,
that's literally how I went from Malash
Consulting to Envision QA because I was
literally solving problems for everybody
for
anything, which got me in trouble
because it's like, well, really, you
don't need that solution or and and at
the end of the day, you got to pay the
bills. So, you're going to do what the
customer wants. But unfortunately, in
the software world, this is kind of a
key difference between business and
software development.
The customer is always right until
they're wrong. Because in the software
development side, something they
want may not be the right solution for
what the problem is. You have to stand
your ground and tell them this is not a
good idea. This will break things. This
is wrong.
It is hard to do because as a business
owner, you want to please your customer
and unfortunately the please your
customer and the customer is always
right mindset leads to bad things. I it
it's not always right. Um you do need to
listen, you do need to support them and
you know make them happy, but at the end
of the day you want to make sure that
what you deliver is right, not something
that is just complacent and wrong.
That's the thing is a good if you're
building software you're essentially a
consultant of sorts. You are helping
people solve a problem and if they can't
properly contextualize the problem if
they're not addressing the problem right
if they don't see what the problem
actually is sometimes you're going to
have to step in a little bit and say
well no here's actually what you're
doing. Now that doesn't mean that you're
lecturing them or you're you know
telling them you know better because I
mean in some cases I guess it
technically yes it is but it's because
you're you're listening to their problem
you're understanding what it is and
you're saying oh you have you know you
being the customer maybe they have done
something that we have just listed you
shouldn't do things for example like
they started solving a problem before
they really thought through what the
problem is. So sometimes that's what we
need to do is be that like you know
that that voice that slows them down a
little bit and says wait a minute think
about this is that really the problem
you need to solve or is there's this
other thing that if we take that away or
we solve that problem then this other
problem goes away and so there is you
know definitely complexity and layers of
of those. I have a great example of
this. So, I had a friend slash um
acquaintance that I had years ago that
came to me because he knew I wrote
software and he wanted me to build him
this website and he wanted it to be full
ecommerce, all this stuff. And I kept
telling him, look, all you need is a
Spotify account, get some product, see
if people will buy your product before
you spend all invest all this time in a
solution. The problem was he was like,
"Nope, I want the solution and I will
get the product once I'm ready." He
spent so much time on the website on
what he wanted for infrastructure. He
had almost no money left when we got to
the end for the product. He had barely
anything left
for building what he wanted to for a
company. And I told him from the
beginning, it's like, dude, let's go the
cheap
route, the Tim Ferrris route. Like,
let's do AB. Let's throw up a website.
Let's just say, hey, will people buy
from you? Throw a couple t-shirts up.
Throw something up and see if it will
work. But he was out of money before he
got to that point. And I had been
telling him all along, stop. No, no, no.
I mean, I could have quit, but I had to
pay the bills, too. I mean it it's one
of those catch 22s where it's like you
do the best you can for your customer
but at the end of the day you are at the
service of your
customer. Yeah. You do what you can but
there's a point where and honestly there
are situations where that customer may
know better than us where we're like we
really think we know it and they're like
no we really know this really understand
this problem this industry or something
like that. And so you're like, "Okay,
I've given you my
thoughts. They, you know, are outweighed
by yours and yours opin your opinions."
And so sometimes you have to move on.
And I you don't have to. I guess you can
always say, like Michael said, you could
say, "Well, I'm not going to do it."
But that's usually not the best way.
Your better bet is say, "Okay, if you're
going to do this, then I'm going to do
my best to help you get to that
solution." because you already have in
your mind then
some warning flags or something like
that where you're like, "Well, here's
where things could go wrong." So, you
can help them maybe mitigate some of
those risks uh as part of being that
that steady adviser as you move
forward. That being said, it is time for
us to wrap this one up. Thank you so
much for your time, for hanging out, for
putting up with me as I've been trying
to like get some food in my system so I
don't starve to death. Luckily, I have
not. I'm still here. Lucky for me
anyways. maybe not for you. We will
return next episode. We are going to
continue moving through these AI
questions. This is pretty cool so far.
So, I think this is going to be a real
fun season. As always, go out there and
have yourself a great one. We will talk
to you next time.
[Music]
Transcript Segments
1.35

[Music]

27.519

Just to let you guys know, this is

29.439

actually a follow-up from the prior one.

31.359

I'm still sitting here. I'm still

32.8

working on eating. So, I'm sorry if this

34.719

is not going to be the best uh video.

37.04

But the important thing is Michael's

38.559

gonna sp talk a lot this time because

40.8

I'm going to be back munching my food

43.76

trying to get myself properly uh the

47.12

right amount of nutrients into my system

48.559

so I don't just keel over halfway

50.399

through the the podcast because

52.719

podcasting is so physically strenuous

55.92

like

56.76

that. This episode um I think I talked

60.399

about last time solving problems without

62.48

solving the problem.

64.799

This is gonna be another one that's

65.76

gonna be pretty fun. Looks like it loves

67.92

uh rule of 10. So, we've got another 10

70.64

items. We're gonna see how this goes. We

73.52

will talk about it. Oops. I got to

75.439

scroll back up

76.52

here and we're going to go three,

81.24

two, well, hello and welcome back. We

84.479

are continuing our season of developer,

87.04

building better developers with AI. Yes,

89.439

we're going to use AI this time because

91.04

everybody else is using it. No, we're

93.28

not going to send like, you know, killer

94.96

Terminator robots to your house, but we

98.32

are going to terminate all of your fears

100.4

about develop becoming a better

102.64

developer. Uh, this episode we're

104.4

actually going to throw out to AI what

106.799

would be a good way to talk about

108

solving problems without solving the

109.68

problem. We're going to see what

111.119

happens. But first, I want to introduce

113.04

myself. I am Rob Broadhead, one of the

115.28

founders of Developer, also a founder of

118

RB Consulting, where we work with our

121.04

customers to understand their business,

123.04

help craft a special recipe that's just

125.28

for them, their business, how they

127.36

specially work. This could be you. What

129.92

is your specific problem? I know you

131.84

know each industry's got its family of

134.16

problems, but each business has got its

136.319

own little niche, its own way of

137.76

approaching it. And that is required in

140.56

order to find the best solution of best

143.28

way to use your technology whether that

145.52

is through simplification, integration,

147.2

automation or innovation. How do you

149.64

take that big expensive investment that

152.64

you have and turn it into something that

154.64

is a real good return on investment?

157.519

That's what we do. We sit down with you

159.04

and help you figure out the best way

160.48

forward. Use a technology assessment and

162.72

then move into a road map so that you

164.879

can plot out your course and execute on

168.08

that. Good thing, bad thing. Uh, good

171.12

thing, bad thing. Boy, this has been

173.44

it's been a a week of that. So, good

176.36

thing. Finally got through uh more or

179.92

less. Uh, we close on a a house that has

182.8

been in the works for a while tomorrow.

185.36

So, we've gotten through lots of stuff.

187.68

There's been all kinds of things that

188.8

have gone on. This uh housing shift

191.84

journey kind of thing started months

194.879

ago.

196.4

We're not like moving moving into this

198.8

right away.

199.879

So, we are not done yet. We're going to

203.28

continue to move on and I'm sure have

205.599

some struggles, but at least we're

206.8

getting closer. So, I'm going to say

207.84

that's a good thing. A bad thing

211.72

is I hate to say it, but it's finally

214.08

starting to get hot out. It was like I

216.48

it's it's June and we've had great

220.08

weather and it's finally starting to get

221.76

hot enough that I'm like, "Ah, it's too

223.599

hot." It's like I have to turn the air

225.12

on and stuff like that. So that's the

228.56

bad thing. But a good thing for you guys

230.319

is now you get to listen to Michael

231.84

while he introduces

233.48

himself. Hey everyone, my name is

235.519

Michael Malashsh. I'm one of the

236.799

co-founders of Developer, building

238.64

better developers. I'm also the founder

240.56

of Envision QA where we are a software

244.48

company that essentially helps customers

248.239

helps businesses with their software

250.959

problems. It can be anything from custom

253.12

software. It can be from store-bought

255.36

software. But if you are struggling with

257.519

technology and your business to get your

259.919

make your customers happy or essentially

262.56

just getting through the day with your

264.479

technology working so you can get the

266.4

work done. Give us a call. We will walk

269.44

through the trenches with you to

270.96

understand all the problems and all your

273.199

processes within your company. and then

275.44

we will help devise a process and a

278.96

program to get you to the end of your

281.44

journey to improve all these caveats,

284.479

all these problems that you're having.

286.24

So either you will have a better

287.759

customer experience with your

289.28

application or you're just going to have

291.36

a better experience going into work.

293.28

You'll be happy to work in your

294.96

business, not hate working in your

297.12

business and just, you know, hey, let

299.68

someone else do it. Good thing. Good

302.16

thing this time. So bad things, you

305.68

know, weather's been bad, all that crap

307.52

all the last few episodes. We got our

310.32

lawnmower back that I broke couple weeks

313.639

ago. The weather's been warmer, as Rob

316.8

mentioned, but it's been comfortable

318.16

enough that we've actually been able to

319.52

sit outside, enjoy the weather, and my

321.68

wife got the little 10ft pool up and we

324.88

were able to jump in that. It was

326.32

actually not too cold. We were able to

328

get in that and enjoy that. And we were

329.84

actually able to get out to the

331.36

riverhouse and actually had decent

333.039

weather for a day, but we actually had

335.6

decent weather out at the river. So, we

337.68

are almost past this rainy season and it

340.4

is sunny skies for a while. Maybe warm,

342.88

but it's still sunny. It's not cold,

344.56

rainy, drabby, or snow.

348.4

Yeah, if you start hitting snow in June,

350

we're in trouble. This episode we are

352.8

diving into we're asking AI as we are in

355.44

each of these going back two seasons

357.199

back we're taking the topic and we're

358.56

asking AI about it. So this time the

361.36

topic is solving problems without

363.759

solving the problem. Now as always AI

366.08

loves us and thinks we're really smart

367.52

and nice. So it says it's a clever and

369.36

thoughtprovoking topic. Well let's see

372.72

how well AI was clever and

374.84

thoughtprovoking. So, first first

378.52

recommendation, the illusion of

380.68

progress. Just writing code doesn't mean

382.96

you're solving the real problem. Devs

384.72

often solve symptoms, not root causes.

388.08

Entrepreneurs sometimes launch features

389.919

that no one needs. Message progress

392.16

isn't about activity, it's about

393.639

accuracy. Oh my gosh, this is another

396.319

one that just like bam, right in the

398.479

kisser.

400.039

This is something we talk about way too

402.319

often about being productive versus

405.039

being busy. We talk about the why. This

407.6

goes back to what we talked about last

408.96

time, the why. Why are you doing this?

412

Features that nobody cares

414.44

about. Bells and whistles. It's about

417.44

doing stuff, adding features, building

420.72

functionality that helps people solve

423.28

the problem or problems better, faster.

426.639

Don't make them stick around. Now, if

428.4

you're, you know, if you're in the

429.919

marketing world and you want people to

431.44

stick on your site and stuff like that,

433.199

that's cool. Make it fun. But the

434.8

problem you're solving there is that

436.56

people want to go away from your site.

438.08

So, solve that problem

440.44

properly. Don't find ways to stumble

443.44

across that across that. I love that one

445.919

so much. I'm not going to talk the whole

447.36

episode, but I am going to go ahead and

448.72

toss it over to you because I know you

450.08

have things to say as well. Yeah. from

452.639

the marketing side. It's kind of like

454

handing out those uh $10 Starbucks cards

456.24

to get people to go look at your site,

457.68

not fixing the problem on your site.

459.36

It's like here, we'll pay you to come

460.72

look at our site, not actually fix the

462.88

site to make you stay or want to come to

465.72

us. Oh my god. I mean, it's that that's

468.479

probably the best example. It's like,

470.8

are you busy or are you getting stuff

474

done? Are you solving the problem at

476.44

hand? We've talked about this a lot.

479.44

We've actually talked about this on some

481.28

projects we've been on. It gets back to

483.599

what is the MVP? What is the end goal?

488.08

What is it that the customer needs to

490.24

complete the project? Now, if you get

491.919

the project done and you have time left,

494.72

that's when you add all the bells and

496.08

whistles. Do not add the bells and

497.84

whistles at the beginning. Get the MVP

500.24

done, then work on the extra features.

504

That is well before we go on I I have to

507.12

say that is so hard. We get into the the

512.88

heady times of starting a new project

514.8

and we have all these visions and all

516.32

this stuff we can do and it seems like

518.24

the world is our oyster and we can do

520.24

whatever we want and the reality smacks

523.839

us down and says no you don't have that

525.44

much time. You don't have that kind of

526.72

resources and all the other things that

528.32

are the constraints that can slow us

529.68

down.

531.32

So just find a way to like it's sort of

535.12

like balancing out that roller coaster

536.959

of you know all the excitement and we've

538.959

got all this energy and then you get

540.16

towards the end and it's like I just

541.44

want this project done it's a death

543.12

march and stuff like that. Finding ways

545.279

to balance that

547.16

out actually that is part of what I

549.519

think agile does the scrum approach in

551.64

particular but I don't want to get too

554.32

far into that. So, next one. I I'll

557.2

touch on that briefly though because

559.44

with agile though, the the cool part

561.36

with agile is this roller coaster Rob's

565.04

talking

565.8

about. You may have that like high

568.72

energy at the beginning. It's like, oh,

570

we got all these ideas. You get to a

571.76

certain point though when you're doing

573.2

the retrospective, throw things out

575.36

like, hey, did we complete enough of

577.92

this? Is there something we still need

579.76

to add? Because maybe one of those fun

581.6

features can be added now.

584.72

Well, we're still not at the MVP, but

586.399

because we're in that moment, is it

588.959

something that can be done now for less

591.519

time and money versus later?

595.279

Yeah, there's always that uh looking for

598.56

opportunities. You find an opportunity

600.32

to sneak something in. And it goes back

601.6

to the idea of having like a a backlog,

604.399

we'll call it, because that's what they

605.68

do in sprints, of ideas and features

608.32

that especially if it's a it's not a big

610.8

one, throw those things on the backlog.

612.959

And then if you've got a like a lull or

614.8

you get a little bonus time or something

616

like that, then go ahead and and

618.72

implement that into it. Diagnosing the

621.519

wrong problem. Here's a quote from

623.76

Einstein of all people. If I had an hour

626.16

to solve a problem, I'd spend 55 minutes

628.8

thinking about the problem. Dev off devs

631.92

often fix what's broken on the surface,

634.48

not what's causing the break. Encourage

636.8

asking what problem are we actually

638.8

solving for whom? Why? Now, this this is

643.12

a pet peeve I have with testers and QA

646.079

and users at times when it's like this

649.04

is broke. This doesn't work. Like, okay,

652.64

you've told me absolutely nothing. Give

655.279

me something I can work with. Uh the

657.519

best is when somebody will sit there and

659.519

there a lot of tools do this. They'll

661.279

sit there, they will walk through it and

662.399

say, "Here's what I did. Here's where I

664.48

got to. This is what I expected. This is

667.04

what I saw." That gives us a perfect

670.24

idea of this is what they expected. This

673.04

is what this should do and it's doing

675.92

something different. And that's the key.

678.8

And it's not just the it's doing

680.72

something different. This goes back to

682.24

what we've talked about. Coders are

683.36

going to just say, "Okay, I'm just going

684.399

to make it do something different." All

686.56

right? It's like for example, if your

688.72

logic doesn't, you know, when you enter

690.72

these three values in and your logic

692.56

doesn't give you the right answer, you

694.48

just hardcode it to say when those three

696.399

values come in, output the answer that

698.72

you know it's supposed to be. Doesn't

700.72

really help. It's sort of like showing

701.92

your work when you were in school. It's

704.32

great that you can come up with an

705.6

answer, but it's also not necessarily,

708.959

you know, going to be consistent enough.

711.24

So figure out what you're actually what

714

is the actual problem and go solve that

715.519

so you're not constantly having to play

717.72

whack-a-ole changing all of the things

719.76

to you know address the the symptoms and

722.959

not the actual problem. Thoughts on that

725.519

one? Yeah. So that's so there was a book

728.48

we went to uh GE uh global leadership

731.44

conference a couple years ago and um I

735.2

forget the guy I found the book uh yeah

738.8

Dan Heath was talking at the GLS and he

741.839

was talking about upstream solving

744.24

problems before they happen and that is

746.56

one of the

747.72

biggest keys to being a developer not a

752.24

coder. It is not just putting out the

755.04

fire but understanding what is causing

757.76

the fire. What is the overlaying problem

761.44

that needs to be fixed to fix the things

763.68

that are happening

765.24

downstream? And that whole idea once you

768.16

get into that mind shift where it's like

771.04

you start asking yourself well what is

773.2

the underlining cause? Why are we seeing

775.68

all these

778.12

problems? Once you start addressing,

780.959

okay, not fixing the problems, but where

784

is this coming from? Is this a systemic

786.16

problem with the software itself or is

788.72

this a systemic problem with

791.48

the foundation or the overall

795.6

um process of how we built the

797.44

application? Is there something in the

799.279

overall logic or uh code that

803.12

fundamentally is wrong that is causing

805.279

everything else downstream? If we go fix

807.04

this one thing, we suddenly free up 40

809.04

hours of bug fixes because the problem

811.04

is fixed, not fixing the symptoms.

815.04

Yeah. And that's

816.44

um again that's one of the areas that I

819.519

think is why software projects can can

822.959

really

824.88

uh have an appearance of being worse

826.88

than they are. Um because sometimes it's

829.2

a it's actually a very small bug. It's a

831.519

simple fix, but because it doesn't

834.24

actually get addressed, there's like

836.16

these

837

band-aids. The band-aids keep falling

839.199

off and now it looks like it's a it's a

840.88

complete train wreck when it's really

842.16

not that bad. So, it it will behoove

844.72

you. It will help you immensely. spend

847.04

that little bit extra time, diagnose a

849.04

problem, and try to fix it the first

850.399

time because I guarantee you all of my

853.44

customers I've dealt with over the

855

years, there is I don't think a single

857.36

one that says, "I would rather have it

858.72

fixed right away than to say, you know

860.8

what, give it the right amount of time,

863.199

think through it, verify it, and move

865.6

forward." It is way too frustrating for

867.68

all of us when we try to blow through a

870.199

solution and then end up having to come

872.959

back and, you know, correct the

874.639

solution. Basically, this throws right

877.199

in to the next one, which is band-aid

879.68

fixes and systemic sol versus systemic

882.079

solutions, which is the example of like

884.079

increasing timeouts instead of fixing

885.839

latency issues. Adding more features

887.92

instead of addressing poor onboarding.

890.56

Entrepreneurs often throw features at

892.32

churn when the root problem is unmet

894.8

expectations. I will I don't want to get

897.04

too far into this one could boy this

898.399

could go for days but I will mention

900.68

that this was specifically a project

903.279

that went off the rails very long ago.

905.36

I've talked about it before and the

907.44

whole idea was that the the guy that was

910.079

running the project basically they were

912.16

running out of money. They didn't have

914

the funding to finish it. And so he

916.56

figured out what he needed to do is just

918.56

get more money. And so what he did is he

920.16

said, "Well, there's all these features

921.44

we're going to add." and he thought it's

923.199

like, well, we'll just add all these

924.24

features and there'll be another bucket

925.36

of money, you know, a bag of money and

926.959

then we're going to be fine. Well, what

928.16

ended up happening is there all these

930.16

features and now there's all this other

931.6

stuff and they took time as well because

933.6

he didn't really think through it. They

935.04

took more time than he bid he, you know,

937.04

budgeted for and now he's in a deeper

940.32

hole than he was beforehand. So, you

943.36

know, look for the systemic side. This

945.199

is again the developer side of it versus

947.199

the coder side of it. This is a fun one.

950.56

Lack of context equals misguided

953.72

solutions. Without understanding the

955.759

user journey, business model or tech

957.519

limitations, devs can overengineer or

960.12

underdel. Real problem solving requires

962.639

full stack awareness, not just code. I

967.16

cannot preach enough on the this is why

971.279

we ask the questions. This is why we sit

972.959

down. We say, "Okay, well, what about

974.16

the requirement? What about this

975.6

situation? How about that? Tell me more

977.199

about The more you can get a

978.959

conversation out of your customer about

981.199

what they're doing, what they need, the

983.12

more you're going to have all kinds of

984.8

little hidden Easter eggs that come out

986.639

and like, "Oh yeah, there's this thing

988.72

that we do occasionally." Or, "Oh, yeah,

990.32

there's this report that we need." Or,

991.759

"Oh, yeah, there's this requirement that

993.68

we have that I forgot about that, you

996.32

know, or they won't even think about it.

997.839

They'll just be like, "Oh, well, we do

998.88

ABC, B, C, and D." And you're like,

999.839

"Whoa, whoa, whoa, whoa, whoa. I never

1002.079

heard about this C thing before." for go

1003.92

back to that C between B and D and let's

1006.639

explore that. Spend some time really

1010.48

getting to know the problem and the

1014.399

users and what is it? You know, what are

1017.44

you really solving? Not just like what's

1019.44

the problem, but like how is that being

1021.04

solved? What actually becomes a good

1024.4

solution? Thoughts on that? It looks

1026.24

like you have plenty. Oh yeah. Uh, so

1029.679

the downside to this, if you don't take

1032.72

the time to listen, if you take the time

1034.72

to ask these questions, but you don't

1036.319

take the time to listen to the

1040.12

customer. I've done this. Almost any

1043.36

business person has done this. It's

1044.799

like, oh, I understand what you're

1046.559

saying. Here's how I will solve it.

1049.799

No. Sit down, talk through the problem,

1052.88

make the customer do the talking. Avoid

1056

yes or no questions.

1058.16

encourage more exploration into what it

1062.48

is you're discussing. As Rob said, you

1065.12

could get into a situation where they

1066.559

talk about A, B, and C, and you've never

1068.559

even heard of C. Well, C could be the

1070.72

critical lynch pin to hold the whole

1073.44

thing together. If you miss that, you

1075.679

could get to the very end and find out

1077.28

that you do not have an MVP. You don't

1079.28

even have a product that the customer

1080.64

can use because you missed a core piece

1083.36

of the application.

1085.559

So, I've heard this in many business

1087.76

things. I I've learned this through

1089.799

experience. Sit down, encourage the

1092.559

customer to talk through the problems,

1094.32

prompt them when needed, and then shut

1096.24

up.

1099.2

The best part of

1100.52

that, actually, the best part is then

1102.64

shut up because that's I think what we

1104.24

needed is don't don't start solving the

1106.96

problem before you've heard the whole

1108.559

problem. More importantly, do not

1112.039

ask don't ask binary questions. Don't

1115.039

say, you know, something that's a yes or

1116.32

a no. I have I have gotten so many times

1120.799

that I have had to I've tried to get it

1122.64

to that where it's like just tell me can

1126.16

this ever occur or can you ensure

1128.72

guarantee that this situation never

1131.48

happens? I don't know how many times

1133.76

I've had a customer say, "Yes, that

1135.76

situation will never ever ever occur in

1138.32

our business." And then three weeks

1140.08

later, they're like, "You've got to

1141.84

cover this. This happens all the

1144.2

time. That stuff just drives me nuts."

1149.039

And that's why I've gotten away from it.

1150.48

I'm just like, "Tell me how your work

1152.72

your your stuff goes. Tell me about some

1154.32

of these process. Let's talk about some

1155.919

of your customers because then I'll

1157.84

start getting real answers and not just

1159.6

the like, okay, I'm going to answer this

1161.2

question for them.

1163.52

Moving on, the build trap. Building a

1165.84

product or feature doesn't mean it's

1167.6

solving a problem. Encourage

1169.16

hypothesis-driven development, MVPs that

1171.44

test assumptions, saying no or not yet

1174

to features requests that don't align

1176

with

1176.679

goals. This

1178.919

is really an interesting one because we

1181.52

actually tend to fall on the other side

1183.039

of this a little bit more. We've talked

1184.24

more about the idea of where

1185.799

you're you never get across the finish

1188.32

line because you're trying to perfect

1189.52

it. you're trying to add like this old

1190.64

feature or this old tweak or what about

1191.84

this and what about that. This is more

1195

the we'll ship it and consider it done

1198.799

and then at least now we're we've got

1200.32

customers which you don't want customers

1202.08

when you ship them crap because then

1203.52

they're just going to wear you out. So

1205.84

this

1207.08

is just because we have a feature or we

1210.08

have the

1211

product doesn't mean it's actually doing

1213.36

anything useful. So this goes back to

1216.08

really context and things like that.

1217.52

It's like, are you solving the right

1218.96

problem? Are you solving in a way that's

1220.88

actually useful to your users, or is it

1222.96

just take them too long? Is it too

1224.559

annoying and too other stuff for them to

1228.08

actually make use of it? Thoughts on

1230.08

that one? So, I'm going to just throw a

1232.799

small thought out on this one. We see

1235.12

this all the time. If you are dealing

1237.6

with games as a service like Diablo,

1239.76

Path of Exile, the game software gets

1242.24

released, it's like, hey, it's done. But

1244

then you have these seasons or these uh

1246.32

things that go on over time and the game

1249.28

from today versus 6 months from now it's

1251.76

a totally different game. You basically

1253.679

have been sold on hey we think the

1255.679

software is good enough to sell it to

1257.679

you but we're still going to work on

1259.52

getting it to the end product at some

1261.84

point. you know, not calling out a

1264.32

Microsoft who uses its develop or its

1267.6

users to be their testers because let's

1270.799

face it, anytime a Microsoft operating

1273.6

system comes out, it's really not done

1276.24

or stable 6 to9 months till after it's

1278.88

released. There are so many bug patches

1281.2

next, you know, there there's just

1282.96

problems with

1284.28

software. Be careful with that. Make

1286.559

sure that what you are delivering is a

1289.52

solution, not something that you have to

1291.679

constantly keep patching, delivering. If

1294.48

you go back to the early days before the

1296.48

internet, when you actually sold

1298.72

software, the software had to go on

1300.799

physical media, had to be shipped and

1302.88

delivered, and that was it. That was

1304.88

all. There was really no such thing as a

1306.88

patch unless you actually had a customer

1308.799

call you and you had to ship them floppy

1310.559

discs. But in

1313.4

today's environment, it is way too easy

1316.64

to say it's good enough to ship and then

1319.52

get stuck in cycles of actually

1321.36

improving the product to get it to where

1322.96

it really should have been when it

1324.159

shipped. Now, this is I don't want to

1327.12

say that's separate from an MVP. There's

1329.76

a difference from having a minimally

1331.28

viable product and selling it to your

1333.36

customers and saying, "Hey, we are this

1335.28

is version one. we we are solving this

1338.88

problem and all we're going to do is

1340.24

we're going to solve that problem and

1341.28

solve it well because then what you're

1343.2

doing is you're selling them on that

1344.72

problem that solution you're saying

1346.64

we're solving it cool and they're going

1348.64

to say and it needs to that's the

1350

minimal viable minimum viable product

1352.88

part of it is to say it solves it it's

1356.2

sufficient they are now happier people

1358.32

than they were otherwise then you can

1360.64

come out with version two and say all

1362

right now we're going to find a better

1363.44

way to you know to solve that problem

1365.36

better way to skin that

1366.76

hat, but that's not the same as we're

1369.679

just going to throw it out there and you

1371.52

know, minimum viable product is for your

1373.44

users. It's not for you to just be like,

1375.52

"Okay, we're done. We want to at least

1377.28

get something out there and generate

1379.039

revenue." And I know I know that is

1381.52

difficult with uh when you're in a

1384

public company or when you've got, you

1386

know, customers breathing down your neck

1387.44

or investors or things like that, it can

1389.6

get difficult very quickly. Moving

1392.919

on. Premature optimization example.

1396.32

Spending days optimizing performance

1398

when the product doesn't yet have users.

1400.32

Solving future problems wastes time. Ask

1403.76

is this a problem we're solving right

1405.6

now? This I have had fights

1409.72

about because and on some serious number

1414.159

of occasions because it's yes that is

1417.72

important. No, that is not important

1420.32

right now. We are not there yet. If

1422.4

you're sitting there worrying about the

1425.44

colors and the font on your

1428.28

application and you don't even have all

1430.559

of the pages done yet, you don't even

1432.559

have any of the key features done yet,

1434.24

then you are you're cart before the

1436.64

horse. You are not where you need to be.

1439.52

That does not mean that you don't want

1440.799

to think about those things. That does

1442.72

not mean that you will not be

1443.84

necessarily frustrated down the road

1445.6

when you're like, gosh, it would have

1447.28

been nice if we had known what all of

1449.919

these pieces were, you know, what these

1451.76

fonts and colors were before we built

1453.52

all these screens. That could have made

1455.039

it nicer, but the thing is is that you

1458.159

didn't even know those screens were

1459.2

going to exist back then. So, you

1460.96

probably would have spent a lot of time

1462.4

doing something that you really didn't

1463.84

need to do. And that that is a really

1467.2

big developer piece is understanding

1470.08

when to actually execute on some of

1472.559

these tasks because there's a lot of

1473.76

stuff if you look at building

1475.96

applications a lot of things that go on

1478.08

in building software and there is

1480.559

essentially a time and a place for each

1482.24

of these and it's easy to get sort of

1485.2

focused a little bit too much focused on

1487.36

like well we need to do this thing right

1489.039

now and not stepping back and going wait

1491.44

a minute no we actually don't and this

1494.159

goes back to something we've talked

1495.2

about earlier is like spending too much

1497.84

time up front and not spending enough

1500.08

time towards the end. Now you're at the

1501.36

end and you have all these things you

1502.799

have to have but you wasted your time on

1504.88

stuff that you don't actually have that

1507.279

you don't need to have. It's like you

1509.039

know it'd be one of those things where

1510.32

it's like you're jettisoning things.

1511.919

you're you're spending too many resource

1513.679

too much of your money early on and now

1515.76

when you have to actually buy like I

1517.2

don't know food and clothing and and

1518.799

somewhere to you know a house well you

1520.48

already blew all your money out there

1522

and yeah you've got like a nice toy or

1524.32

something like that but you don't have

1525.44

food and clothing. It's the same kind of

1528

thing. It's just it's resource

1529.44

management and it's making sure that you

1532.08

make sure that you're doing the right

1533.84

thing at the right time and not getting

1535.679

caught in those little rabbit trails.

1537.44

Your thoughts?

1539.799

Yeah, we have both been in many, not us

1543.679

all the time together, but we have all

1545.52

been in situations

1547.64

where you may be trying to solve a

1550.88

problem and in the process of solving

1553.039

the problem, you're trying to be a

1554.08

little more forward thinking. For

1555.76

instance, if you are like working with

1557.679

databases or working with message cues,

1560.08

you may come to a point where it's like,

1561.6

well, we need to do load testing or we

1563.84

need to make sure that we can handle the

1565.52

load of these interactions, these

1569.52

integrations, integrated systems we

1572.6

have. There is a point within the life

1575.919

cycle of an application that yes, it is

1578.64

time to do that. At the beginning, no.

1581.44

Until you actually have enough of the

1583.2

systems in place where you can actually

1585.12

see how it

1586.76

works, it is not efficient at it. It's

1590.88

not worth your time or resources to

1594.24

spend the time testing that before you

1595.84

get there because you might get there

1598.24

and that integrated system may

1600.799

completely change. You may find a

1602.24

different solution. So especially in the

1605.2

early stages of a project, especially if

1608

you're like thinking, oh, we may look at

1610.159

this or we want to use this or we tried

1612.159

to use this. Don't get too involved in

1615.36

the testing, the load testing

1617.32

or feature set till you get to the point

1620.559

that it is fully integrated within the

1622.48

application. Yes, you want testing. Yes,

1624.799

you want to make sure it works, but

1626.4

don't go too far. Just make sure you got

1628.08

the basics and move on.

1631.84

I'll take this to another thing that's a

1634.08

like an easy analogy or an easy

1637.4

example is spending too much time on the

1641.84

design of a page and the layout of the

1644.4

the labels and the in the fields and

1646.799

things like

1648.039

that when you're, you know, when you're

1650.4

early on when you're just putting that

1651.919

thing up because there's a lot of times

1654.72

that some of those fields will

1656.679

disappear. Uh some of the labels will

1658.88

change anyways. uh maybe that whole

1661.36

screen or page will go away at some

1664.52

point. There are a lot of things that

1666.48

can happen where you end up and it's it

1668.4

is a little bit of a crapshoot. There's

1669.84

going to be times where you're like,

1670.72

"Ah, it would have been nice if we had

1672.72

spent more time on this early on." But

1675.76

your goal is

1677.32

to not waste your time on things that

1679.919

end up not being part of it. You don't

1681.52

want the stuff that ends up on the

1682.72

cutting room floor to be stuff that you

1684.72

spent a lot of time on. You don't want

1686

to be like at the end of like you've

1687.44

created this big movie and you spent 90%

1690.799

of your budget on a she a scene that now

1693.44

you were not even going to use, you

1694.88

know, something like that. That's sort

1696

of where you can go with some of these.

1697.12

You can get way too lost in the the

1699.96

weeds and not realize that some of these

1702.48

things you don't really have a firm

1704.399

enough it's not firm enough yet where

1706.64

you're going to go to really spend that

1708.399

time on it. Now, I I want to add on to

1710.88

that though because there are some

1712.48

benefits to some

1714.679

pre-planning. So, at the be not in the

1717.84

middle, but at the beginning of the

1719.6

project, throw everything at the wall.

1721.76

Literally, like any idea, get it out

1724.24

there. Whiteboard, brainstorm as much as

1726.559

you can, but then as Rob mentioned, get

1730.559

it to the point where you whittle down

1732.559

to what you need for the MVP and then

1735.919

cut the fat. But try to spend enough

1739.6

time at the beginning to maybe a day or

1742.799

two, but have enough people talk about

1745.52

the idea so that you cover as much as

1747.679

you can to then cut it down to what you

1750.48

actually need. Because if you don't do

1752.799

that, you might literally miss a key

1755.44

feature that you need that you get to

1756.88

the end and you're like, "Oh crap, I now

1759.76

need to build this really quickly or

1761.84

we're not delivering."

1763.919

And this goes to the I'll throw the

1766.96

other ones out real quick and then do a

1768.32

little wrap thought here as it wrap up.

1770.24

So problem solving as an exploration not

1772.44

execution. Uh when solutions create new

1775.12

problems. We say that all the time.

1776.799

Start with the outcome not the output

1779.279

and redefining success. Now I've got a

1782.96

couple items that we'll probably cover

1784.159

in the bonus we do in the uh after the

1786.96

the audio wraps up when we have the post

1789.76

show video.

1791.76

But the the thing that we sort of a

1794.24

theme that has come through a lot of

1795.52

these

1796.919

is spending the right amount of time on

1800.159

things is don't rush it. Don't jump in

1803.039

and just be like, "Okay, I'm like

1804.24

checking stuff off." That's really more

1805.919

of a coder kind of thing to do.

1807.2

Developers are going to say, "You know

1808.24

what? This is not a science. This is

1811.2

there's definitely an art to this." And

1812.96

sometimes it takes a little time for

1814.64

things to bake in, for the

1817.399

right creative juices to start flowing,

1820.72

things like that. So you spend your time

1824.52

like take a step

1827.72

back, give the tasks that you need to do

1830.799

the the amount of time that they need to

1833.6

get them done. Don't try to rush your

1835.44

way through it. Don't try to cram, you

1837.12

know, a square peg into a round hole.

1839.36

Allow things to go the path they need

1841.6

to. Yes, you're going to have to push

1843.039

sometimes. Yes, there's going to be

1844.399

stress. Yes, there's going to be times

1845.76

you're going to like do more than you

1847.919

want, you know, spend more time on

1848.96

something than you want to,

1851.24

but make sure that you're not often

1854

spending less time than you needed to. I

1856.399

think that is where we end up, you know,

1858.32

kicking ourselves way too often for

1860.559

doing so. Also, don't kick yourself for

1863.919

not sending us an email. Shoot me an

1865.6

email at [email protected] and let us

1867.679

know your thoughts. What are what are

1869.12

some of the things that you've run into?

1870.32

You know, whether you listen to this a

1872.559

couple seasons ago or whether you're

1874.32

listening to it now and you're like,

1875.44

"Oh, this AI thing really has got some

1877.44

great ideas." I I should look back. It

1880.08

probably has better ideas than we have.

1881.52

Although, we are we are like lining up.

1883.679

So, I'm feeling pretty good about

1885.399

it. That being said, I'm not going to

1888.08

poke you for any other stuff. You know

1889.44

where to see us. You know where to leave

1891.279

us feedback and all that goodness.

1892.96

Whether it's at developer on YouTube

1895.6

channel or podcast, wherever you get

1897.679

podcast. Also, if you find it somewhere

1900.32

that you get podcast and we're not

1901.6

there, let us know. We want to make sure

1902.88

we're there. As always, go out there and

1905.519

have yourself a great day, a great week,

1907.6

and we will talk to you next

1910.279

time. Bonus material.

1914.24

All right. So, go back through those

1915.44

last three topics. Let's see. I think I

1917.919

want to do the last one. So, problem

1919.2

solving as an exploration, not

1920.799

execution. Great developers and

1922.32

entrepreneurs explore problems deeply

1924.24

before attempting solutions. When

1926.559

solutions create new problems, tech

1928.24

debt, complexity, brittle systems, all

1930.32

can stem from solutions that weren't

1932.48

fully thought through. Gosh, I'm really

1934.08

gonna want to come back to that. Start

1935.679

with the outcome, not the output. What

1937.519

result are we trying to achieve? Should

1939.279

come before what are we building.

1942.48

Oh, I like that one. Redefining success.

1944.96

Success isn't just solving a problem.

1947.12

It's solving the right problem in the

1949.12

right way. Sometimes the best solution

1951.44

is doing nothing. reframing the problem,

1954

killing a feature, saying we don't need

1955.919

to build this. That oh my god, the one I

1960.279

want. This is something that goes back

1962.88

to the heart of the RB consulting side

1965.679

way back when I said sometimes, yes, we

1968.159

build techn technical solutions.

1970.88

Sometimes we talk to people and the best

1972.64

solution is a pencil and a piece of

1974.799

paper. Sometimes there are processes

1976.64

that are so broken, it's like you need

1978.96

to define your processes first. Uh

1982.32

sometimes it is like I don't know how

1984.159

often this there's been things where

1985.6

it's like you know there's a feature

1987.679

that gets added on and suddenly it slows

1990.88

the whole thing down and it makes

1992.559

everybody hate the application. It's

1994.24

like just kill the feature sometimes.

1996.48

It's like you know what the best thing

1997.84

we can do with that is not take it on

2000.24

because that's not our wheelhouse that

2002.96

turns us into something we're not. And

2004.399

there are so many products and

2006.72

applications out there that did that.

2008.399

They did something nice and then they

2010.88

like, "Oh, we got to grow." And they add

2012.48

some features and next thing they know,

2013.679

they've grown into somewhere they don't

2015.2

need to grow into. God, that last

2018

statement you just said there. I mean,

2020

that's literally how I went from Malash

2022.32

Consulting to Envision QA because I was

2024.88

literally solving problems for everybody

2027.679

for

2028.76

anything, which got me in trouble

2031.12

because it's like, well, really, you

2032.72

don't need that solution or and and at

2035.44

the end of the day, you got to pay the

2036.72

bills. So, you're going to do what the

2038.24

customer wants. But unfortunately, in

2040.48

the software world, this is kind of a

2043.36

key difference between business and

2045.36

software development.

2046.96

The customer is always right until

2049.919

they're wrong. Because in the software

2052.159

development side, something they

2054.2

want may not be the right solution for

2057.2

what the problem is. You have to stand

2060.24

your ground and tell them this is not a

2065.04

good idea. This will break things. This

2067.839

is wrong.

2069.679

It is hard to do because as a business

2072.32

owner, you want to please your customer

2075.44

and unfortunately the please your

2078.159

customer and the customer is always

2079.28

right mindset leads to bad things. I it

2083.04

it's not always right. Um you do need to

2086.8

listen, you do need to support them and

2088.72

you know make them happy, but at the end

2090.72

of the day you want to make sure that

2092.56

what you deliver is right, not something

2095.76

that is just complacent and wrong.

2099.68

That's the thing is a good if you're

2101.76

building software you're essentially a

2103.52

consultant of sorts. You are helping

2105.92

people solve a problem and if they can't

2109.32

properly contextualize the problem if

2112

they're not addressing the problem right

2114.64

if they don't see what the problem

2116.079

actually is sometimes you're going to

2118.16

have to step in a little bit and say

2119.2

well no here's actually what you're

2120.88

doing. Now that doesn't mean that you're

2122.72

lecturing them or you're you know

2124.72

telling them you know better because I

2126.96

mean in some cases I guess it

2128.16

technically yes it is but it's because

2130.079

you're you're listening to their problem

2132.32

you're understanding what it is and

2133.839

you're saying oh you have you know you

2136.8

being the customer maybe they have done

2138.32

something that we have just listed you

2140.48

shouldn't do things for example like

2142

they started solving a problem before

2143.2

they really thought through what the

2144.48

problem is. So sometimes that's what we

2146.24

need to do is be that like you know

2149.079

that that voice that slows them down a

2152

little bit and says wait a minute think

2154.72

about this is that really the problem

2157.04

you need to solve or is there's this

2159.599

other thing that if we take that away or

2161.76

we solve that problem then this other

2163.599

problem goes away and so there is you

2165.76

know definitely complexity and layers of

2167.52

of those. I have a great example of

2169.68

this. So, I had a friend slash um

2174.079

acquaintance that I had years ago that

2175.92

came to me because he knew I wrote

2177.599

software and he wanted me to build him

2179.68

this website and he wanted it to be full

2182

ecommerce, all this stuff. And I kept

2184.24

telling him, look, all you need is a

2186.4

Spotify account, get some product, see

2189.359

if people will buy your product before

2191.119

you spend all invest all this time in a

2193.76

solution. The problem was he was like,

2196.4

"Nope, I want the solution and I will

2198.8

get the product once I'm ready." He

2201.359

spent so much time on the website on

2205.44

what he wanted for infrastructure. He

2208.16

had almost no money left when we got to

2210.56

the end for the product. He had barely

2213.76

anything left

2215.48

for building what he wanted to for a

2218.72

company. And I told him from the

2221.599

beginning, it's like, dude, let's go the

2224.32

cheap

2225.32

route, the Tim Ferrris route. Like,

2227.68

let's do AB. Let's throw up a website.

2229.52

Let's just say, hey, will people buy

2231.599

from you? Throw a couple t-shirts up.

2233.839

Throw something up and see if it will

2237

work. But he was out of money before he

2239.359

got to that point. And I had been

2241.839

telling him all along, stop. No, no, no.

2245.04

I mean, I could have quit, but I had to

2247.359

pay the bills, too. I mean it it's one

2249.119

of those catch 22s where it's like you

2253.04

do the best you can for your customer

2254.64

but at the end of the day you are at the

2257.2

service of your

2258.76

customer. Yeah. You do what you can but

2260.96

there's a point where and honestly there

2264.079

are situations where that customer may

2265.76

know better than us where we're like we

2267.2

really think we know it and they're like

2268.32

no we really know this really understand

2270.32

this problem this industry or something

2272.24

like that. And so you're like, "Okay,

2275.52

I've given you my

2276.839

thoughts. They, you know, are outweighed

2279.2

by yours and yours opin your opinions."

2280.8

And so sometimes you have to move on.

2282.24

And I you don't have to. I guess you can

2283.839

always say, like Michael said, you could

2285.119

say, "Well, I'm not going to do it."

2287.48

But that's usually not the best way.

2290.32

Your better bet is say, "Okay, if you're

2292.88

going to do this, then I'm going to do

2295.599

my best to help you get to that

2298.359

solution." because you already have in

2300.48

your mind then

2301.88

some warning flags or something like

2304.079

that where you're like, "Well, here's

2304.96

where things could go wrong." So, you

2306.16

can help them maybe mitigate some of

2307.68

those risks uh as part of being that

2310.72

that steady adviser as you move

2313.56

forward. That being said, it is time for

2316.48

us to wrap this one up. Thank you so

2319.2

much for your time, for hanging out, for

2320.72

putting up with me as I've been trying

2322

to like get some food in my system so I

2323.76

don't starve to death. Luckily, I have

2325.76

not. I'm still here. Lucky for me

2327.839

anyways. maybe not for you. We will

2330.24

return next episode. We are going to

2332.4

continue moving through these AI

2334.72

questions. This is pretty cool so far.

2336.8

So, I think this is going to be a real

2338.16

fun season. As always, go out there and

2340.56

have yourself a great one. We will talk

2342.72

to you next time.

2345.95

[Music]