A lot of developers come to me asking a lot of different questions, but one of the seems to be a real and big question for most developers:
“John, do I need to learn algorithms and/or data structures?”
In this video, however, this guy asked me a slightly different question than most of the programming world wants to know. What if you were a web developer? Should you still bother about learning algorithms and data structures? Watch this video and find out!
Transcript Of The Video
Hey, what's up? John Sonmez here from simpleprogrammer.com. Hey, I just wanted to give a quick thanks to one of our sponsors at Simple Programmer which is DevMountain Bootcamp. You should go check them out. The link is in the description. They are a coding bootcamp and they can teach you web development, iOS development, UX design, a lot of good stuff. I get a lot of feedback from a lot of you out there that email me have told me about DevMountain, so I decided to check them out myself. I like what I found. I like their programs. They offer some 12-week intensive programs. They also offer some after-hours programs which I know that some of you will like. Go check them out. You can see the link in the description below, DevMountain Bootcamp. A big thank you to them for sponsoring Simple Programmer.
I got a question about algorithms and data structures in web development. This is a popular topic. You can check out all the videos I've done on algorithms and data structures and learning algorithms here. I should have a playlist for that. This question is from Vinny and he says, “Hi John, I would like to start off by saying your content is incredible. Your work is much appreciated. Now, my question (and I'm sure it is a question many developers ask) is: How important is it for a web developer to know data structures and algorithms? If they are important, how are they used mostly? Thanks, Vinny.”
I'll be totally honest here. As a web developer, needing to know algorithms and data structures, the need for it is not as high as if you're a backend developer. If you're not sure what a backend developer is or what a frontend developer is you can check out the video here I have on what is a backend developer. It doesn't mean that you don't need to know it and it doesn't mean that it's not going to help you at all. Let's think about this for a little bit here.
If you're working mostly as a web developer and mostly on the frontend, what you're going to be doing is a lot of stuff with the user interface. You're going to be creating a lot of controls and the visual aspect of it and not maybe crunching data as much, but that doesn't mean that you're never going to do something that requires an algorithm or data structure.
The thing is like if you think about it, algorithms and data structures it's like having a really good toolbox with a lot of tools in it. Now, you might be able to get by with just a hammer and a screwdriver and a few things. You might be able to figure out how you can use nails and hammer and screwdriver and screws for just about anything that you need, but it's not going to be the best and it's not going to be the most efficient thing.
As a web developer, yeah, you might not need a complicated toolbox, but if you have those things, if you have that, you're going to have more possibilities. You're going to have more things—and here's the other thing is that, like I said, as a web developer, you might not need this stuff and you might see ways that you can use your existing tools and what you know, but until you understand this stuff, until you actually take a study and you really understand data structures and algorithms you're not even going to see the opportunities where you could use them.
You're going to be a little bit naïve. As a web developer not knowing this stuff you might be getting by on your job and you might be doing just fine, but you don't know what you're missing. This is one of those unknown unknowns because you don't—once you see things differently because you have that ability then everything—they always say that when you have a hammer everything looks like a nail. That's sort of the mentality that you can get into when you don't have this larger repertoire of skills in software development.
I would basically say this, if you're starting out, if you want to get into web development, maybe don't worry too much about the algorithms and data structures. You don't have to have necessarily a really, really solid computer science background. This is where the web—the bootcamps come into play. A lot of developers go through bootcamps and then a lot of senior developers or experienced developers say, “Oh the bullcamps—” the bullcamps, they call them bullcamps, right? “The bootcamps are bulls* because you're not actually learning the real software development computer science stuff. You're not actually learning how to create algorithms and data structures and all the fundamental stuff. You're just learning how to do the web development part of it which is not—you're not a real programmer.”
Not true, okay? But you can't stop there. It's a great boost. It's a great starting point if you can go through a bootcamp, if you can get enough knowledge and experience to actually start working in the field, but then you're not done. Now you go back and now you learn the data structures. Now you learn the algorithms. Now you learn this kind of stuff that is going to make you better and give you a deeper more thorough understanding and knowledge of your field. Now, this toolbox, you're going to know how to use it. I think a lot of developers that go through college, one of the problems that I see is that they learn data structures and algorithms, or they sort of learn them. They get through the test and then by the time they get into the real world they've forgotten most of that stuff because they haven't seen how to actually use it. If I show you how to use a bunch of tools, if I pull out this—someone who's a real good woodworker and I pull out their toolbox and I show you the lathe and all the stuff and I show you how to use all that stuff, just in a demonstration, but you're not actually building anything of real use with it, it's not going to stick and it's not going to be useful to you, right, when you start doing some simple stuff. If you're already working, if you're already working as a woodworker or something like that and now I introduce some tools to you and I show you how you can use these tools to make your job easier, wow, that's going to stick with you. It's going to make a lot of sense. You're going to understand that stuff and it's going to be more valuable to you.
It's really about expanding your abilities and being able to see problems better through the lens of someone who has the capability, who has the toolbox that's going to allow them to be more effective. That's what you've got to think about. I'll just basically say this, I'll end with this and I'll say, “Look, if you're a web developer currently, you should probably invest some time in learning data structures and algorithms. If you're not a web developer currently and you want to become one, don't worry about that stuff for now unless you need it for an interview, but get your web development skills. Start working, start actually building stuff and then start learning some of these data structures and algorithms and you're going to see how you can use them and that's going to benefit you.
All right, I hope that helps you. If it did, go ahead and click that subscribe button below. I do about 2 to 3 videos a day. If you have a question you'd like me to answer you can email me and I'll talk to you next time. Take care.