►
From YouTube: How is software made?
Description
Jen and William talk about how software gets from an idea to a running application that and end-user logs into. Often referred to as the SDLC (Software Development Lifecycle) or "DevOps Lifecycle" this video discusses how an idea moves from gets planned and scoped with agile planning tools, code gets written and reviewed with source code management, the code is tested, packaged, and deployed in an automated fashion with CI/CD, then is monitored in a product environment.
Links discussed in the video:
Learn Git: https://www.codecademy.com/learn/learn-git
Empowering Non-developers to use Git: https://www.youtube.com/watch?v=pY5i0Io86UQ (video) https://gitlab.com/williamchia/git-merge-2018 (project)
B
A
We
were
talking
about
how
to
software
get
delivered
or
in
other
words,
what
is
the
software
development
lifecycle
when
somebody
has
an
idea
for
something?
What
are
all
the
steps
that
needs
to
go
through
in
order
to
build
and
deliver
that
software,
so
that
at
the
end
of
the
cycle,
you
get
a
finished
app
that
that
a
consumer
actually
logs
into
and
uses.
So
we
thought
we
would
recorded
the
discussion
and
hopefully
it's
helpful
for
you,
so
at
the
start
of
what
we
call
the
SDLC,
the
software
development
lifecycle
or
Eket
lab.
A
Sometimes
we
call
that
the
DevOps
lifecycle-
you
have
some
type
of
project
planning.
Very
often
we
call
this
agile,
agile
project
planning.
Sometimes
people
will
talk
about
portfolio
management
or
program
management,
but
in
a
nutshell,
you
are
having
some
type
of
system
where
you're
you
are
capturing
ideas,
prioritizing
them
and
planning
when
you
will
execute
them
so
in
gate
lab.
This
is
the
gate
lab
issues
component
of
our
product
and
I.
Wonder
if
I
can
even
share
my
screen
to
walk
through
a
particular
project.
A
I
don't
know
if
I
have
anything
running
live,
but
we
could
look,
for
example,
at
a
demo
I
made
at
one
point,
and
so
here
in
get
lab.
We
have
get
lab
issues,
and
this
is
our
agile
project
planning
part
of
our
software.
So
you
can
create
a
new
issue
and
this
might
be
an
idea,
like
you
know,
build
a
feature
to
let
people
log
in
with
Twitter
right.
So
this
might
be
some
kind
of
an
acacia
nish
ooh.
You
know
today.
A
Maybe
they
have
to
login
with
username
and
password,
but
I
want
to
be
able
to
let
them
log
in
with
social
credentials,
and
so
I
would
create
an
issue.
I
could
add
details
here,
I
could
add
a
milestone
or
a
assignees
and
I
can
have
some
commentary.
So
you
and
I
could
discussion
about
this.
I
could
I
could
tag
you
potentially
JL.
A
Parker
and
I'm
even
wondering
if
I
even
made
this
project
public
or
not
all
I
say,
is
here's
where
you
could
do
collaboration.
You
could
make
this
issue
part
of
an
epic
and
an
epic
allows
you
to
track
a
longer
set
of
customer
stories
or
longer
set
of
projects,
and
then
you
would
prioritize
these.
So
you
would
you
would
look
at
where
these
issues
in
relation
to
each
other,
which
ones
we
want
to
work
on
for
this
milestone
and
map
those
out.
So
that's
the
project
planning
part.
A
A
Unfortunately,
it's
just
slipping
my
mind
what
the
name
of
the
project
is,
but
if
I
look
at
some
of
the
epochs
here,
we
might
be
able
to
get
a
so.
This
is,
you
know,
improved
speed
of
CF
pipeline
execution.
Is
you
know,
potentially
an
epoch
and
there's
some
planning
in
here
and
there's
various
issues
assigned
to
this.
It
looks
like
most
of
these
are
on
the
the
faq
logs
that
have
various
milestones.
A
In
fact,
so
you
know
this
is
the
project
planning
and
then
you
have
an
issue,
so
I
just
went
from
an
epoch
to
one
of
the
issues
in
that
epoch.
This
is
where
it
kind
of
defined
like
what
do
we
want
to
build
for
this
particular
feature,
and
then
we
want
to
start
work
on
this
and
in
order
to
start
work
on
this,
we're
going
to
create
a
merge
request,
and
so
here
is
a
merge
request
that
is
going
to
be
code.
B
A
A
You
know
Verizon
Connect,
they
use
gait
lab
issues
to
do
that
planning
and
then
they
would
create
a
merger
quest,
and
it
would
look
something
just
like
this,
where
they
would
say
this
is
the
code
I
want
to
make
in
the
merger
quest
and
then
they
would
actually,
you
know,
write
write.
Some
software
or
I
should
say,
write
the
actual
code
and
they
would
create
a
git
branch.
They
would
write
code
on
that
branch
and
then
they
would
make
a
request
to
merge
that
branch
into
their
master
production
or
trunk
branch.
A
So
here
is
the
actual
code
that
was
written
I.
You
can
see
us
a
part
of
this
merge
request
and
then,
once
you
write
the
code,
then
you
go
through
a
process
called
code
review.
This
is
part
of
source
code
management.
Where
different
folks
might
you
know
Camille
makes
a
comment
here
like
do
we
have
a
unit
test
for
that
and
is
resolved
by
Liz,
probably
because
there
is
unit
tests.
So
this
is
where
other
folks
can
go
in
and
review
the
code,
and
you
can
have
to
some
discussion
on.
A
Is
this
code
ready
to
ship?
In
addition
to
that
review,
you
also
have
some
automated
testing
that
happens
and
that's
what
we
call
C
ICD
yeah
appears
the
pipeline
and
there's
a
series
of
jobs
that
run
that
will
that
will
implement
tests,
unit
tests
and
functional
tests
on
this
code-
and
you
know
some
linting
and
things
like
that
and
in
this
case
I,
don't
think
we're
doing
any
type
of
what
we
call
continuous
delivery.
I
think
in
this
case
the
the
pipeline
is
just
testing
the
code.
A
C
A
Once
you've
once
you've
merged
the
code
into
your
master
branch,
then
you
need,
you
usually
need
to
do
something
like
create
a
release
or
in
the
case
of
continuous
delivery.
You're
just
continuously
deploying
whatever's
in
master,
it's
kind
of
two
ways
to
do
it.
If
you
create
a
release,
you
have
something:
that's
usually
called
a
build
artifact
or
a
deployment
artifact,
and
that
means
it
takes
that
code
and
it
packages
it
into
something
that
you
can
install
on
a
server.
A
This,
you
know,
might
be
like
a
dot
exe
file
if
it's
a
Windows
Server
or
it
might
be
something
like
a
dot
jar
file.
If
it's
a
if
it's
a
java
application,
these
kinds
of
things
it
packages
it
into
some
type
of
binary,
artifact
that
you
can
deploy
and
then
in
the
release
process,
you
would
take
that
artifact
and
actually
deploy
it
on
to
a
server
now.
Git
lab
can
actually
do
this
as
well
get
lab.
C
A
That
could
be
a
container
running
on
the
server
that
could
be
a
virtual
machine
running
on
a
server
or
can
literally
be
the
application.
That's
physically
installed
on
the
server
and
you're
accessing
it
over
a
you
know,
over
a
website,
the
other
type
of
build
artifact
might
be
something
like
if
you
have
a
mobile
application,
your
your
build
artifact
might
be
like
the
app
itself
deployed
as
either
like
an
iOS
or
an
Android
app,
and
then
part
of
that
deployment
process
would
be.
You
know,
uploading
or
sending
that
app
to
the
App
Store
right.
A
So
if
it's
like
a
mobile
app,
you
would
write
the
code.
You
merge
the
code.
You
package
it
up
into
like
an
iOS
application
that
you
then
send
to
the
App
Store
as
the
latest
version,
and
you
could
either
download
it
from
the
App
Store
or
you
know,
send
folks
a
notification
to
update
to
the
latest
version
or
if
you
do
auto,
updates
that
kind
of
a
thing
and.
A
It
usually
mobile
apps,
especially
and
web
apps,
usually
have
like
a
front-end
part
in
a
back-end
where
the
front
end
part.
Is
that
app?
That's
actually
on
your
phone,
but
as
you're
interacting
with
that
phone?
It's
usually
communicating
with
like
Web
Services
on
the
internet.
So
your
your
account
data
is
all
stored
on
some
server
in
the
cloud.
So
you
you
you,
some
party
or
deployment
might
be
deploying
the
new
mobile
app,
but
part
of
your
deployment
might
just
be
updating
the
server.
You
know
with
new
functionality
on
the
backend
process,.
C
A
So
that's
the
that's
where
you
go
through,
see
ICD,
you
know
packaging
and
deployment
and
then,
finally,
when
that
application
is,
is
running
in
production,
you
want
to
do
some
type
of
monitoring
you
want
to
know.
Like
is
my
application
up.
Is
it
performing
well,
as
requests
are
hitting
my
application?
Is
it
actually
responding
or
is
it?
Is
it
down?
A
And
that's
the
monitoring
component
and
get
lab
also
does
some
of
that
as
well.
It
uses
a
tool
called
Prometheus,
which
is
an
open-source
project.
We
have
an
integration
with
Prometheus
that
does
some
monitoring
I
realized
I'm,
just
showing
the
merge
request
here.
I'll
just
stop
sharing
for
a
moment,
that's
kind
of
like,
as
you
get
to
the
end,
we'll
be
monitoring
your
application.
It
can
send
you
alerts
like
this.
Application
is
getting
a
lot
of
500
errors.
That
means
the
server
is
not
responding.
A
So
then
you
get
alerted,
and
you
say:
ok
I
need
to
go
and
fix
that
and
do
some.
They
call
it
an
incident
when
there's
something
wrong
with
your
application,
and
so
incident
management
would
be
triaging
finding
out
what's
wrong
and
fixing
it
and
get
lab
also
has
some
capabilities
for
that.
So
that's
that's
kind
of
like
across
the
whole.
That's
how
software
gets
made
from
the
start.
Hey
I
have
an
idea.
Project
planet
do
the
source
code
management
code
review
continuously,
integration
can
use
delivery
and
monitoring.
A
C
A
That's
a
great
question,
so
usually
the
way
I
should
say
the
way
software
development
was
done
for
a
long
time
is.
You
would
have
different
environments
where
you
deployed
your
application.
So
remember
when
you
package
it
up
your
artifacts
and
deploy
it.
You
wouldn't
just
do
it
once
and
deploy
straight
to
production.
There
could
be
something
wrong,
so
you
tend
to
have
a
lot
of
organizations
have
three
environments,
dev
stage
and
prod.
A
The
development
environment
is
a
set
of
running
servers
or
some
property
in
the
cloud
that
your
developers
can
deploy
into
while
they're
working
right.
So
they
can
kind
of
see
what
their
code
looks
like
and
only
they
have
access
to
it.
It
tends
to
be
a
messy
place
because
its
development,
a
lot
of
different
people,
can
change
that
environment
right
then
there's
something
called
a
staging
environment
and
the
goal
of
staging
is
to
be
as
close
as
possible
to
production
so
that
you
deploy
in
a
staging.
A
C
A
Get
lab
has
this
feature
that
we
call
review
apps
so
essentially,
a
review
app
is
a
staging
environment
for
every
single
branch.
So
when
you
create
a
merge
request,
you
have
a
branch
that
you're
requesting
to
merge
that
branch
back
into
master
and
get
lab
can
especially
go
to
kubernetes
and
say
spin
up
a
container
to
run
just
this
code
change
as
an
environment
and
then
surface
it
via
a
web
interface.
A
So
here's
a
URL
where
you
can
access
this
environment
and
that's
called
a
review
app
where
you
can
see
just
that
change
and
basically
like
a
real
staging
environment.
This
allows
you
to
do
things
like
user
acceptance.
Testing,
which
is
saying
like
does
to
ask
behave
the
way
I
expected
it
to.
You
would
normally
do
that
in
staging,
but
you
can
do
it
on
get
lab
on
every
single
change
in
a
review
act.
Okay,.
C
A
You
could
have
like
many
many
many
projects
that
all
build
together
to
be
one
application.
We
call
that
micro
services
and
get
lab
has
some
special
features,
such
as
cross
project
pipelines.
This
is
a
one
pipeline
that
runs
an
deploy
something,
but
it
works
across
many
projects.
So
you
can
use
that
with
microservices.
In
my
case,
I,
don't
think
I
have
any
micro-services
app
I
have
like
a
demo,
a
demo
app
here
for
like
Auto
DevOps.
So
this
was
just
literally
the
stock
Auto
DevOps
Ruby
application
and
then
I
think
I
connected
a
kubernetes
cluster.
A
B
A
C
A
C
A
This
is
I
used.
A
project
called
reveal
that
yes,
I,
think,
and
this
is
a
JavaScript
that
lets
you
build,
slides
in
JavaScript
and
then
I'm
serving
them
using
something
called
gitlab
pages
right,
said:
I'm
using
Eli
pages
to
serve
this
content.
So
this
is
my
slide
deck
from
that
talk
and
I,
rather
than
building
a
slide
deck
in
like
PowerPoint
or
Google,
slides
I
built
it
in
code
using
this
framework
that.
A
It's
you
can
think
of
it
as
a
it's,
a
template
of
sorts,
but
it's
a
I'm
trying
to
think
of
which
I
think
this
file
so
essentially
the
way
that
this
framework
works.
Is
you
create
a
markdown
file,
and
so
here's
my
markdown
file-
and
this
is
it-
makes
slides
out
of
that
Oh
neat.
B
A
A
I
put
resources
from
the
talk,
so
this
was
kind
of
like
you
know.
If
you
wanted
to
build
this
locally,
there
I
put
some
instructions
here
on
how
does
if
you
clone
this
to
your
local
shell,
using
your
local
command
line,
which
I
think
we've
chatted
about
before
yeah
you
could,
instead
of
running
it
from
get
web
pages,
you
could
just
run
it
locally
with
a
Python
server.
A
So
that's
that's
a
few
examples
of
you
know
some
projects
that
I've
I've
created,
mostly
mostly
demos,
I,
make
a
lot
of
demos,
that's
kind
of
what
I
use
get
led
for
often,
but
there
you
know
there
are
other
folks,
other
gitlab
or
folks
on
the
get
lab
team.
That
you
know,
do
demos
and
things
like
this,
but
they
also
might
just
have
personal
software
projects
they're,
building
a
mobile,
app
or
they're
building
a
web
app
well.
B
C
A
degree
so
I'm
trying
to
go
back
and
understand
to
get
Liebeck
get
basics
for
that.
The
second
reason
being
part
of
my
job
description
is
curating
peer
reviews
and
putting
them
in
a
searchable
curatu
beliefs,
and
that
I
might
actually
need
to
figure
out
a
way
to
put
that
somewhere
in
a
searchable
place,
so
I
might
actually
benefit
from
learning
how
to
code
a
little
bit.
So
that
was
my
two-fold
reason
for
asking
yeah.
A
That
that's
awesome,
I
I
would
say
in
my
opinion,
that
the
analogy
would
be
you
know,
working
at
forward.
Understanding
like
you
know
how
a
assembly
line
works.
Yeah
is
actually
what
we
just
talked
about
in
this
video,
so
that
that
software
delivery
pipeline
yeah
I
think
every
Gil
average
understand
it.
It's
actually
why
I
said
hey,
let's
record
this
conversation
because
I
have
it
often
mm-hmm.
C
A
You
know
I
only
talked
about
get
like
very
very
little
bit,
but
this
is
understanding
that
whole
process
of
the
process
that
software
goes
to.
I
do
think
that
everybody
should
understand
that
I,
agree.
I
would
say,
understanding
get
would
kind
of
be
more
like
I'm
working
at
Ford
in
the
marketing
or
the
sales
department
do
I
understand
how
to
build
an
engine
or
a
carburetor
like
yeah.
There
are
engineers
that
build
engines
at
Ford,
and
certainly,
if
you
understand
how
the
engine
is
built,
maybe
you
could
sell
it
better.
A
Maybe
you
could
market
it
better,
but
that's
kind
of
like
that's
the
level
of
understanding.
All
that's
to
say,
is
I've
been
doing
software
marketing
for
a
long
time
and
I
do
highly
highly
recommend
learning
software
development.
I
think
that
is
like
a
very
admirable
admirable
thing
it's
needed,
but
it
is
really
really
helpful
and
there
are
some
great
resources
like
have
you
ever
looked
at
like
codecademy
or
any
of
those
kind
of
online
courses.
No.
A
Yeah
so
there's
I'll
I'll,
send
you
some
links
and
if
I
can
figure
out
how
to
do
it,
I'll
put
the
links
in
the
description
of
this
YouTube
video,
but
then
really
good
resources.
If
you
just
like
you're
like
hey
I,
want
to
learn
some
programming
code,
Academy
is
one
that
is
really
nice.
Udacity
is
another
one
that
one's
kind
of
a
bit
more
involved.
They
have
like
longer
courses
but
yeah.
Basically,
you
can
learn
a
little
bit
of
software
development.
A
In
fact,
code
Academy
has
some
really
nice
courses
for
learning
get
it's
one
of
the
links
that
I
recommend.
If
you
just
want
to
learn
it
do
this
code
Academy
course,
and
it
becomes
really
really
cool.
I.
Remember,
like
I,
probably
first
started
learning
to
software
development.
A
long
time
ago,
sometime
in
the
90s
I
wrote
my
first
scripts
in
code,
but
when
you
actually
build
something
you
can
kind
of
see
it
running,
it's
pretty
cool
feeling,
so
yeah
I
can
share
some
of
those
resources.
Awesome.