I am sitting in a room with another 6 candidates.
My hands are sweating and my heart pounding fast. It's hands down the most anxious I've felt my entire life. The door opens. The guy calls my name. It's my turn. I want to run away, instead, I stand up and mechanically follow him out of the room.
This is not a software engineer interview.
This is a simulator test to be an airline pilot.
Developers are not the only ones doing scary interviews, aspiring pilots go through a sh** load to get a job. If you are wondering, I failed that interview 🤷♀️. But fast forward to today, I am glad I did.
What both interviews have in common is that they require huge preparation.
And the single skill that will get you in is DSA Data Structure and Algorithms
Why? Here's:
Reason #1 You Need them To Pocket The Fattest Paychecks In The Industry
Not sure about you but I work for the money.
I'm not a greedy dude, I couldn't care less about material stuff(I still use clothes from 10 years ago). But money buys something nothing else can. Freedom. And I want that very much.
Mastering DSA is the fastest way to make +100k/year(not the easiest)
Whether you like them or not, if you don't learn them you are missing out on the potential to be working for the coolest and highest-paying companies out there. Unfortunately(or fortunately for those who mastered them) that is how most big companies to interview.
The fastest you accept that this is how things work, and start putting in the work. The fastest you'll land your dream job dream paycheck.
Reason #2 They Are The Cornerstone Of Computer Science
I remember watching a mock whiteboard code interview on TY(Clement's channel) just after starting to learn to code.
The problem seemed so complex, so out of my league I literally had no clue what was going on. Somehow the idea that I could have the knowledge to solve that kind of problem exited me. But I had a sea of concepts to navigate to get there.
I've barely come a few miles off the shore.
All software is built on top of DSA.
The algorithm controls the logic and flow and data structures organize the data efficiently. This stuff won't be out of date next year(like javaScript frameworks) it hasn't changed since it was created. It's what I call perpetual knowledge. It makes everything else you learn after make more sense.
You and I should spend our time using the ratio:
80% foundations
- Algorithms
- Data structures
- Design pattern
- Mastering 1 Language
20% on the rest.
- Frameworks
- Tools
Reason #3 It Sharpens You Problem Solving Skills(The Most Important Skill In Life)
The first few Leetcode puzzles I tried to solve were both eye-opening and discouraging.
I didn't even know how to get started. I didn't know what the question was asking for. Problem-solving is a skill just like any other, it requires you to learn and practice to improve.
My axe was dull.
You are probably not going to be implementing merge sort or Dijkstra's algorithm on your daily job. Not even in Google.
These problems are actually much harder than those you'll face daily. It's more like: if he can solve these problems he won't have a problem with his daily tasks. Companies want to know what is your thinking process for solving a problem(do you ask for clarification? for help? can you clearly explain what and why you are doing?)
Problem-solving is the most sought-after skill in the industry.
It's a sure way to fast-track your career.
Reason #4 It Improves Your Ability To Understand Complex Topics
Have you tried reading a DSA book from cover to cover?
If you didn't fall asleep before the end of the first chapter you are my hero.
The most effective way you and I learn anything is by using active learning methods(learn it, code it, run it, and test it). Especially complex topics like DSA. You won't learn it by passively reading a book or watching YT videos(no matter how many). You don't have to reinvent the wheel, smart people have developed systems that we can borrow to learn complex stuff.
I like using Feynman's Technique for most things.
Mastering DSA will show that you, above all, know how to learn, have a system to understand complex stuff, and can break down complex topics into understandable bits. And that is a skill that not a lot of people have.
Tell me, if you have mastered DSA(you can solve and explain most problems) do you think you'll have any trouble understanding any other CS topic?
And to top it off it shows you are committed and persistent.
Reason #5 It Gives You All The Tools You'll Need To Do Your Job Better And Faster
Think of a carpenter that only has a hammer and a handsaw.
He might be able to get away with those two but in most cases:
- screws would be a better choice for fastening
- a jigsaw for irregular cuts
- a circular saw for long-straight cuts
He would do his job 5x faster and better just by using the right tools
It's like the old saying: If you only have a hammer every problem will seem like a nail.
Then, this same tradesman finds a bag of money and buys all the tools, and signs up for workshops to learn to operate all of them given by master craftsmen. This guy would easily double his earnings after that, wouldn't he?
That is how I see learning DSA for devs.
The difference is that we don't need to find a bag of money, you can learn it all for FREE online.
This is the greatest advantage of a tech career.
You can train as much as you want. It's only up to you.
Reason #6 All Of The Above Will Make You A Much More Confident Dev And Person.
Do you know anyone with sloppy skills but that somehow gets great jobs?
I bet this guy is confident.
At the end of the day knowledge alone will only get you so far(80% of the way). You have to convince people that you know what your CV says you know. And they have to believe it to hire you.
Scott Adams the creator of the comic strip Dilbert in his book “How to Fail At Almost Everything And Still Win Big” tells that he bullshitted his way to the top of the corporate world simply because he was good at interviews. He was a good communicator and therefore good at making people believe he was capable.
If you are confident you show that:
- you value yourself
- you can take risks
- you can meet new challenges
- you can deliver
And last but not least it helps you get a job.
My Plan To Master DSA
I don't plan on memorizing the implementation of every Data Structures or Algorithms.
This would be like cramming for an exam. You might pass the exam but 1 week later you won't remember a thing. My intention is quite the opposite. I want to chuck DSA into my long-term memory.
I want to persist this knowledge in my hard drive, not my RAM.
Here is my plan:
- The roadmap
- The most common patterns
- Practice the blind 75 questions
- I'll use the Feynman Techique and storytelling to make algorithms more memorable
I plan on writing posts as I go.
Conclusion
It's 11:53pm on a Saturday night.
I am the only one awake at home. I am working on my consistency by writing one article per week for at least 6 months. So here is the wrapper.
If you don't plan on interviewing for a FANG(like me, at least not soon) I think you should still do it.
- It will make you a significantly better programmer It will give you a Free confidence boost
Grind now, and rip the benefits later.
Time to hit the sack.
Thanks for reading!
If you like this article:
Leave a comment (You can just say hi!)
Let's connect on Twitter @theguspear
Catch you next week,
Gus.
Top comments (5)
The scariest and freaking out experience I heard about the interview was 12 high managerial ranking members interview you at the same time. A big airlines. It would make you shaking with 12 pairs of eyes.
I have learnt html, css and some javascript. Then I used them with the cms frameworks I built few websites. Then I have few ideas on small community social platforms and found that I needed to learn data structure like tree and graph, etc and design pattern.
The analogy I can relate is frontend web developers who know html, css and javascript like a interior designer; while backends are like architect and those who are good at data structures, design patterns and their relationships are architects with civil engineering background.
It has always been a pleasure to read your articles. Your articles are structured, insightful, real life-saving with more human touches.
My intentions and goals in dev is to build Italian jobs/ocean eleven teams on fun, rewarding and fulfilling projects in which all the members enjoy working in. Also, to be well-versatile and flexible flow on working projects with ease.
Hey Alex, Thanks for your comment!
In my airline interview there were 2 master captains.
I was cornered haha.
Love the interior designer X architechts analogy. It motivates me to know that you like what I write. I see that you already nailed the foundations, that is the most important part.
Keep building and keep coming back to the foundation.
Good to hear from you.
Gus
haha ... I think I have to change the words of Italian Job or ocean Eleven as both were heist and always made people think I am trying to do bad things. I could feel the chatting atmosphere shifted. XD My intention is to forming different dev tech team to complete projects. I have been having wishful thinking if I could team up with any developers flexibly and versatile to finish fun projects.
To be honest, I didn't comment on that part because I didn't get it 😂.
These days I am pretty sure you'd be able to find devs(with free time) to team up for fun projects.
Have a great week Alex Heist Ahaha
FFDFDF