Why you Should Learn Computer Science Fundamentals as a Web Developer

Nicolás Mateo Arias Pulido
4 min readApr 12, 2020

--

I'm writing this paper in the middle of the Covid-19 pandemic as a way to distract myself from this whole situation and share my experience. Meanwhile, I hope to inspire you to learn CS. I hope you find it useful :)

Algorithms, data structures, concurrency, design patterns and all fundamentals that a computer scientist has to learn in college may seem useless in a world where you can just learn a framework like React and land a job.

That's probably true — you will not need all this knowledge just for landing a job; in fact, that's how I got my first job. But today I will show you four reasons why you should learn about the aforementioned concepts.

1. You want to know how things work on a deeper level.

There will be a time when you may find yourself stuck in your career. And you will not understand why. this is when it's not enough to learn another language or framework. You need to learn how things work under the hood. This will be a huge step in your professional life. It's going to enhance your understanding of anything you want to learn (as a developer obviously).

For example, most of you have heard about the event loop; the "engine" which makes Javascript asynchronous. If you try to learn how it works, you'll find a chart like this:

https://codenotcode.com/my-event-loop-beebef81cd46

And you will find some good explanations but… Do you now what the difference between a queue and a stack is? What a heap really means?

Maybe, even though you don't know the answers to these questions you will end up barely knowing how the event loop works. But, I'm sure that if you knew these concepts (Stacks, queue, heaps) beforehand, it would be easier for you to learn about it and manage it and in this way gain more in depth understanding of the topic.

And this happens most of the times when you're trying to get deep knowledge about the tools you use everyday.

2. It will upgrade your problem solving skills.

The process of learning algorithms and data structures is tough. At the beginning you feel like it's not for you. You may think that it's only for genius. But DON'T GIVE UP the truth is that it is only a new skill and as every skill it takes time and practice to control it and use it.

The most you read and practice the skill the better you manage it. The amazing part of this is that you are not only learning how to use a linked list, or how a binary search works, you are also becoming a problem solver.

And problem solving skills are not only useful in software engineering. It will train your brain for tackling in a most efficient and concise way any problem you have in your day to day life.

3. You want to work in a top tier tech company.

Most of us when we're first learning to code may dream about working at Google, Apple, Amazon or one of these big companies which are creating amazing things and presume to have incredible workplaces and benefits.

But, do you know how job interviews at these companies look like? Even though in your day to day work you will barely use complex algorithms and data structures, let me tell you that the biggest part of these interviews are just about algorithms, data structures and system design. There is even a whole community of people and there are lots of books and platforms for "cracking the interview".

Let me tell you that if one of your goals is to be part of one of these companies, it's mandatory then not only to learn CS fundamentals, but also to master these skills and being able to do time and space complexity analysis.

How a code interview problem looks like.

4. It's lots of fun.

I know I’ve recognized in the second point how hard is to learn algorithms and data structures. But it's also truth that once you have developed the skills and aprehend the concepts, resolving leetcode or codewars questions become so fun indeed!

At this point this is now one of my favorite hobbies! It could be because I have always loved puzzles and it feels like one of them. Like a chess game where the opponent is the time/space complexity of your algorithm.

Conclusion

If you want to become a better developer or learn fun things, approaching the the basics of CS is an amazing part of this world. The fast answer may be that it is not useful in the short term but I assure you that in the long term it makes a difference. (It is also lots of fun).

I hope this writing had been useful and now you're motivated to learn CS fundamentals. I'm sure you will enjoy it.

All I posted here is based on my personal opinions and what I’ve learnt in my career as a self-taught software engineer. You can DM on twitter @nmariasdev or in the comments below. Any feedback is welcomed.

--

--