One of the few things that developers can agree on is that the interview process is terribly broken. There are ideas about how to fix it but the industry has yet to come to a consensus on a better way forward.
Many developers are particularly aggravated by the way some organizations insist on “academic” interview problems that test developers skill with algorithms and (Big O) algorithmic analysis. The argument is that these types of problems are often irrelevant to the job, rewarding antiquated knowledge over practical skill, and are biased in favor of developers with more time and resources to spend on preparation.
Now, before we continue let me get this out of the way:
I agree with those arguments!
As a developer with social media accounts I am also inundated with jokes, memes, and tweets that essentially boil down to “Big O is dumb” and I worry that reductionist platitudes are unfairly tainting how new developers view important tools and techniques.
Sometimes it’s really important
Maybe your dream job doesn’t require a lot of data and compute, but that doesn’t mean it’s not important for others. Algorithms, data structures, and Big O can certainly come in handy here, but so does system design, scalability, and having a good grasp on the numbers. I don’t know how to rank the importance of these subjects but I’ll wager that the developers working on things like databases, search engines, operating systems, and graphical rendering (and many other fields) are critically dependent on having a shared and unambiguous language for understanding how programs scale in terms of space and time complexity.
If you are interested in these types of subjects, then you are going to need to study up on the underlying principles. I agree that the developers who face these types of problems generally have more time than an interview takes to optimally solve them but it is important to show your interviewers that you share (or are capable of) the same basis for precise communication.
Examples:
- LSM vs B-Trees for databases
- The Dynamo Paper
- The Big Table Paper
- Data Structures in Operating Systems
- 3D Rendering Techniques
Also, algorithms are awesome!
Having a good understanding of algorithms and data structures is like a super power. I’ve seen (and probably written) lots of …uh…interesting…. solutions for dealing with dependency management when a simple “top sort” would have done the trick faster and more correctly. Being able to recognize and classify a problem can go a long way towards solving it. Additionally, perusing algorithms can lead to sparks of inspiration, letting you solve problems that you didn’t even realize you had.
Here’s a list of known algorithms to get your motor running:
https://en.wikipedia.org/wiki/List_of_algorithms
Summary
Interviewing is difficult with many organizations cargo culting the FANG interview process. Despite that, the study of algorithms, data structures, and algorithmic analysis is still really useful for many programmers, and it’s also kinda awesome.
PS: Looking for some resources to get started? Check out these great articles on dev.to!
PPS: Like this kind of topic? Check out the podcast in your app of choice!
Top comments (7)
I completely agree, plus I'd be bloody useless on Codewars if I didn't have a couple search algorithms under my belt 🤣
Hah true! Also, advent of code is coming up soon. I really want to finish this year!
urgh, advent of code takes over my life every year, and I can never bloody finish it.
I love advent of code, I've also never been able to finish :)
Also, if you like codewars check out my site Coderbyte I think you'd enjoy all the challenges we have!
Ooh, cool! Will do, thanks!
I'm over a decade into my career and I still can't remember Big O. I would have to make a video tutorial series just to prove I had the knowledge at one point because its information that just doesn't stick.
That handful of times I needed to optimize something it was very easy to find that information online.
I literally use Cracking The Coding Interview to prop up my monitor and I've gotten more value out of that.
We can agree that there is value in knowing Big O and algorithms though it's questionable its effectiveness of choosing good candidates in the interview process.
Its normally boils down to "I took CompSci in Uni and they drilled me on these things, and so you need to know what I know and think like I think or you must not be able to program"
I'd watch that series!