Boot.dev Blog » Computer-Science » Is Computer Science Really That Hard?

Is Computer Science Really that Hard?

By Natalie Schooner on April 5, 2023

Curated backend podcasts, videos and articles. All free.

Want to improve your backend development skills? Subscribe to get a copy of The Boot.dev Beat in your inbox each month. It's a newsletter packed with the best content for new backend devs.

Yes, computer science is hard, but you already know that. You don’t want to know if computer science is hard. You want to know if it’s too hard. You want to know if having to learn computer science is going to be a real obstacle in your way to achieving your goal.

What’s your goal? Only you know. Maybe your goal is:

  • Becoming a backend developer, game developer, or data engineer.
  • Learning programming languages like Python or JavaScript.
  • Increasing your salary by moving from entry-level data analyst to one of the jobs I mentioned above.

For all those cases, the answer is “Yes, computer science is hard – but not too hard.” Beyond just your goal, the difficulty of learning computer science comes down to a few factors.

  • Do you know anything about programming?
  • Are you interested in code?
  • Do you like thinking about and solving thorny problems?
  • How much do you enjoy practicing things?
  • How comfortable are you stretching your comfort zone?

This article is written for people who are thinking about getting a job in backend development or software engineering and want to know if computer science is too hard to learn without a degree.

Short answer: computer science is hard, but not too hard for you. With the right tools, plan, and attitude, you can learn computer science in six to nine months.

Longer answer: let’s dive in.

What is computer science? 🔗

Slightly boring but necessary answer first: Computer science is the study of computation and information. It is a broad field that encompasses the study of algorithms, programming languages, software engineering, computer architecture, and artificial intelligence.

The problem with this definition is that every other word also needs to come with a definition for you to really get a sense of what computer science means. I mean, the Wikipedia page for computer science is roughly 50% hyperlinks. Look at all that blue text!

wikipedia cs blue hyperlinks

Image Source: https://en.wikipedia.org/wiki/Computer_science

So, in a pithier way, computer science is the study of how to make computers do the thing you want them to do.

People normally learn computer science as a stepping stone to a career, like software or data engineering, backend development, game development, or any other job that touches computers.

If you’re looking into learning computer science to get a job, and not just because you have a love of all things computer, the most important thing you should know is that computer science is not just about learning how to write code. It is about learning how to think critically about problems and how to solve them using computers. This is a skill that is essential for many different careers, not just those in the tech industry.

Why is computer science hard? 🔗

If someone tells you computer science isn’t hard, it’s probably because they think computer science is just copy-pasting some code from StackOverflow. They’re wrong. Let’s get into all the various reasons computer science is hard–but still worth learning.

Complex topics 🔗

The biggest reason computer science is hard is that computer science is a complex, broad concept that encompasses a lot of other complex, broad concepts. Look at that Wikipedia page I linked above and you’ll quickly see exactly how wide-ranging computer science is.

To learn computer science, you’ll need to understand algorithms, data structures, and programming languages. And you’ll need to learn them twice * once in theory, as you understand the concepts, and then again in practice, as you learn how to implement them. That takes a lot of thinking and practice to master.

Math skills 🔗

You also need a lot of math skills, which require active, intentional practice to master. You will need to be familiar with calculus, algebra, and discrete mathematics. All these concepts are famously tricky to get a handle on.

Multiple programming languages 🔗

You’ll also need to learn not one, not two, but probably close to half a dozen programming languages such as Python, Go, Javascript, and SQL. Each language has different syntax, rules, and programming paradigms.

For example, learning Python will teach you object-oriented programming, while Javascript is functional programming.

Time-consuming 🔗

Computer science is also tough because it’s time-consuming to learn, so you’ll need a lot of staying power. Despite all the boot camps that promise you can learn enough CompSci to get a job in three months, it’s not always true. Those boot camps shovel you full of code, but often don’t let you get a mental grasp of the concepts I mentioned above.

The best way to learn computer science is by learning the basics of coding, learning the fundamentals that underpin them, writing code, debugging, and repeating that process again and again. That kind of learning takes time, mental energy, and a lot of effort.

Learning never ends 🔗

Five years ago, machine-learning-as-a-service didn’t really exist. Hadoop and Spark were just on the up-and-up. General Adversarial Networks were but a glimmer in Ian Goodfellow’s eye.

twitter goodfellow

Tweet Source: https://twitter.com/goodfellow_ian/status/1084973596236144640

To learn computer science, you’ll be expected to stay up to date with not just all the technologies that are currently in vogue, but also all the new ones coming up, not to mention updates to existing tech.

For example, Python recently stopped supporting previous versions. Everyone who’d learned how to use Python 2.xx was forced to migrate to 3.x. Not a huge issue, but compound that with all the other technologies constantly being developed and updated. It’s a lot to keep up with.

Python 2 scary ghost

Bad resources and low support 🔗

Finally, learning computer science is hard because so often, the first introduction you get is a janky, blurry 11-minute YouTube tutorial that promises to cover the entirety of Computer Science.

Or worse, you shell out $13,500 for a coding bootcamp only to learn that Silicon Valley thinks of bootcamp grads as “not quite prepared,” or a snake oil scam that leaves you “jobless and out $14,400 in tuition and fees.”

Because the salaries for DevOps, Backend Developers, and Software Engineers are so high, there’s a huge market to sell bad resources to people who want to learn computer science to get those jobs. The thinking is that those people, anticipating six-figure salaries, will be happy to spend thousands of dollars or hundreds of hours on bad material.

There are good programs out there, run by real people who want to help computer science learners. But they can be hard to spot.

What’s an easier way to learn computer science? 🔗

Right now, you are fully up to date on the challenges facing anyone who wants to learn computer science. Let’s look at some ways to learn computer science the “easy” way.

I’ve put “easy” in brackets. Learning to code isn’t ever easy. But there is an easier way for sure.

Get your game face on 🔗

The most important thing you need to realize is that coding can be fun, even addicting. The feedback loop between trying something and seeing if it works or not is almost instantaneous. And the rush of building something yourself and getting it to do what you want it to? It’s incredible.

The problem is that it’s easy to forget that, because computer science is hard. You should be a little uncomfortable, because that’s how you learn best. However, if you get into the mindset that coding is a game, that it’s hard but enjoyable, and start building and deploying things, then it’s a lot easier to learn computer science.

Practice with a plan 🔗

When I wanted to learn painting, I thought I’d start with a self-portrait. I see my own face every day * how hard can it be to capture it? That’s why my very first painting super sucked. I went into learning to paint without a plan.

Natalie Self-Portrait

When you learn computer science, you should go in with a plan. That’s how our founder Lane built Boot.dev. He developed a learning path that forces you to delve deep into programming fundamentals and write a ton of code. At the end, you have portfolio-worthy projects, a deep understanding of computer science and back-end development, and loads of coding practice.

Look for community 🔗

This is one of the toughest factors in learning computer science – it can be lonely out there. That’s why one of the best ways to make it a more enjoyable journey is by looking for friends, colleagues, and peers.

Boot.dev has a thriving Discord group complete with areas to show off your latest project, compete on leaderboards, or just chat about what’s going well. Kaggle is another good place to find community as you work through computer science fundamentals. And of course Reddit has a thriving computer science community in various subreddits. Check out r/WebDev, r/LearnProgramming, and r/BadCode for a few places to start.

Don’t cut corners 🔗

Finally, the easiest way to learn computer science is by putting in the hours. It’s always tempting to look for shortcuts. But they don’t work. Don’t spend time and energy looking for hacks or shortcuts.

Instead, try things, get things wrong, rebuild, and deploy. Share your work and get feedback. Give feedback yourself. Try things that are slightly too hard, and learn as you go.

What’s the future of computer science? 🔗

I’ve written about the future of computer science before, and my main conclusion was that it would be hard to predict. After all, even four months ago, could anyone have predicted that AI text generation would be as popular as it is today?

That being said, let me get out my crystal ball and make some educated guesses.

Careers in Computer Science 🔗

There are no guarantees, but it’s a safe bet that anyone learning computer science is still more employable than a non-computer scientist. Even with hiring freezes, layoffs, and no-code, computer science is still projected to be the second-most secure job in the United States, only behind mathematicians.

It’s worth thinking about whether AI will replace or threaten computer science careers. I mean, when I ask ChatGPT to complete a problem we challenge Boot.dev students with, it was able to complete it correctly (though Bard, Google’s competitor, is not yet trained to do so.)

Salaries in Computer Science 🔗

I can’t predict what computer science salaries will be in 2033, but we can extrapolate a little by looking into the past. Ten years ago, the median U.S. salary was $52,250. The median salary for computer and information research scientists was $109,260. High even then!

In 2023, the median U.S. salary is $53,490 a year, an increase of around 2.4%. A computer and information research scientist earns a median salary of $131,490 in May 2021, an increase of around 20.3%.

While wages have stagnated nationally, computer science is a skill that translates to a much higher salary. And there’s a huge range of opportunities in the highest-paid computer science jobs – you could become a DevOps specialist, a Cloud engineer, or just a regular software developer.

stack overflow highest paying jobs

Source: 2022 Stack Overflow

How hard is Computer Science vs Engineering, IT, or Math? 🔗

When thinking about how hard Computer Science is, it’s worth comparing it to other famously difficult disciplines. How hard is computer science compared to math? What about engineering or IT?

In my view, it’s the same difficulty level. Computer science, engineering, IT, and math all require the same conditions for success. You need to practice things hands-on to really “get” them. You need discipline to sit down and study underlying fundamentals before you understand how things work in practice.

However, the difficulty of computer science versus math, IT, or engineering also comes down to personal preferences. Personally, I found it easier to dedicate myself to the intricacies of Python versus the subtleties of a differential equation. You may be different. But the hardness comes down to what you like or find hard, rather than anything innate about computer science.

Computer science isn’t too hard for you to learn 🔗

That’s the real conclusion here. Is computer science hard? Yes. Insurmountably so? No. It’s within the range of possibility for you to learn computer science, as long as you’re in it for the right reasons.

If you think you’ll get rich quick, computer science will be too hard. If you think it’s the kind of thing you can simply read about, computer science will be too hard. But if you go into learning computer science with the right attitude, a plan to cover concepts, and the determination to apply yourself? Computer science isn’t too hard at all.

Find a problem with this article?

Report an issue on GitHub