New Year's Resolutions can be a strong motivational tool. They can help you take your skills to the next level.

But they can also backfire, leaving you exhausted and deflated.

In the past, I have used New Year's Resolutions to great effect. But I've also scrubbed out on some resolutions, too.

In this article, I'll show you how to avoid common New Year's Resolution mistakes.

I'll give you some tips for "right sizing" your commitment.

We'll talk about:

  1. The 3 things developers who succeed with their New Year's Resolutions have in common
  2. Tips for choosing the right resolution for you
  3. And I'll even suggest some New Year's Resolutions developers are committing to together.

In short, this article will give you everything you need to kick off your big, triumphant 2020.

Do New Year's Resolutions Actually Work for Developers?

Resolutions are a type of "commitment device." They're a contract with your future self.

Resolutions are a powerful tool for getting results. But they're not magic.

There are 3 things that go into a successful New Year's Resolution:

  • Relevance
  • Accountability
  • Support

Let's take a more detailed look at these three factors, and exercises for each of them that you can use as a "gut check."

Factor #1: Relevance - Do You Really Care?

If your New Year's Resolution is to write your own compiler, you'd better be genuinely interested in compilers.

If your New Year's Resolution is to get better with machine learning, you should already be reading academic papers about neural networks for fun.

Your resolution has to be relevant to you. You have to get something out of it.

If you're not already passionate, you probably won't be able to manufacture enough passion to persist through the crush of distractions. You will struggle to actually sit down to put in the work.

Time for an Exercise.

Close your eyes. (After you finish reading the rest of this exercise, of course. ?)

Imagine yourself a few months from now. You've accomplished your resolution.

What's different? How do you feel about yourself?

OK - now try it. Close your eyes and do this.

All right. I'm going to assume you did this.

Now - if you didn't feel your cheeks tug upward into a smile during this exercise, I hate to break it to you. This probably isn't a resolution you're sufficiently excited about.

You should keep brainstorming until you find a resolution that does put a smile on your face.

Remember to tune out the hype surrounding different tools and projects. Resolutions are personal. Don't let anyone tell you how to dream.

Factor #2: Accountability - Do You Really Believe You Can Do This?

When you make your resolution public - either by telling your family about it or by proclaiming it on Twitter or LinkedIn - you are putting yourself on the hook. You are telling the world you're going to see this resolution through.

It's OK to back out of public commitments once in a while. I've done it. Most developers have. Failure is not fatal.

But you need to be careful not to develop a reputation for being a "flake." You need to deliver on your commitments most of the time. Otherwise people may just start shrugging off your grand proclamations.

Remember that New Year's Resolutions are completely optional. You don't have to put yourself out there if you don't want to.

But again, there is risk and there is reward. If you can harness the power of a public commitment device, a New Year's Resolution can propel you to the next level.

Time for another exercise.

Think about the commitments you've made in the past.

Do you already have outstanding commitments that you haven't delivered on yet?

Are those commitments still worth pursuing?

If so, you may want to go ahead and tackle those first before adding even more onto your plate with a New Year's Resolution.

Now think about your resolution. Is it a long shot? Or is it something you can already visualize yourself doing?

Remember that developers are notoriously bad at time estimation.

It's better to set a modest goal than trap yourself in a self-imposed death march.

Factor #3: Support - Can You Leverage Positive Peer Pressure?

The final factor is social. Do you have friends who can embark upon the resolution alongside you?

Awesome. This is the way to go. You can help keep one another motivated.

Or do you at least have friends who understand what you're trying to accomplish so they can cheer you on?

This is important. Because if your goal is to - say - create an entire website using only C++, or to reach 1 kyu on Code Wars in less than a year - people may not understand that goal or why it's challenging.

Don't make it any harder for people to care about whether you succeed.

This positive peer pressure can be critical. When you are extremely busy with work, or you're sick, or you've had a major life change - how are you going to stay motivated?

Most often, it's the people in our lives who keep us pushing forward. We don't want to let them down.

So find a peer group - or even curious family member - and get them to earnestly root for you in your quest.

(And note that the 3 challenges I recommend at the end of this article each come with their own peer groups.)

Last exercise. I promise.

Think about the person whom you'd most like to care about your resolution. Once you have someone picked out, read on.

OK - now imagine how you would explain your resolution to this person.

How would you get them to care enough to ask, "How's your resolution going?" from time to time.

Quincy's New Year's Resolution Tips for Developers

Now that you have a good idea of what makes a successful New Year's Resolution, here are a couple tips to make life easier for you.

image-196

Tip #1: A year is too long. Timebox your resolution to 3 months instead.

The whole point of a New Year's Resolution is to bring about a positive, sustained change in yourself.

The key word is sustained.

For some people, that change could be getting into shape, or getting out of debt.

For an ambitious developer, that change could be learning a new tool or contributing to a new open source project.

In order for the change to be sustained, it has to be systematic.

And that's where habits come in.

You don't need to do something for an entire year to build a habit. A few months will suffice.

So I recommend setting your New Year's Resolution to end before April. Then you can catch your breath and assess whether this is something you want to continue.

Tip #2: Figure out a way to make your resolution an unavoidable part of your day

Think about your future self - coming home tired at the end of the day, just wanting to watch a show or play some games.

How can you set your future self up for success?

By working your resolution into your daily routine, you no longer have to think about it as much.

If your gym is on the way home from work, you can just pull over and go in and work out. There's no more, "Oops - I forgot to do it."

The same thing works with coding:

  • Use daily recurring reminders. And yes - you should ideally be working on this every day at around the same time of day.
  • Use tools to block access to distracting websites during the time of day when you're working on your resolution. This can help you stay focused.

Tip #3: When in doubt, use a ready-made peer group and a ready-made challenge

If you've read this far and still aren't sure what your New Year's Resolution should be, no worries. I have 3 great options for you. You can just follow their rules, use their hashtags, and get started immediately.

The #100DaysOfCode Challenge

This is the granddaddy of coding challenges. It wasn't originally designed for New Year's Resolutions. But January has become the most popular start time.

Here's everything you need to know about the #100DaysOfCode challenge - including its history and how to get started.

The #ProjectEuler100 Challenge - The "Dark Souls" of New Year's Resolutions

And for all the developers out there who love a challenge, I've created a brand new challenge for your New Year's Resolution.

This will really force you to expand your math and computer science horizons.

It is totally do-able by a new developer. Thousands of people have completed the first 100 Project Euler problems over the years.

It's just brutally hard.

I love Project Euler and used it extensively when I was first learning to code. I love it so much that we added all 600+ Project Euler challenges to freeCodeCamp's Interview Preparation section.

These 600+ challenges get progressively harder - to the point where even people with math PhD's still struggle with them.

But again, the first 100 are do-able for a lay person with some willingness to go down Wikipedia rabbit holes.

So what do you think. Are you up for working through the first 100 Project Euler problems by the end of 2020?

Here's how the challenge works:

  1. Tweet out a photo of yourself giving a thumbs-up and announcing that you are committing to the #ProjectEuler100 challenge.
  2. Create a GitHub repository.
  3. Each time you complete a challenge, add your solution to your GitHub repository and tweet a link to it using the #ProjectEuler100 hashtag.
  4. Then scroll through the #ProjectEuler100 hashtag and give supportive feedback on at least 2 tweets from other developers.
  5. Move on to the next Project Euler challenge. You can't skip ahead. You have to complete all 100 problems in order. But you can use any programming language you want to solve these.
  6. Once you've finished all 100 of them, tweet out a celebration photo of yourself with your laptop open to your GitHub repo.

You can use the 20-year-old Project Euler website itself. Or you can use the freeCodeCamp.org version - which lets you code right in your browser, and has built-in tests.

Remember: you can look at other people's explanations of these Project Euler challenges, but do not copy other people's code directly. You will be tempted to take shortcuts. Resist the temptation. You'll be glad you did.

UPDATE January 9, 2020: I just published a fun guide to the #ProjectEuler100 challenge. It has lots of tips for successfully completing the challenge, and an in-depth FAQ.

You can read Introducing The #ProjectEuler100 Challenge: the "Dark Souls" of Coding Achievements here (5 minute read).

The #AWSCertified Challenge

AWS offers several cloud certifications, and they're a great addition to your résumé or CV. They can help you steer your career in a more DevOps (or Site Reliability Engineer) direction.

By the end of this challenge, you'll be both an AWS Certified Cloud Practitioner and a AWS Certified Solutions Architect.

freeCodeCamp has free courses to prepare you for both of these. (Shout-out to Andrew Brown at ExamPro who designed these courses and has graciously made them free to the public through our YouTube channel).

The rules:

  1. Tweet out a photo of yourself giving a thumbs-up and announcing that you are committing to the #AWSCertified challenge.
  2. Each day tweet at least one time about your progress and what you've learned or done, using the #AWSCertified hashtag
  3. Each day, reply with encouragement to at least 2 other people who are also using the #AWSCertified hashtag.
  4. Each time you earn a certification, print it out and pose with it.

That's it. Unlike #100DaysOfCode, there is no set end date to this. It's over when it's over. Which should only be a few months if you're working each day toward this.

Note that unlike the other two challenges I mention here, this challenge does cost money. Even though all the learning resources are free, once you're ready to take the exams, you will have to spend a few hundred dollars on examination fees.

UPDATE January 9, 2020: I just published a massive guide to the #AWSCertified challenge. It will give you an in-depth understanding of cloud services and the different cloud-focused careers you can pursue. And of course, it has a ton of free learning resources for you.

You can read The #AWSCertified Challenge: A Path to Your First AWS Certifications here (21 minute read).

Whatever New Year's Resolution you make, stick with it.

The power of New Year's Resolutions lies in their binding commitment. But if you can leverage this power, you can accomplish so much in 2020.

Happy New Year. And Happy Coding.