3 Reasons I'm Learning to Code- How to Stay Motivated and Where to Start as a Self-Taught Programmer

Zachariah Frank -


When I first started thinking about learning to code my biggest problem wasn't a lack of information. My biggest problem was being crushed by too many options.

It’s overwhelming and I almost had a very bad case of analysis paralysis. Googling the phrase "learn to code" returns 25 billion results. 25 billion… with a “B.”

The best way I’ve found to avoid analysis paralysis solution is to act- and fast. I needed a simple plan. If you want to learn to code, so do you. But first you need to answer some questions:

“Why am I learning?”

“What language should I learn?”

“Where will I learn?”

“How do I keep motivated?”

You need to keep in mind WHY you want to build this skill.

Here are my top three reasons:

1) Programming Can Help With Work (And Lead to Career Opportunities)

Even if you don't want to become a full-time software developer, there are plenty of ways in which building a coding skillset can improve your situation at work.

You improve problem-solving skills and gain the ability to create automation programs to solve repetitive, time-consuming tasks. And in case you do want to switch careers and become a developer, that's possible too.

2) Problem Solving and Making Things is Fun for Me

I’ve enjoyed making things from as early as I can remember. When I was a child I loved arts and crafts. When I got older I learned woodworking- and even did it professionally.

In the mid-2000's I became thoroughly interested in amateur website development. I built and customized multiple websites, and thought I'd be a breakout success.

Too bad didn't know what market research or marketing was. But I kept going because there wasn't a better feeling than getting features to function correctly after problem-solving for hours and days on end.

Solving computing problems- and building my own software- sounds exciting.

3) Freelance Opportunities Can Supplement Income and Allow Remote Work

The last reason that appeals to me is the gig economy.

I am always up for effective ways to diversify my income streams. Moreover, you don’t need to be a full-time employee to secure an income from programming. You can make serious money on the side without being locked into a year-long contract.

Those are my "whys" - but everyone will have different reasons. If you are interested in learning to code you need to find reasons that are important specifically to you.

Next, you need to find your “what:”

  • • What do you want to do with your coding skillset?
  • • What language(s) would best serve that purpose?

Do you want to get into iOS development? Become a full-stack developer? Work in network security? Knowing what you want to do in the end of this journey will inform a much better decision now and streamline your learning.

But if you are having a hard time deciding- that’s okay! To be completely honest, I am still not yet sure which specific direction I want to go. Once I do know I'll let you know. Since I don't have a specific end goal, I am building a general knowledge of programming first.

It turns out, I have discovered a fascination with data science, so I am going to develop skills in programming related to that field. By some stroke of luck, I can continue studying the languages I originally planned on- but I'll leave out the JavaScript for now.

That brings us to the second "what..." the language.

Ideally, you should decide this based on what you want to do with the language in the end.

E.g. If you want to be an Android developer, learn Java and then the Android OS.

I don't have a clear end goal. So I'm starting with Python.

Why? The language is less intimidating for a beginner (though that can be considered a disadvantage) and it's a popular back-end language with a lot of contacts and support online.

After that, I plan to add in SQL to the mix.

Compared to SQL, Python is the more difficult of the languages used in data science. It will take a bit of time and effort, but it is a much sought-after skill. And with a moderate understanding of Python, SQL will feel easier to learn.

Once I'm proficient with Python and SQL, I'll consider learning JavaScript to round out my skillset.

My main reason is understanding why and how everything interacts. By putting this near the end of the journey I'm confident that I will have enough computer science and software development understanding to grasp the concepts.

And, just as important, I'll have the momentum at that time to push through any monotony.

* And that would technically make me full-stack capable.

But JavaScript is at least a year away. SQL is at least two years away. A lot can happen in two years. So I'm open-minded and focused on the next 6 months for now.

Note: Before choosing data science, I had maintained an open mind to changing course, but I've since found a direction to pursue. That's the point! Stay open-minded until you find which path of programming you want to follow.

The next part is the "where."

That is, “where do you learn?”

After some reading, I've decided on a plan for the next 9 months. Here's an outline of my plan (and here are the courses) that you can use for reference when considering your own:

Phase 1: Introduction to programming and data science
3 Months - The lockdown fast-track.

  1. 1. Complete course: Automate the Boring Stuff ✓
  2. 2. Study book: Automate the Boring Stuff
  3. 3. Earn the Data Analytics Professional Certificate ✓
  4. 4. Complete course: Introduction to Computer Science
  5. 5. Complete course: 2021 Complete Python Bootcamp
  6. 6. Earn the Data Structures and Algorithms Specialization
  7. 7. Review all of the lessons learned from the above.
  8. 8. Begin solving coding problems via sites like Codewars

Phase 2: Broaden newly acquired knowledge & expand my skillset
3 Months - One programming & analytical course at a time.

  1. 9. Earn the Data Visualization with Tableau Specialization
  2. 10. Study PWC's Specialization on Data Analysis and Presentation
  3. 11. Complete course: the Complete SQL Bootcamp 2021
  4. 12. Complete course: MySQL for Data Analytics and Business Intelligence
  5. 13. Complete course: Querying Microsoft SQL Server with Transact-SQL
  6. 14. Complete course: Databases and SQL for Data Science with Python
  7. 15. Complete course: Python for Data Science and Machine Learning

Phase 3: Deep conceptual learning & the cherries on top
3 Months - Only 1 course at a time

  1. 16. Earn the AWS Fundamentals Specialization
  2. 17. Complete course: Statistics for Data Science and Business Analysis
  3. 18. Earn the Methods and Statistics in Social Sciences Specialization
  4. 19. Study various forms of calculus via Khan Academy
  5. 20. Complete an original Python project

Next Step: Begin freelance data analysis

This is a bit comprehensive, but the approach and these contacts work for me.


The purposes of programming are quite varied. We all have different interests, learning preferences, and circumstances. We choose to learn different languages. Some study at coding boot camps. Some study online. Some prefer practical exercise over concepts.

What's important is that you know YOUR direction and plan. How that looks is up to you!

Once you have a plan and you're finally getting your feet wet, you need to make sure you follow through. Especially when picking up a new skill (and a new habit) this can be very challenging.

Here are my keys to make sure I stay motivated:

Have a plan: Plan out your study in a way that makes sense to you. I have a simple year-long outline, a simple 3-month plan, and a weekly study schedule.

Be consistent: Progress is all about gradual, constant motion- you can't rush this. This is why I committed to a minimum of just 1 hour per day for 1,000 days.

Be accountable: Try to get people in your social circle to keep you accountable for your goals. This is extremely important for long-term success.

Have support: Similar to accountability, it's important to have people there for you when you have a hard time moving forward. There are many coding groups you can join if your own social circle doesn't understand what you're doing.

Have rewards: Celebrate and incentivize your successes, whether it's completing a programming book or successfully running a program that YOU coded.

Enjoy learning: Build in personal passion projects to your study schedule. Learn languages appealing to you. "All work and no play makes Jack a dull boy [or girl]!"

Maintaining progress isn't always easy, but nothing that’s worth it is easy. If you’ve finished this article chances are that you think it is worth it.

Don’t procrastinate. Right now, take 2 minutes to write down 1-3 reasons YOU want to learn how to code. Brownie points: post those reasons to my Facebook post to get accountable.

We’re in this together!