Learning how to code: what you should know first (part 1)

Learning how to code: what you should know first (part 1)


Are you thinking of learning how to code? 🤔 I think there’s something you need to know first…

This is the first post of a two-part series. In it, I’ll cover the following topics:

  1. The importance of having a good idea of Why you want to learn how to code
  2. How Passion is overrated
  3. Why it’s important to have a Growth mindset
  4. Why you shouldn’t rely on Motivation
  5. Why focus on Systems over Goals

When starting the journey of learning programming, one tends to focus on the programming languages to learn, courses to take and books to read. But I think the most important thing is to develop an attitude and mindset that allow us to face the challenge of learning programming in the best way possible.

I discuss these concepts in my first published YouTube video! You can watch it here.

Have a clear idea of why you want to learn how to code

Knowing our why will help us to keep going when motivation fails us, and things get difficult 😰.

Ideally, your why would be internally focused, so don’t start studying programming just because you want to earn more money (something external). Programming is very hard, and doing it just for the money may not be a reason powerful enough to stick with it 💰💰💰.

Instead, try to find internal reasons why you want to study programming. For example, some of the internal reasons that work for me are:

  • To learn and grow personally and professionally.
  • To choose better quality problems and to choose a struggle to enjoy.
  • To build mastery at something.
  • To be an inspiration to others (family, friends, strangers).

Having a clear why will give meaning to the effort we are going to invest in our learning journey.

You can read more about this topic in the book Man’s Search for Meaning.

I actually have my why printed and hung on top of my monitor. I use it as a tool to lift my mood and motivation when I don’t feel like studying or when I’m stuck with a programming problem or bug. It reminds me of what I have chosen to do and the reasons behind that choice, something that’s very helpful as a reminder that I need to keep going in spite of feeling uncomfortable.

My Why

By deciding to become a programmer, I’m choosing to have better problems, because problems are going to be present no matter what we decide to do. One thing is to have problems that someone enforces on you, and a very different thing is to choose your own problems.

You can read more about choosing your own problems in the book The Subtle Art of Not Giving a F*ck.


I’ve been struggling to find my passion for most of my life. Ultimately, I’ve learned that passion is not something that you find, but something you build day by day.

You can choose an activity that sparks interest in you, but that interest will evolve into a passion over time. It’s because of this that we shouldn’t pay too much attention to passion when we are just starting with programming and give it time to build up.

Growth mindset

The Growth mindset is a concept developed by psychologist Carol Dweck. You can read more about it in her book Mindset.

The way in which we see ourselves deeply affects how we manage in life. If we perceive ourselves as someone who is not intelligent, or incapable of learning programming, we will start our learning journey on the wrong foot.

On the other hand, if we understand that intelligence is something we can develop over time, as well as most of our skills, we are going to be better prepared mentally to begin studying programming.

The growth mindset is based on the idea that our qualities can be cultivated and developed through effort.

You can have a deeper dive into this topic by reading this article.


According to Steven Pressfield (author of The War of Art), motivation is the push we feel when “the pain of not doing something is worse than the pain of doing it”. For example, the pain of being in a job we hate is greater than the pain we feel when we must sit to study programming to change our careers, so we are pushed to sit and study how to code.

There are two types of motivation:

  • External: it’s outside of our control. For example, study programming to get a good salary in the future, solve a bug to receive praise from others, and prove someone’s code is wrong so others can see us as intelligent coders.
  • Internal: it’s in our control, within ourselves. For example: study programming to get good at it and gain mastery, solve a bug because we love our craft (our code), or solve someone’s else code because we care about delivering a good product.

We should focus on internal motivation, as it’s the only one we can control.

Furthermore, it’s very important to realise that motivation is the result of an action, not the cause of it. This means that motivation will come after we start doing the thing we need to do (but don’t feel like doing it). You can know more about this topic by reading the book Atomic Habits.

So, the key to keeping ourselves motivated is to make the thing we need to do as easy to start as possible. We can arrange a calendar with the times and places to study programming, for example, so our decision-making process can be automated.

We can follow the same ritual or habit each time we sit to study programming, thus conditioning our study activity. For example, we can choose the same place in the house, at the same time in the day, with the same music playlist, each time we sit to study.

You can have a deeper dive into this topic by reading this article.

Systems over Goals

It’s important to have a goal, a clear objective. But it’s also important not to focus too much on it. What we should do instead is to focus on the system we are going to use in order to achieve our goal.

Those who achieve a goal and those who don’t, ultimately have the same goal. So, having a goal by itself is not a guarantee to get it. Many people want to become programmers, but not all of them end up achieving that.

Focusing on our systems will help us to achieve our goals by providing discipline, reminding us why we are doing what we are doing, and avoiding procrastination.

For example, our system could look like this:

  • Wake up early
  • Take a shower so we can be more awake
  • Make our breakfast
  • Sit in front of the computer with our breakfast
  • Open the programming book or online course
  • Start to study whilst we are having breakfast, and do this for at least one hour (we are stacking habits here, as described in the book Atomic Habits)

By focusing on the process (our habits) we are working on our system every day. We are focusing on the immediate, without worrying too much about the future: all the programming languages we don’t know, or how much time is left to become a programmer. By focusing on the day-by-day tasks, we can diminish our anxiety.

If we keep applying our system, day in and day out, we are going to achieve our goal of becoming a programmer.

You can have a deeper dive into this topic by reading this article.

Finishing up…

I want to remind you that this is just a guide to what I consider to be the best way to set the right mindset and attitude toward becoming a software developer.

Which one of these concepts resonated the most with you? Leave it in the comments so we can see which ones are the favourite picks!

Next post

In the next post, I’m going to cover the rest of these concepts, so you may want to subscribe to my newsletter to get a notification when the post is out.

See you next time! 👋

🗞️ NEWSLETTER - If you want to hear about my latest articles and interesting software development content, subscribe to my newsletter.

🐦 TWITTER - Follow me on Twitter.

Did you find this article valuable?

Support Damian Demasi by becoming a sponsor. Any amount is appreciated!