With the influx of interest in the edTech site I’ve been building, I’ve been getting a question that I don’t think I had previously taken the time to really think through, “Is computer science hard?”. Like most things, the answer depends on your perspective and current situation. That said, my guess is that a standard computer science education is easier than most of my readers think.
Take as an analogy two friends, one weighs 300 lbs and is trying desperately to lose weight, the other friend weighs 100 lbs and wants to pack some on. If you were to ask them, “is gaining weight really that hard?” You’d get wildly different answers. There are so many factors including appetite, exercise, metabolic rate, starting weight, work routine, etc. In a similar fashion, some of the biggest factors when determining an answer to the question, “Is computer science hard to learn” would be:
- Do you have experience with computers in general?
- Have you taken a good amount of math?
- Do you like to tinker?
- Do you like to look things up and do research on your own?
- Have you ever written code before?
The more of those questions you can answer “yes” to, the easier it will be to learn computer science. That said, no matter your answers, it’s always possible for you to start learning, even without any experience if you have the desire. The important question that only you can answer is “do you want to learn computer science?”.
Some factors that affect the difficulty of learning computer science
1. Do you have experience with computers in general?
It should be fairly obvious that the more you know about computers in general, the more effective you’ll be at picking up a skill that’s intimately involved with them. The less time you’ll need to spend learning how to copy & paste, configure desktop settings, connect to the internet, or open the developer console in a browser, the faster you’ll be able to move.
2. Have you taken a good amount of math?
Assuming your goal is to learn computer science, and not just basic software development, the more math you’ve taken the better off you’ll be. For example, if you’ve never even learned basic algebra it’s going to take a minute to catch up. There’s a surprising amount of algebra and basic math in even the most simple algorithms. Trigonometry and Calculus help a lot also but aren’t as necessary as a solid algebra foundation.
3. Do you like to tinker?
This one has less to do with your experience level, and more to do with your personality, that said, even if you don’t love to tinker and play with problems it’s a trait that can be learned. Once you actually get a job coding and building software systems, you’ll be surprised how much of your job is just tinkering with existing projects to see what makes them tick. If you enjoy looking deep into how stuff works, it will help you to avoid burnout when you can’t figure out why the code isn’t behaving as expected.
4. Do you like to look things up (Google them) and do research on your own?
It’s practically impossible to learn all there is about a field as vast as computer science and programming. You need to get used to the idea that you’ll be spending a good amount of your work day as a developer looking stuff up. You need to not only be comfortable without knowing the answer to everything all the time, but also be competent at finding the answer. No one should ever fault you for not knowing even a slightly-obscure fact about the industry, but you will be expected to be able to find the answer.
5. Have you ever written any kind of code before?
If you’re a coder and are just trying to learn computer science (algorithms, data structures, cryptography, etc) you’ll have a much easier time! Coding, while practically inseparable from CS, is actually a different discipline. Learning computer science is possible with just paper and pencil, but it’s much easier (and more practical) to use code.
Learn Go by writing Go code
I'm a senior engineer learning Go, and the pace of Boot.dev's Go Mastery courses has been perfect for me. The diverse community in Discord makes the weekly workshops a blast, and other members are quick to help out with detailed answers and explanations.
- Daniel Gerep from Cassia, Brasil
How long does it take to learn CS?
Again, this depends a lot. If you plan on taking the university route instead of being self-taught, then it will take four years. If instead, you decide to pursue various online certifications and learn by yourself it can take less time. If you go this route, then you, and not anyone else, are primarily responsible to make sure you cover all the material that you think is most important.
What else makes CS a hard subject?
- Attention to detail. Missing a comma here or a semicolon there can result in hours of frustration.
- Screen time. Spending many hours in front of a monitor can take a toll on your eyes, and sometimes your soul.
- Scope of knowledge. Like I mentioned before, there’s so much stuff to learn, and it can feel overwhelming. Rest assured you don’t need to know everything, but with CS the learning doesn’t stop when you get your first job.
- Abstraction. When designing systems, developers are required to think abstractly. Sometimes you need to build a tool that will be used by others in ways you can’t imagine right now, and yet you’re expected to build it in a generalized manner so that others can integrate with it.
- Relation to other fields. While not always required, depending on your position you may need to learn a lot about a related technical field. For example, you may need to do a deep dive on math, electrical engineering, hardware design, web design, IT maintenance, or product planning.
- Communication skills. There’s a common misconception that coders don’t need to have basic people/communication skills, and it’s not true at all. Being able to write code that expresses ideas clearly, design APIs that aren’t confusing, and document systems in a clean manner are all crucial skills. Even just basic people skills are an absolute necessity because you will most always be working on a team with others.