# Programming and Motivation

By Randall Degges · October 2, 2012 · https://rdegges.com/2012/programming-and-motivation/

> How I stay motivated to write code: think like your users, work in small bursts with concrete goals, use caffeine, and keep chasing your ambitions.

![Bleach Sketch][]


Writing software can be pretty draining work.  It is insanely fun when you're
in the zone and feeling good, and insanely dull when you're not feeling your
best.

In my personal experience, I've found that my programming ability is directly
correlated to my motivation for the task at hand.  Since I'm having a pretty
good day today, I thought I'd take a moment to reflect on programming and
motivation.


## What Makes Good Software?

Good software is all about passion.  It doesn't matter if you're an excellent
programmer--if you wake up each day and hate what you're working on, the way
you're feeling will be reflected in your work.

On the other hand, if you love what you're working on, really care about the
people who will be using your software, and aren't afraid to be ruthless with
your day-to-day development, you're going to produce awesome software, and
nothing will be able to stop you.

When I'm not feeling so great, I try to really put myself into the shoes of my
users.  If I were using my software, how would I feel about it?  What can I do
to make it better so my users love it more, and want to keep using it?  Just
the process of sitting down and really thinking about this is usually enough to
get me kick started, and motivated to do some serious hacking on whatever
project I'm working on at the moment.


## Having Fun

Programming is a mental exercise.  Like any mental exercise, it's easy to burn
yourself out if you do it the wrong way.

Imagine sitting down reading a book on algorithms--sure, it's fun for a while
(when you're feeling motivated!), but the farther along you go the more drained
you become, and eventually you'll get frustrated and demotivated.

The key to having fun while programming (at least for me), is to do it in
bursts.  If you've got a lot of code to write, take some time to organize your
thoughts before you dive in.  I like to list some small goals, e.g.

-   Finish the about page.
-   Write automated email script for low-balance notifications.
-   Write a script to automatically adjust DynamoDB throughput for the `users`
    table.

This way I've at least got something concrete to look at in front of me, and
instead of writing code and constantly thinking about all the things I have to
do, I can just focus on a single task and do a really good job of finishing it.

Not only does having your tasks laid out make it easier to focus, it also makes
you feel good when you get stuff done.  Each time I finish code I'm working on,
I get a really great warm and fuzzy feeling deep down, which only serves to
increase my motivation and keep me feeling good >:)

The other solution, of course, to having fun while programming is an old and
tested way: lock yourself in a small dark room, put on the best headphones you
have, and blast your favorite tunes.  While not sustainable, this is definitely
a great way to have fun while building weekend projects =)


## Caffeine

While I'm definitely not a doctor, I can tell you with certainty that caffeine
makes me feel **awesome**.

Despite the fact that some people respond poorly to caffeine, to me it is a
staple of programming motivation.  Not only do I feel great on caffeine (happy,
thoughtful, energetic), but it generally awakens my technical curiosity and
really gets me in the *mood* for some hacking.

Caffeine + programming is a magical mixture.

For the health conscious--if you're interested in a good energy drink with no
sugar (no carbs), great flavor, and copious amounts of programmer blood
caffeine, you should try the [Rockstar No Carb][] (my favorite).


## Realize Your Ambitions

Everyone has their ambitions--what are yours?  Do you want your open source
project to get a million followers on GitHub?  Do you want to launch that side
project you've been working on for the past three months?  Do you want to get
500 new users this month?

It is *so* easy to get distracted by day-to-day life, that it often becomes
difficult to always keep working towards your ambitions.  I realized a long
time ago that no matter how busy you are, no matter how much pressure you're
under, and no matter how beat up you're feeling--you need to keep working on
yourself, and pushing yourself to the next level.

Progress only happens when you work hard, fight for what you want, and don't
stop until you get it.

The next time you're not feeling your greatest, take a minute to think about
all the things you want to achieve, and then get out there and do them!  Every
moment you spend feeling bad is a moment wasted, so try to focus on
accomplishing the things you want to accomplish, and making the journey to get
there as fun as possible.

Ultimately, your success or failure to fulfill your ambitions rests solely on
your shoulders.  Push yourself, and don't give up!

Motivation is a powerful thing.  If you can manage to stay motivated for the
task at hand, whether it be programming, exercising, or whatever else you'd
like to do--you'll be able to do it better, faster, and enjoy it more along the
way.

For programming (especially), maintaining motivation is extremely important as
your mood greatly effects your work.

Now get out there and write some code!


[Bleach Sketch]: bleach-sketch.png "Bleach Sketch"
  [Rockstar No Carb]: https://web.archive.org/web/20210211065913/https://www.amazon.com/dp/B000NGNEKY "Rockstar No Carb"
