Will I Really Use Data Structures and Algorithms as a Programmer?
Are they useful or simply a way to weed out applicants?
By Jeff Ammons 2/11/2018
It was an interesting week.
In the same week one of my classes reached Data Structures and Algorithms, I ran across two separate discussions of how important such knowledge is for a working developer.
First, I had a conversation on Slack (Tech404.io) with Michael Alves who asked if a working developer (specifically a front-end dev) really uses what they learned (or should have learned) in a data structure and algorithm course.
My response was this:
You won’t likely use it daily in the sense of “Well time to write my own stack implementation and sorting algorithm”, but you will use it in the sense of understanding how things work. I tell my students when an employer asks you about sorting algorithms in an interview it isn’t because they want you to reinvent the wheel, they just want to know that you understand why the round wheels work better than the square ones…
The second odd coincidence happened during the break of the data structure class.
My wife, Caron, sent a link to a post by Ross Williamson who is an engineering manager on the SketchUp team at Google.
That post is My Advice for Coding Bootcamp Graduates.
In his post Ross points out the deficiency he sees in many bootcamp grads: lack of computer science fundamentals.
I couldn’t agree more!
Ross says he is pro bootcamp and that compared to a traditional 4-year degree:
“The bootcamp is faster and cheaper, and if you take one of the 6 month programs, you’ll get a similar amount of experience as in an undergrad curriculum. You don’t have to worry about all the non-CS classes a university would make you take.”
He went on to say,
“The problem I see with the bootcamp graduates is that they lack ability in Big-O analysis. A buddy of mine just went through one of the bigger ones, and he told me that they spent about a week on Big-O. They just don’t have time to cover it in depth.
Look, I understand that you rarely have to analyze code on the job, and some would consider these exercises only academic. But if you can’t tell the difference between O(n) and O(n²), there are going to be times when that matters. And if you can’t do that, we’re going to question your design skills and your problem solving ability. And then we’re going to be reluctant to trust you with the tougher engineering challenges that we see every day.”
This is exactly why the program I designed is 6+ months long and focuses on the basics of coding and the fundamentals of CS, not the latest front-end framework.
In my 25+ years as a programmer, only very rarely have I whole-cloth created my own basic data structures (stacks, queues, trees, etc.) or written sorting algorithms, but I did use that knowledge to pick and choose which libraries to use and whose Stack Overflow answer to trust!
Ross’s recommendation to bootcamp grads is to take two additional classes:
Put those together with a 6-month bootcamp, and you have a sound foundation for a dev career.
In my classes I try to give students a really solid introduction to data structures, algorithms and algorithm analysis, then leave them with resources to learn much, much more.
My advice has always been:
A basic understanding will get you your first developer job, a solid understanding will get you your later, better jobs.
Too often I see beginners lured into unrealistically short bootcamp programs that promise far more than they can deliver.
For a true beginner that’s problematic because they don’t have enough experience to understand that, no, you can’t really become a good software developer that quickly.
It takes time.
Your brain can only absorb information so quickly.
It also takes practice.
You can’t learn to play the piano by sitting through 8 weeks of super concentrated music theory lectures blown at you in high speed so the school can bring in another batch of students to maximize profits.
You have to practice actually playing the piano.
For months or years, not just a few weeks.
For me this means I have a far easier time attracting students who already have some experience in the industry.
Whether they are front-end devs who want to go full-stack, junior devs who want to level up, or long-time developers using older technologies, they understand the value I’m offering.
I have taught students ranging from absolute beginners to people with BS and MS degrees in Computer Science, and they all tell me that my low-level, nuts-and-bolts approach to learning helped them become better programmers.
So, if you are sitting on the fence either as someone who want to start a career as a developer, or someone who wants to advance to a higher level as a developer, I’d love to help you out!
Check out our courses here at CCALearn.Tech so you can learn at your own pace!