Do You Need to Learn Data Structures and Algorithms?
In this post I’m going to answer the question, do you need to know data structures and algorithms to get your first job as a self-taught programmer? Since I have been in this field for some time, people are always asking about data structures and algorithms.
They often want to know how important it is and what are the best resources. I’ll give you my perspective of where I’ve seen it come up in my career and where I’m seeing it come up as far as for people who I coach and mentor.
How important is it for them to learn data structures and algorithms and where does it play a role. Keep in mind this is not just one man’s advice. You should definitely take in multiple perspectives on this.
If you’re new here and you’re wondering who I am. I’m Peter and I mentor and coach people who are looking to teach themselves software development.
If you are looking to get a strong skill set as well as learn strategies to really land that first job, I highly recommend checking out my blog from time to time.
So, let’s answer the question, do you need to have a really strong foundation in data structures and algorithms in order to land your first job when you’re teaching yourself?
The answer is NO!
There’s plenty of evidence out there from people who are posting online on free code camps forums. Even from people who I’ve helped land their first job that sometimes data structures and algorithms don’t even come up in job interviews.
There are smaller and medium companies out there who will simply have you perform a behavioral interview, maybe take home project like pair programming. Data structures and algorithms never come up and that’s all you have to prepare for.
It’s clear that’s not required. It’s not like the bar you have to pass like a lawyer. For example, to become a lawyer in Illinois you have to pass the bar for you to be able to practice in court.
It’s not like that with programming. However, just because I say that, it doesn’t mean that you can just go ahead and ignore it.
Yes you can get a job without knowing about data structures and algorithms.
But here’s the thing.
You should absolutely learn it.
There’s no excuse not to because if you’re going to spend months teaching yourself to code and learning to program, learning about data structures and algorithms is going to put you in the best position possible to land a job, because at the end of the day it’s just increasing your odds.
Learning data structures and algorithms is great and it’s required for working in companies like Google and Facebook.
Also, there’s a lot of middle tier companies who also want to hire developers who understand core CS concepts and who can build code that scales.
So, that’s where data structures and algorithms come into play.
Let me give you a better sense in my own career and path where it has come up and where it has not come up at all.
So, I learned to code four years ago and when I got my first job, the knowledge of data structures and algorithms didn’t come up at all.
I just did the behavioral interview, took a home project and I got hired. Again, the small company that hired me didn’t have a lot of active users so there was no part of our code that really had to scale beyond a certain number that made sense.
There was no efficiency issues.
In the second company I worked for, the same thing again. We didn’t really have to work on anything that scaled. There wasn’t enough users in our system thus there was not enough processes going on that we had to scale so it never came up.
It only came up for me when I realized I want to become the best developer I can.
I don’t want to work at Facebook or Google because I don’t know if that’s for me but I want to be the type of developer who can use different types of data structures and algorithms to write more efficient code if that comes up.
And that’s where I really started learning it.
Here’s what I basically recommend from what I’ve seen.
Data structures and algorithms knowledge can come at any point in your journey and I think it’s best to start learning it when you have a decent foundation and skill set with programming.
It’s a great book and I can’t recommend it enough.
One of the reasons I like the book is because it really simplifies things. It over simplifies some of the common data structures and algorithms concepts that other books just use a lot of math.
So, once you start applying for a job or towards the end of building some of your portfolio projects, start reading a book like that. You could slowly start incorporating it into what you do.
You really want to hit your stride in terms of working on coding challenges that test your data structures and algorithms knowledge that’s going to come more when you’re actually applying for jobs.
The way a look at it it’s like training for a boxing match. You don’t need to be in shape year round. You only need to be in shape when the boxing match comes up.
The same thing comes with practicing your knowledge and skills with data structures and algorithms. You want to be at your peak when you’re actually interviewing for jobs. That’s when you want to spend the most time doing it.
The other book that everybody and their mother at this point has heard about and will probably use when they’re going to be applying for jobs in Silicon Valley or bigger tech companies is “Cracking the coding interview” by Gayle Laakmann McDowell.
It’s a great book with a lot of pages. I love it. However, I would say it’s more for somebody who has a CS background. For somebody who’s just starting out I think it’s a little bit advanced for them.
It’s something you might want to wait to get into after you’ve read the first book or after getting the more basic knowledge about data structures and algorithms.
Maybe it’s a good book for you but those are basically my recommendations.
Again, really focus on your skills with data structures and algorithms more when you’re applying for jobs and when you actually want to interview. You don’t want to spend a lot of your time on this when you’re just starting out to learn to code.
I hope that gives you a better perspective.
Remember I’m not saying you should learn data structures and algorithms or you shouldn’t.
I’m just trying to give you the best perspective that you don’t need to have it but having it really helps especially if you’re ambitious and you’re looking to get a job at one of the big tech companies.
I hope this helps you plan your journey into software development.