►
From YouTube: RustConf 2020 - How to Start a Solo Project that You'll Stick With by Harrison Bachrach
Description
How to Start a Solo Project that You'll Stick With by Harrison Bachrach
Have you ever started a solo project that never really came together? Been able to write something up in a weekend but dropped it soon after? Me too! In this talk I go over how I was able to break from that and build my first CLI tool, written in Rust. Drawing from an understanding of habit formation, we’ll examine how to plan projects in a way that keeps you fulfilled and stops you from veering off track.
A
Hi
I'm
harrison
backrack.
I
typically
say
I'm
a
software
engineer
during
introductions,
but
chances
are
high
that
you're
a
software
engineer
too.
So
I
guess
I
bake,
but
I
guess
everyone
is
baking
right
now,
so
to
clarify
it.
I
bake
holla,
here's
some
holla
before
it's
edible
and
here's
some
holla
while
it's
edible.
A
A
A
A
First,
you
have
an
idea.
A
lot
of
us
are
spending
a
lot
of
time
indoors,
all
of
a
sudden.
So
what
if
you
were
to
start
an
indoor
plant
collection,
except
if
you're
like
me,
you
forget
to
water,
these
things
or
forget
which
plant
needs?
What
sort
of
light
and
all
of
a
sudden
you
go
from
this?
To
this,
don't
think
anyone
needs
this
kind
of
vibe
in
their
home
right
now.
A
So
can
software
help,
I
mean,
let's
be
real.
Probably
not
software
can
be
pretty
bad,
but
hey.
Maybe
you
know
I've
been
looking
to
make
something
in
my
spare
time,
I'm
primarily
a
front-end
developer,
but
I've
been
hearing
about
rust
web
server
projects
like
actics
and
rocket.
Maybe
I
can
make
a
web
app
or
something
yeah
yeah
you'll
be
able
to
upload
pictures
of
your
plants
over
time,
you'll
be
able
to
give
them
names.
A
You'll
tell
it'll
tell
you
when
they
need
to
be
watered,
which
soil
type
they
need
and
where
to
find
that
soil
tons
of
features
great.
So
you
get
started
and
work
on
it
until
three
am
and
you
get
it
to
the
point
where
you
can
create
a
plants
and
you
deploy
it
to
heroku
and
the
automated
tests
run
on
push
and
some
time
passes,
and
now
that
thing
that
was
so
much
fun
for
an
evening
is
a
stub
of
a
program
and
you've
lost
all
interest
or
enthusiasm.
A
A
A
I'd
read
the
rust
book
a
few
times
before
off
and
on,
but
I'd
never
really
made
anything
with
it,
partly
because
I
didn't
know
how
to
start
and
partly
because
I
was
intimidated,
but
eventually
I
saw
how
easy
it
was
to
make
command
line
applications
and
that
got
me
working.
My
first
rust
program
root
side.
Note
thanks
to
all
the
people
who
made
this
section
of
the
site
about
what
to
make
with
rust.
A
I
went
to
the
homepage
for
the
first
time
for
the
first
time
about
a
year,
after
initially
being
introduced
to
rust,
not
knowing
what
to
actually
build,
and
I
found
this
information
super
useful,
getting
up
and
running
on
my
first
project
right.
So
this
is
about
solo
projects.
So
let's
talk
about
the
solo
project
of
mine
that
actually
worked
root,
or
if
you
want
to
call
it,
rut
is
a
pretty
straightforward
program.
Think
of
it
like
tree,
but
instead
of
directories
and
files,
it
works
on
data.
A
The
reason
I'm
talking
about
root
is
that
it
took
almost
two
months
to
get
it
into
its
current
state.
If
you're
thinking
that's
a
long
time
to
make
a
program
to
do
that,
I
think
you're
right,
I'm
very
much
a
beginner
when
it
comes
to
rust
and
it's
very
possible
that
many
of
you
could
get
this
done
in
a
single
evening.
A
A
So
after
working
on
root
for
weeks
and
weeks,
I
started
asking
myself:
why
did
this
project
turn
out
differently?
What
was
different?
Well,
it
became
a
habit
for
a
lot
of
us
side.
Projects
are
something
that
we
want
to
do
in
the
abstract,
but
have
trouble
doing
in
the
moment
if
you've
ever
come
up
with
new
year's
resolutions
and
almost
inevitably
failed
those
resolutions.
A
That
concept
might
be
familiar
to
you
and
that's
probably
most
of
you
assuming
you
had
any
so
what
goes
into
a
successful
habit.
Firstly,
you
have
to
do
it.
Of
course.
That's
a
lot
easier
said
than
done
now
we're
about
to
step
into
a
big
vat
of
psychology
research,
and
I
want
to
give
a
huge
disclaimer
that
I'm
a
software
engineer
not
a
psychologist
or
a
mental
health
professional,
I'm
also
not
a
doctor
nor
lawyer
and
it's
kind
of
a
bummer,
because
both
of
those
careers
are
much
easier
to
explain
to
your
parents.
A
So
in
prepping
for
this
talk,
I
read
this
paper
called
promoting
habit
formation
and
in
it
I
found
this
super
academic.
Sounding
quote:
intentions
to
act
are
significant
precursors
of
initiation
of
behavior,
but
intention
translation
is
imperfect.
What
the
heck
does
that
mean?
Well,
just
because
you
want
to
do
something,
and
you
know
that
that
thing
that-
and
you
know
that
you
want
that
thing
to
be
done-
doesn't
mean
that
you'll
actually
do
it
when
the
opportunity
arrives.
A
There
are
a
lot
of
reasons
why
people
abandon
projects,
but
a
major
one
is
not
feeling
satisfied.
Now
this
may
seem
silly
to
say
out
loud,
but
how
satisfied
you
feel
by
working
on
a
project
is
a
big
factor
in
whether
or
not
you'll
stick
with
it.
If
building
a
project
building
your
project
isn't
satisfying.
You
might
want
to
reflect
on
that
for
a
bit.
Why
did
you
think
it
would
be
satisfying
if
it
was
satisfying
before
what
changed?
A
A
A
A
So
let's
say
we
have
some
realistic
goal.
How
do
we
make
sure
we
actually
do
the
work?
One
common
idea
in
habit
formation
is
something
called
automaticity
which
is
basically
the
act
of
doing
something
automatically
without
meaning
to
do
it
or
even
being
aware
of
it.
For
example,
for
some
of
you
flossing,
your
teeth
is
often
an
automatic
action
that
you
don't
actively
plan
out
or
think
about.
Now
you
probably
can't
write
code
as
unconsciously
as
you
can
floss
your
teeth,
but
you
can
start
that
way.
A
A
You
take
a
shower.
You
clean
up
the
table.
You
finish
eating
dinner.
The
gaps
between
these
periods
are
really
significant
and
tend
to
stick
to
your
mind
much
better.
These
are
the
times
to
schedule
working
on
your
project,
but
when
those
events
happen,
what
do
you
do?
Even
when
you
remember
to
work
on
a
project
starting
can
be
daunting
in
order
to
make
a
habit?
Having
a
plan
helps
a
lot.
The
research
is
pretty
clear
here.
There's
one
type
of
plan:
that's
super
helpful
called
implementation
intentions.
A
However,
that
name
is
a
pain
to
say,
so,
I'm
just
going
to
call
them.
If
then
plans,
they
have
a
form
like
this.
If
I
encounter
x,
then
I
will
do
y
in
order
to
reach
goal
z.
Let's
say
you
want
to
start
a
habit
of
drinking
more
water,
an
if
then
plan
that
might
help
is.
If
I
get
out
of
bed
in
the
morning,
then
I
will
fill
my
water
bottle
and
put
it
on
my
desk.
A
A
Now,
in
working
on
your
habit,
there
are
likely
going
to
be
some
struggles,
whether
it's
difficulty
in
building
the
habit
in
the
first
place.
Frustration
when
writing
code
or
uncertainty
not
on
how
to
make
important
architectural
decisions.
You
could
create
what
are
called
coping
plans
on
how
to
deal
with
these
issues
when
they
crop
up.
Research
has
found
that
coping
plans
when
applied
to
physical
exercise
had
a
dramatic
effect
on
the
endurance
of
those
habits
of
those.
A
In
the
study
that
made
specific
plans
on
when
where
and
how
to
exercise
two
months
later,
around
44
were
still
performing
at
least
an
hour
and
a
half
of
exercise
per
week.
However,
for
those
who
had
made
coping
plans,
71
percent
were
still
working
out
that
much
forming
concrete
plans
on
how
to
deal
with
these
roadblocks
is
super
valuable
for
success,
but
also
for
mental
health.
There
very
well
may
be
times
when
working
on
your
project,
where
you
feel
really
useless
or
stupid,
but
these
are
neither
accurate
nor
helpful
thoughts.
A
A
First
talk
with
people
talking
with
people,
engineers
and
non-engineers
alike,
can
be
a
huge
relief
and
put
things
in
perspective
and,
of
course,
it's
fun.
I
think
we
could
all
use
a
little
bit
of
fun
right
now.
Secondly,
find
some
nice
communities
online.
In
addition
to
being
a
great
place
to
ask
questions,
people
working
on
similar
things
can
often
understand
your
frustrations
in
a
deeply
validating
way.
I've
had
a
bunch
of
super
great
interactions
on
the
rus
discord.
For
example,
that
said,
there
are
a
lot
of
not
nice
communities
online.
A
I
remember
I
asked
a
question
on
tree
traversal
on
stack
overflow
and
the
first
comment
was
stop
doing
this
and
rest
number
three
just
step
away
from
the
computer
oftentimes.
All
you
need
is
a
bit
of
distance
from
what
you're
working
on
to
help
clear
your
mind
and
relax.
You
not
only
that,
but
I
found
that
most
of
the
time
I
figure
out
a
tricky
problem
when
I'm
washing
dishes
or
about
to
fall
asleep.
A
A
The
risk
is
that
the
rewards
can
often
become
the
goal
in
and
of
themselves
or
that
the
rewards
mean
less
and
less
over
time.
The
cool
the
rewards
also
tend
to
have
less
of
an
effect
if
you
have
very
high
awareness
of
them
and
we're
talking
about
solo
projects
here.
So
that
seems
very
likely
now
there's
a
very
common
acronym
smart
that
is
referenced
a
lot
in
articles
on
successful
habit,
building
and
goal
setting.
A
It
was
initially
introduced
by
this
guy
named
george
t
doran,
a
consultant
and
director
at
the
washington
water
power
company
in
an
article
intended
for
managers
on
how
to
set
corporate
objectives.
But
since
its
introduction,
the
ideas
have
gone
through
a
few
changes
that
better
align
with
personal
goal,
setting
for
individuals
while
they
weren't
derived
from
academic
research.
They
are
still
a
very
useful
tool
that
align
with
many
of
the
conclusions
from
various
studies
on
habit
formation.
A
A
A
A
smart
goal
is
achievable.
It's
something
that
isn't
too
far
outside
the
realm
of
possibility.
I'd
love
to
build
a
laptop
from
scratch,
for
example.
But
for
me
that's
not
exactly
realistic.
A
smart
goal
is
relevant
to
you.
It
needs
to
be
something
that
you
care
about,
something
that
motivates
you.
It's
something
that's
hard.
It's
really
hard
to
put
a
lot
of
time
into
something
that
is
not
directly
meaningful
to
you.
A
Lastly,
a
smart
goal
is
time
bound
now
in
most
indications
of
smart.
This
refers
to
a
sort
of
due
date,
but
that
often
doesn't
apply
to
side
projects.
It
may
never
be
truly
done.
Additionally,
due
dates
often
create
unnecessary
stress,
and
this
is
something
that
should
be
enjoyable
instead.
I'd
like
to
think
as
time-bound
as
referring
to
your
engagement
with
the
project
on
a
day-to-day
level
limit
your
habitual
time,
instead
of
your
total
time.
A
So,
let's
see
how
smart
connects
to
root
first,
the
initial
goal
was
just
to
write
a
program
that
made
drawing
those
those
tree
diagrams
from
an
easy
to
type
input
the
project
expanded
beyond
that
afterwards,
of
course,
but
the
initial
idea
was
very
focused,
as
I
went
through
adding
features
to
root,
I
really
only
thought
about
everything,
one
small
step
at
a
time.
This
meant
that,
as
I
wrote
more
code,
the
proctors
felt
really
real
and
was
directly
measurable.
A
I
could
literally
count
the
number
of
things
that
I
had
added,
so
this
sort
of
measurement
elegantly
translates
to
filing
issues
creating
tickets
or,
however,
you
like
to
do
task
tracking.
This
can
be
as
simple
as
a
list
of
a
piece
of
paper,
which
is
what
I
used,
or
it
can
be
as
sophisticated
as
an
integration
with
like
github
issues
or
a
clubhouse
project.
A
A
When
I
started
planning
root,
I
kept
scopes
small.
I
wasn't
going
to
have
any
command
line
options.
I
would
it
would
do
one
thing,
and
only
one
thing-
and
even
that
was
too
hard
starting
in
rust,
was
so
difficult
that
I
had
to
make
an
initial
prototype
in
ruby
my
primary
language
root.
As
a
project
felt
very
useful
to
me,
it
came
out
of
the
very
real
issue
that
communicating
the
specifics
of
tree
data
structures
is
super
hard.
A
In
addition
to
the
problem
domain
root
gave
me
the
opportunity
to
learn
about
parsers
as
well
as
rust,
both
of
which
I
had
been
partially
exposed
to,
but
hadn't
really
been
able
to
sink
my
teeth
into
that
prototype
from
earlier.
Also
aided
the
motivation
on
continuing
with
rust,
as
it
showed
that
switching
to
rust
dropped
the
execution
time
from
200
milliseconds
to
5
milliseconds
the
static
type
system
also
caught
a
number
of
bugs
that
would
have
been
a
real
pain
later
on.
A
So
when
working
on
route,
I
would
really
only
spend
a
few
hours
a
night
and
only
two
to
three
nights.
A
week
when
I
got
stuck
or
frustrated
on
a
problem,
I
would
give
it
a
solid
attempt,
but
if
that
wasn't
enough,
I
would
take
a
break
or
stop
on
it
for
the
day.
Typically,
I
would
continue
thinking
about
the
problem.
A
Firstly,
the
scope
of
the
project,
just
ballooned,
what
started
as
a
way
to
track
caring
for
plants
became
something
much
bigger.
Learning
rust
is
also
a
big
challenge
and
creating
a
web
application
is
no
small
feat.
In
addition
to
learning
rust,
we
also
needed
to
create
an
authentication
system
we
needed
to
set
up
how
to
handle
assets
we
needed
to
to
deploy
to
some
server.
All
of
that
takes
time
before
we
can
get
up
and
running
working
for
all
those
hours.
Sure
was
fun,
but
it's
not
sustainable.
A
A
Firstly,
don't
feel
like
watching
after
watching
this
talk
that
you
ought
to
do
as
programming
side
project.
It's
not
for
everyone,
it's
not
even
for
me,
a
lot
of
the
time.
That's
okay!
You
can
have
other
hobbies.
I
imagine
a
good
deal
of
you
write
software
for
your
job.
If
you
don't
want
to
bring
that
home,
then
don't
another
thing
right
now
we're
living
through
a
historic
global
pandemic
that
has
dramatically
impacted
most
of
our
lives,
not
only
that,
but
people
are
becoming
even
more
aware.
A
A
A
A
I
want
to
thank
everyone
that
was
involved
in
setting
up
ruskoff.
I
also
want
to
thank
my
parents
as
well
as
my
partner,
ann
marie.
Everyone
has
been
super
helpful
in
getting
this
talk
to
this
stage.
If
you
want
to
follow
me
online,
my
website
is
holoscript.com,
that's
for
the
ch
and
and
my
twitter
is
harry
b.
So
thank
you.