📺 Develpreneur YouTube Episode

Video + transcript

Why SDLC?

2023-05-11 •Youtube

Detailed Notes

This is an overview from one of our SDLC/Agile classes (https://school.develpreneur.com/p/software_development_life_cycle).

You can find out more through our online classes at https://school.develpreneur.com and register for free. Registration will add you to our email list and you will periodically receive coupons for courses as well as notifications of the latest releases.

Transcript Text
thank you
[Music]
welcome back to building better
developers and one of the things that we
stress is the idea of strong
fundamentals
that you build on a foundation that is
solid that is one of the things that we
found as an issue with some boot camp
type approaches or books that you know
learn X whatever it happens to be learn
C sharp in 24 hours some of those kinds
of things they have their place and they
can be valuable depending on what your
background is but if you're going to
become something other than a coder if
you're going to become a developer
you need to understand the theory and
the reasoning behind why things are done
the way they are done you have to
understand how software is built and why
we build it and the way we do
and so that brings us to our focus in
this lesson we want to talk about sdlc
which is the software development life
cycle
now this is something that is very basic
to software development this is not some
you know new fangled buzzword thing sdlc
has been around for decades
we're pushing A Century of this being
around in some way form or fashion now
granted it wasn't really
formalized until all of you know it's
pretty new 50 60 years ago something
like that
but
it is a basis for a lot of what we do
and so I want to talk about why do you
need to know why is it useful even if
you can write code
for you to have a good solid
understanding of sdlc and what it is
now I want to step back a little bit and
talk about the definition of it because
sometimes it's one of those things that
we just sort of like software
development life cycle might as well be
blah blah blah blah blah we don't really
think about what it means
so sdlc is the best way you can I think
picture it in the real world or in a
physical creation of a product is an
assembly line
if you think of an assembly line for an
automobile
there will be depending on how they do
it but you know at some point there's
people putting together pieces for the
tires and there's somebody putting
together or you know teams of people
putting together pieces for the chassis
and the frame and the the body and then
even the internal stuff like the seats
and the steering wheel and the stereo
and all of those things are pieces that
are built with people that are
specialists in building that thing
because they do it or these days they
may be a robot that knows how to build
that thing to put it together
and then you go along the assembly line
and you start putting pieces on this
thing and when you get to the end
you have an automobile that you can
drive away
that is what sdlc attempts to model
and so there are these steps along the
way
and just to be clear and reiterate that
there's six steps that are part of this
DLC the first thing you do is you gather
requirements
then you design your solution and then
you implement it and then you test what
you built you deploy it you go put it in
front of users and then you maintain it
so you do you know bug fixes or updates
things like that
each of these steps is critical
to the entire process of sdlc
in this essential piece of it these
essential steps there are definitely
some things that we need to think about
that we need to understand that we need
to be comfortable with in order to be
good software Developers
so you may say I can write code I've
built little applications
why do I need to know this
well one of the things is that each step
is important
we can easily and this gets pointed out
over and over again if you read any
articles that are on or you know surveys
research done on why is software
often struggling to meet you know budget
and expectations and Beyond Time and why
can't why does quality continue to be a
problem why does software projects fail
at rates that are not low
yeah I think if everybody if software
projects failed at like a five percent
rate people would be jumping and
screaming and throwing parties in the
street there'd be parades and everything
it's not even close to that it varies
depending on who you're talking to but
it's typically more like 25 percent to
40 depending on the projects and things
like that
and when you look at the research on
those you often find that there were
steps that were skipped
or that were not done properly
a common one is gathering requirements
people just put together a couple things
sometimes a couple bullet points say
this is what we need to do
and then you get into design and then
that starts asking questions that point
to gaps or holes or complete blind spots
in the requirements
and then same thing as maybe design
isn't done as well and you get into or
both requirements and design aren't
doing very well you get into
implementation and there are questions
there are things there where it says hey
we can't build this because you haven't
specified it or you haven't told us how
it's supposed to be done you haven't
designed it or you didn't even you know
have a requirement that really addresses
this piece
and it happens all the time
so these are software fundamentals if
you are building software not writing
code you know if you're writing code you
can write code for you know a window or
whatever it is you don't really care
outside of your little function that
you're building for your code or your
functions you're building for code
if you're building an application if
you're building software if you're
putting these things together you're
doing more than writing code
and these are fundamental pieces to
doing it you need to have requirements
and design and Implement you need to
test it and then it's got to be deployed
and then maintain it
so what sdlc gives us
and a reason where it's useful for us to
even
if we are experienced developers go back
every so often and think about sdlc and
how we are building software
looking at that or with a specific
project even it helps you sort of assess
did you forget something is there
something when you looked at the time
and the resources spent on your project
is there something that's a gap or
something that looks like it just there
wasn't much there
for example let's say you get done with
your software and you're looking at all
the hours that were done on it and there
were let's say you know 10 000 hours
done on implementation
then you look at testing and there were
10 hours done on testing
that should jump out to you that maybe
you didn't either didn't track your
testing properly or you didn't test
properly now it could be that you did a
lot of testing and implementation and so
you you weren't able to properly address
those or account for those hours
but it may also be that you were just
code code code you were on a deadline so
it's just like
basically just a rubber stamp you know a
few hours of testing boom you're off and
running
that would be a gap or
if you're looking at all that time same
project that maybe you spent five hours
on requirements maybe that's part of the
reason it took you ten thousand hours of
implementation because you didn't spend
more time in requirements
maybe if you'd spent 50 hours in the
requirements you would down you know be
down to five thousand hours of
implementation
there's definitely a cost for finding
something out you know finding a bug or
a hole the further you get into the
process
now another thing sdlc gives you is a a
way it's a like I said it's like a
non-specific
way to build software so if you've got
an approach or a methodology that you're
using you can validate essentially your
methodology and you can even sort of
test the
value of your methodology by mapping it
back to sdlc
if you have an approach if you're using
methodology that doesn't design
that says no we're not going to worry
about design we're just going to go from
requirements right into implementation
you're probably going to struggle
and by probably I would bet a lot of
money that you will struggle that you
will have issues
because that means the designs got to be
done somewhere
if not then you're almost just like a
step above randomly writing code
so you want to make sure
that all of your steps in sdlc are
addressed in whatever the methodology is
that you use
now along those same lines is you can
use sdlc as a way to like troubleshoot
or improve your processes because you
can go look at those six steps just as
we've described here some of the
examples you look at those steps and say
am I giving it the proper I will say
respect am I giving the amount of time
am I putting the right kind of resources
on that step or to address that step
with an SLC
now I'm going to get too far into it
because we have classes we talk about it
there are situations where some
methodologies sort of combine some of
those things so maybe requirements and
design are done
more or less at the same time or like
for example if you use Rapid application
development it's really in a sense you
have requirements design and
implementation all sort of going on at
the same time
so you don't see maybe the separate
steps however if you step back and look
at what is done look at the activities
that are done
using that methodology you can see where
oh here they are doing the work of
requirements Gathering here they are
doing the work of design here they are
doing the work of implementation
so while they don't have to be separate
steps the work related to this step does
have to be there
and if you are struggling in building
software then maybe one of the things to
do is step back and go back to the
fundamentals
are you following sdlc principles
or are you shortcutting something
these are the kinds of things that are
useful for us to have to become better
Developers
otherwise as I've sort of mentioned you
know you're you're just writing code
there's a difference between generating
code and building software
and you need this fundamental you need
this strong Foundation to be able to
build software better you need to
understand the big picture otherwise
you're just writing code
thank you for your time
[Music]
thank you
Transcript Segments
10.58

thank you

18.88

[Music]

27.3

welcome back to building better

28.92

developers and one of the things that we

31.56

stress is the idea of strong

34.68

fundamentals

36.12

that you build on a foundation that is

39.3

solid that is one of the things that we

41.34

found as an issue with some boot camp

43.5

type approaches or books that you know

46.559

learn X whatever it happens to be learn

48.36

C sharp in 24 hours some of those kinds

50.76

of things they have their place and they

53.64

can be valuable depending on what your

55.86

background is but if you're going to

58.02

become something other than a coder if

60.12

you're going to become a developer

62.219

you need to understand the theory and

66.24

the reasoning behind why things are done

69.299

the way they are done you have to

71.76

understand how software is built and why

74.04

we build it and the way we do

76.68

and so that brings us to our focus in

79.38

this lesson we want to talk about sdlc

82.38

which is the software development life

84.299

cycle

85.2

now this is something that is very basic

88.14

to software development this is not some

91.619

you know new fangled buzzword thing sdlc

95.4

has been around for decades

98.28

we're pushing A Century of this being

101.28

around in some way form or fashion now

103.799

granted it wasn't really

106.04

formalized until all of you know it's

108.78

pretty new 50 60 years ago something

110.88

like that

112.32

but

113.579

it is a basis for a lot of what we do

116.82

and so I want to talk about why do you

118.86

need to know why is it useful even if

121.799

you can write code

123.6

for you to have a good solid

126.06

understanding of sdlc and what it is

129.899

now I want to step back a little bit and

131.52

talk about the definition of it because

133.68

sometimes it's one of those things that

135.3

we just sort of like software

137.099

development life cycle might as well be

138.72

blah blah blah blah blah we don't really

141.3

think about what it means

144.42

so sdlc is the best way you can I think

148.62

picture it in the real world or in a

151.5

physical creation of a product is an

154.379

assembly line

155.52

if you think of an assembly line for an

157.8

automobile

159.36

there will be depending on how they do

161.58

it but you know at some point there's

162.84

people putting together pieces for the

165.84

tires and there's somebody putting

167.94

together or you know teams of people

169.319

putting together pieces for the chassis

171.3

and the frame and the the body and then

174.239

even the internal stuff like the seats

176.879

and the steering wheel and the stereo

178.86

and all of those things are pieces that

183.48

are built with people that are

185.819

specialists in building that thing

187.98

because they do it or these days they

190.98

may be a robot that knows how to build

193.08

that thing to put it together

195.42

and then you go along the assembly line

197.76

and you start putting pieces on this

199.379

thing and when you get to the end

201.3

you have an automobile that you can

203.099

drive away

204.84

that is what sdlc attempts to model

210.36

and so there are these steps along the

212.879

way

213.659

and just to be clear and reiterate that

215.819

there's six steps that are part of this

217.5

DLC the first thing you do is you gather

220.56

requirements

222.06

then you design your solution and then

226.14

you implement it and then you test what

228.239

you built you deploy it you go put it in

230.58

front of users and then you maintain it

233.04

so you do you know bug fixes or updates

235.019

things like that

236.94

each of these steps is critical

241.56

to the entire process of sdlc

246

in this essential piece of it these

250.2

essential steps there are definitely

252.72

some things that we need to think about

254.159

that we need to understand that we need

256.139

to be comfortable with in order to be

258.6

good software Developers

261

so you may say I can write code I've

264.479

built little applications

266.4

why do I need to know this

269.52

well one of the things is that each step

272.46

is important

274.199

we can easily and this gets pointed out

277.68

over and over again if you read any

279.72

articles that are on or you know surveys

283.259

research done on why is software

286.699

often struggling to meet you know budget

289.74

and expectations and Beyond Time and why

292.62

can't why does quality continue to be a

294.479

problem why does software projects fail

296.36

at rates that are not low

299.639

yeah I think if everybody if software

302.04

projects failed at like a five percent

303.66

rate people would be jumping and

306.12

screaming and throwing parties in the

307.68

street there'd be parades and everything

308.88

it's not even close to that it varies

311.94

depending on who you're talking to but

313.56

it's typically more like 25 percent to

315.96

40 depending on the projects and things

319.139

like that

320.58

and when you look at the research on

322.56

those you often find that there were

325.02

steps that were skipped

326.84

or that were not done properly

330.9

a common one is gathering requirements

333.06

people just put together a couple things

335.16

sometimes a couple bullet points say

336.6

this is what we need to do

337.979

and then you get into design and then

339.66

that starts asking questions that point

341.58

to gaps or holes or complete blind spots

346.199

in the requirements

348.479

and then same thing as maybe design

350.52

isn't done as well and you get into or

353.22

both requirements and design aren't

355.02

doing very well you get into

355.919

implementation and there are questions

357.539

there are things there where it says hey

359.88

we can't build this because you haven't

362.1

specified it or you haven't told us how

364.8

it's supposed to be done you haven't

367.8

designed it or you didn't even you know

369.96

have a requirement that really addresses

372.199

this piece

374.52

and it happens all the time

377.52

so these are software fundamentals if

380.759

you are building software not writing

384.24

code you know if you're writing code you

386.1

can write code for you know a window or

387.9

whatever it is you don't really care

390.539

outside of your little function that

392.58

you're building for your code or your

394.139

functions you're building for code

396.24

if you're building an application if

398.1

you're building software if you're

400.08

putting these things together you're

402

doing more than writing code

405

and these are fundamental pieces to

408.06

doing it you need to have requirements

410.22

and design and Implement you need to

411.96

test it and then it's got to be deployed

413.759

and then maintain it

416.88

so what sdlc gives us

420

and a reason where it's useful for us to

422.28

even

423.479

if we are experienced developers go back

426.78

every so often and think about sdlc and

430.979

how we are building software

434.1

looking at that or with a specific

436.68

project even it helps you sort of assess

439.08

did you forget something is there

441.539

something when you looked at the time

444.599

and the resources spent on your project

446.039

is there something that's a gap or

447.9

something that looks like it just there

450.539

wasn't much there

451.919

for example let's say you get done with

454.139

your software and you're looking at all

456.06

the hours that were done on it and there

457.68

were let's say you know 10 000 hours

460.139

done on implementation

462.36

then you look at testing and there were

463.979

10 hours done on testing

467.34

that should jump out to you that maybe

470

you didn't either didn't track your

473.819

testing properly or you didn't test

476.039

properly now it could be that you did a

478.199

lot of testing and implementation and so

480.12

you you weren't able to properly address

482.28

those or account for those hours

484.62

but it may also be that you were just

486.9

code code code you were on a deadline so

489.599

it's just like

490.94

basically just a rubber stamp you know a

493.68

few hours of testing boom you're off and

495.18

running

496.56

that would be a gap or

499.56

if you're looking at all that time same

501.24

project that maybe you spent five hours

503.46

on requirements maybe that's part of the

505.5

reason it took you ten thousand hours of

507.479

implementation because you didn't spend

509.879

more time in requirements

512.399

maybe if you'd spent 50 hours in the

514.74

requirements you would down you know be

516.839

down to five thousand hours of

518.58

implementation

519.839

there's definitely a cost for finding

523.44

something out you know finding a bug or

525.839

a hole the further you get into the

528.48

process

530.279

now another thing sdlc gives you is a a

533.94

way it's a like I said it's like a

536.64

non-specific

539.279

way to build software so if you've got

542.519

an approach or a methodology that you're

546.12

using you can validate essentially your

549.779

methodology and you can even sort of

551.399

test the

553.019

value of your methodology by mapping it

555.959

back to sdlc

558.12

if you have an approach if you're using

560.519

methodology that doesn't design

562.92

that says no we're not going to worry

564.42

about design we're just going to go from

565.68

requirements right into implementation

567.72

you're probably going to struggle

570.12

and by probably I would bet a lot of

573.66

money that you will struggle that you

575.16

will have issues

576.899

because that means the designs got to be

579.779

done somewhere

581.58

if not then you're almost just like a

584.7

step above randomly writing code

588.24

so you want to make sure

590.76

that all of your steps in sdlc are

595.32

addressed in whatever the methodology is

597.48

that you use

599.399

now along those same lines is you can

601.5

use sdlc as a way to like troubleshoot

606.48

or improve your processes because you

609.12

can go look at those six steps just as

611.399

we've described here some of the

612.72

examples you look at those steps and say

614.66

am I giving it the proper I will say

618.6

respect am I giving the amount of time

620.58

am I putting the right kind of resources

623.12

on that step or to address that step

626.76

with an SLC

629.399

now I'm going to get too far into it

631.5

because we have classes we talk about it

633.12

there are situations where some

635.459

methodologies sort of combine some of

637.92

those things so maybe requirements and

639.36

design are done

640.98

more or less at the same time or like

643.5

for example if you use Rapid application

645.12

development it's really in a sense you

647.64

have requirements design and

649.5

implementation all sort of going on at

651.66

the same time

653.339

so you don't see maybe the separate

655.5

steps however if you step back and look

658.98

at what is done look at the activities

660.839

that are done

662.279

using that methodology you can see where

665.82

oh here they are doing the work of

669.3

requirements Gathering here they are

671.16

doing the work of design here they are

673.14

doing the work of implementation

675.66

so while they don't have to be separate

677.1

steps the work related to this step does

680.399

have to be there

682.019

and if you are struggling in building

684.839

software then maybe one of the things to

687.42

do is step back and go back to the

689.16

fundamentals

690.839

are you following sdlc principles

695.16

or are you shortcutting something

698.22

these are the kinds of things that are

701.1

useful for us to have to become better

704.279

Developers

706.92

otherwise as I've sort of mentioned you

709.5

know you're you're just writing code

711.24

there's a difference between generating

712.44

code and building software

714.36

and you need this fundamental you need

716.459

this strong Foundation to be able to

718.32

build software better you need to

720.899

understand the big picture otherwise

723.06

you're just writing code

724.92

thank you for your time

726.07

[Music]

741.019

thank you