6 hard truths about learning to code in 2024
Tags: codenewbie, coding, learning, programming
Published: 2024-05-09 12:23:04

> I’m Fahim, a software developer turned tech founder. This article is part of my series: [The Developer’s Launchpad](https://www.educative.io/blog/dev-launchpad?utm_campaign=learn_to_code&utm_source=medium&utm_medium=text&utm_content=&utm_term=&eid=5082902844932096). I’ll share my top lessons, hacks, and best practices for learning how to code and launching a new career — things I wish I would’ve known earlier in my journey. If you’re starting out your own coding journey, this series is for you.

Considering learning coding?

I’m glad to hear it. Software development is an incredibly rewarding career. 15+ years in, and I’m still amazed by the way the field has evolved — both in how we develop applications, and how those applications have improved to serve people better.

A lot has changed since I learned to code 20+ years ago, but the essentials remain the same. You still need problem-solving skills and a commitment to lifelong learning. Some factors are new though… like the **prevalence of AI and what it means for new coders.**

I wanted to be frank about what new coders can expect in their coding journey, so here are 6 hard truths about learning to code in 2024.

## 6 hard truths about learning to code

### 1. It will take time
Becoming a coder doesn’t have to take years. But how fast you progress **depends on your circumstances**.

Some people need more time than others either because of their learning style, or because of their availability to study.

If you’re self-taught, I’ve estimated that it can take as little as 6–9 months to be learn to code _if you can commit a consistent schedule of 25 hours/week_ — but again, results will vary.

Even those who graduate from [coding bootcamps](https://www.educative.io/blog/what-is-a-coding-bootcamp) and [4-year degrees](https://www.educative.io/blog/need-degree-get-developer-job) can still have gaps in understanding that they’ll have to work on in their spare time.

Overall, just know that the amount of time it takes you to get comfortable coding may be longer than you anticipated. There’s a lot to learn, so try and be realistic about your goals and expectations. Overall, it’s better to be consistent and learn a little at a time, than to cram your learning into short bursts.

> Tip: Figure out what [learning strategies](https://www.educative.io/blog/5-proven-learning-strategies) are effective for you, and use them!

### 2. You will get stuck

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kn3z9miyzhlz8dpyh220.png)

At several points, you’re going to get stuck **before certain concepts “click” for you**.

Whether it’s a bug or an algorithm that you haven’t mastered, hitting roadblocks is entirely expected and is no cause for concern. A bit of fog on a hiking trail doesn’t deter hikers, so a roadblock shouldn’t stop your learning either. A roadblock is only a **temporary challenge** and no reason to turn back.

If you’re stuck, it helps to talk out your issue with others or even take a break from the problem at hand. Whether you’re stepping away from the problem for a few hours or a few days, coming back with fresh eyes can help you spot things you missed before.

Getting stuck can feel like learning stagnation. For some, this is very discouraging (and it’s one of the [reasons people quit learning to code](https://www.educative.io/blog/reasons-people-quit-coding)). But just as a bicyclist moves slowly over a hilltop before gliding effortlessly down, just know that you’ll be moving soon enough after you’re stuck too.

> Everyone has these moments — it’s a natural part of the learning process, so don’t give up!

### 3. The learning never stops
The thing about learning programming is… **the learning never stops**.

Constant advancements in technology mean developers need to update their skills to stay relevant.

Constant learning is actually one of the most exciting things about being a programmer. From new ways of building software to new workflows, programmers always embrace innovation, and it helps us do our work better.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ut17rmpg6zafk46o2beq.png)

So how can you navigate a field that constantly demands that you evolve with it?

This idea can be overwhelming for some, but with the right approach, you can actually enjoy the fact that you’re in a field where there are constant opportunities to improve. Being open and eager to learn and grow is what we call a **growth mindset**, and is a quality I look for when hiring developers.

In addition, you’ll need **discipline**. There are often opportunities to upskill with classes and training through your employer, but generally, every developer has to be able to be a self-taught developer who makes time in their schedule to study and practice new skills.

That said, developers often suffer from burnout — and learning burnout is part of this. While you should have discipline, try and pace yourself and have realistic learning goals.

### 4. You will make mistakes
As with learning any new skill, your learning curve is going to consist of plenty of mistakes. It can be frustrating at some point, but mistakes are actually learning opportunities — and you should **expect to encounter them** on your road to coding proficiency.

Whether it’s a syntax error or an oversight, even skilled developers make mistakes, so don’t be too hard on yourself.

Instead, embrace mistakes as **milestones in your learning journey**. They reveal gaps in your understanding so that you know where to focus your studies. Indeed, [you can’t truly master programming if you’re not ok with making mistakes](https://www.educative.io/blog/failure-learn-to-code).

If you’re NOT making mistakes, that’s likely an indication that you’re not engaging in enough of the hands-on practice that’s necessary to effectively learn to code.

### 5. You’ll keep having to clean up messes!

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/40oi3587wx021y0ofzdt.png)
Mistakes imply someone has made a misstep, and has actively missed a detail or forgotten something. But then we have the larger umbrella of coding **bugs**.

Bugs in programming are issues in your code that cause unexpected or undesirable results. They can be caused by many things. In some cases, it can be your own human error (for example, perhaps you misspelled something in your code). But other times, bugs can arise from factors entirely outside of your control. For both of these reasons, encountering bugs is inevitable.

However, finding and resolving these issues is an essential skill we call “debugging.” Developers spend a great deal of time debugging.

Debugging can feel a **little messy**. When you’re dealing with complex software systems, there are many factors that can lead to bugs — from an issue in your codebase, to an issue in third-party dependencies that is affecting your software. With so many factors at play, identifying the root of a problem can be a little maddening.

Over time, you will get better at debugging, and you may even find it rewarding. I know I’ve personally loved the “aha” moments that came from finally resolving a bug that’s been plaguing my code.

> To help you navigate debugging, I recently wrote a blog post with [debugging tips for beginners](https://www.educative.io/blog/debugging-tips-beginners).

### 6. Eventually, you’ll need to learn to work with AI
Many new coders are worried that the rise of AI will lead to a fall in developer demand. I’ve already debunked this concern in a separate post: [AI can’t replace developers ](https://www.educative.io/blog/will-ai-replace-programmers)anytime soon, for a variety of reasons.

That said, the presence of AI is going to **change expectations for developers**: namely, learning AI skills is becoming a must.

AI skills can range to include:

- Less technical skills, like prompt engineering to learn how to leverage Generative AI
- Utilizing frameworks like LangChain to develop apps with LLMs
- More advanced skills like [AI engineering](https://www.educative.io/blog/how-to-become-an-ai-engineer)

Don’t worry too much about learning AI skills if you’re a total beginner. The best way to start is to **start small with skills like [prompt engineering](https://www.educative.io/blog/what-is-prompt-engineering)**, so that you can effectively use Generative AI tools to both learn and code.

Using tools like [ChatGPT as a learning assistant](https://www.educative.io/blog/how-to-use-chatgpt-to-learn-a-language) can help streamline your research and learning. But Generative AI tools are not immune to errors — so you should try to fact-check their responses by doing some research of your own.

Once you’re in the workforce, AI tools will be amazing assistants that help reduce tedium in your work. That said, you should wait until you truly [learn how to code](https://www.educative.io/blog/learn-how-to-code-beginners-guide) on your own before using Generative AI for coding. Generative AI tools require human guidance and supervision. You need your own knowledge to be able to craft prompts for an effective output — and to properly review and edit those outputs (trust me, they need editing).

### The most important thing?
One thing hasn’t changed since I started learning to code:

**Developers learn best by doing.**


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bkpcbjvybc4rw3ag3xg3.png)

Make sure you spend adequate time practicing coding. Even if you make mistakes, or get lost along the way, hands-on practice is the best way to truly internalize programming concepts and apply them to real-world scenarios.

> You can learn everything you need to go from your first line of code to your first job with Educative’s beginner-friendly [Learn to Code resources](https://www.educative.io/learn-to-code?utm_campaign=learn_to_code&utm_source=medium&utm_medium=text&utm_content=&utm_term=&eid=5082902844932096). You’ll find courses, Skill Paths, and projects with built-in coding playgrounds and AI-assisted feedback for personalized, hands-on learning.

Liked this post? Visit the Educative blog for more articles from [The Developer’s Launchpad](https://www.educative.io/blog/dev-launchpad?utm_campaign=learn_to_code&utm_source=medium&utm_medium=text&utm_content=&utm_term=&eid=5082902844932096).