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.
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
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 =)
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!