I originally wrote this series in 2017, while mentoring a friend on how to succeed at technical interviews. It’s also a big reason to why I started this blog. A BIG thank you to my friend Paul who taught me and helped me understand all of this, and who read drafts of this series.
Being Self-Taught and Scared of Computer Science
As a self-taught developer, whenever I’m faced with a problem, I take a pragmatic approach to solve it. This may involve using some old tricks I learned, or simply to ask Google for some help along the way. It’s been an approach which served me well in the past and has led to a career I’m very happy with, working for startups as well as larger, established businesses.
However, I always felt that chip on my shoulder for not knowing computer science basics and I’ve been in interviews and everyday conversations where I felt lost due to this fact. On top of that, I always felt the threshold to learn these basics (funny as they are called basics) was really high and I never took the time to approach the subject. I was scared of it and always put it off with excuses like being a good app developer doesn’t require this knowledge, or investing time learning other areas like design and user experience. Both of which, I think, are still mostly true, but it prevented me from being a better programmer.
Learning Computer Science
In 2017, when it was time for me to take a new step in my career I had my goal set high. I wanted to join a top-tier tech company in Silicon Valley. It quickly became clear that to succeed with the questions asked at these companies I needed to step up my interviewing game and read up on those basics I’d been avoiding.
Once I started digging into the subject, I realized that learning about data structures and algorithms wasn’t as scary as I had painted it out to be. Even if you rarely need to write a linked list or a sort algorithm (since there’s probably a very optimized solution available for you), understanding how they work and where they can be applied is important for any software engineer. In the end, knowing them will make you a better developer and better prepared for technical interviews.
Quizzes at Technical Interviews
A lot of people say these types of interview questions are not the best way to gauge the knowledge of a candidate, and I agree, there are better ways. Since the first draft of this article, I’ve held hundreds of technical interviews myself and I never ask these types of questions. There are better ways of getting to know the candidate and their skillset, but that might be the subject of another article. However, having the knowledge will make you better at your day-to-day job and being prepared for these types of questions is still helpful, because they are very common.
The goal of this series is to share what I learned to improve at those interviews and to hopefully help people in a similar situation to mine. Maybe we can make those pesky interview questions obsolete (aiming high!).
If you still need to be convinced why you should learn about data structures and algorithms, read this introduction: Why Algorithms - Swift Algorithms Club. I’ll be linking a lot to Swift Algorithm Club because I find their guides and code easy to follow.
In the first two articles I’ll cover common data structures and algorithms which are good to know. I’ll give them a quick introduction and provide some links I found helpful for studying them further. In future articles I will cover common and mobile-specific interview questions (focusing on iOS due to my background), and maybe we’ll dip our toes in memory management.
- Data Structures
- Interview questions (in progress)
- Mobile app interviews (in progress)
- Memory management (TBD)
Make sure to subscribe to my newsletter below to be notified when the new articles are published.