How I cracked the coding interview without a CS degree

coding interview on whiteboard

I graduated with an industrial engineering degree from Northwestern in 2013. Today, I work as a robotics software engineer programming Roombas (we’re hiring btw – PM if you’re interested!).

In software engineering (unlike consulting/finance where you have to look the part & have attended a top school), if you can code, you can get hired. Having gone through it recently as a non-CS major, I wanted to share my journey towards cracking the dreaded coding interview.

But first, here’s my career progression to date for some background:

  • 2013 – 2015: ITLP (IT Leadership Program; rebranded to DTLP now with a more technical bent) at GE

This was a rotational program designed towards a career path as an IT strategy leader (many P&L CIOs at GE came from the program) where I worked on various 6-month projects in GE’s Oil & Gas unit. It was a mix of project management & business analysis with exposures to cybersecurity, digital marketing, acquisition/integration, data analytics & more. The program & the leadership training were world-class, but I didn’t feel technically challenged.

  • 2015 – 2017: Firmware engineer at GE

After ITLP, I wanted to get away from project management & instead, code for a living. I loved building software & getting to utilize math/engineering/logic in the process. While I didn’t have a CS degree or professional coding experience, I leveraged my ITLP performance reviews & side projects (websites & basic mobile apps) to land a firmware engineer role to work on digital valve positioners (PID control). Fortunately for me, the interview process was mostly non-technical.

  • 2017 – present: Robotics software engineer at iRobot

While I loved my team & the role at GE, the long commute was wearing on me. I interviewed with ~5 companies, all of which had some form of coding interviews.

While there are 2 components to passing the coding interview (technical & mental), I’ll cover only the technical component in this post & save the mental aspects (just as important!) for the future.

0. Learn Python (1 week)

python

If you’re a novice programmer & can’t call yourself at least an intermediate user of a programming language (meaning you’ve programmed 10K+ lines of code in that language), choose Python.

Some exceptions:

  • You’re interviewing for embedded software/firmware engineer roles (C/C++).
  • You’re on a time-crunch (less than 3 months to land a job), in which case, just go with your best language.

Spend a couple days learning the basic Python syntax & delve into Algorithms (see below). You’ll learn more Python along the way so don’t worry about knowing all the intricacies of the language yet.

1. Watch/read Sedgewick’s Algorithms (~2 months)

professor sedgewick lectures on algorithms

Yes, this is the famous red book that every FANG engineer swears by. No, you don’t need CLRS. The red book is enough for the entry-level coding interviews you’ll get.

I recommend NOT starting with the book though. Professor Sedgewick, being the angel that he is, has a corresponding video lecture series on YouTube. So I’d recommend you:

  • watch the videos for the chapter/concept first (trust me on this one; most algorithms & data structures are often too complicated to explain via pictures or text)
  • read the corresponding chapter in the book for reinforcement
  • rewatch the videos as necessary

Take your time with each concept. Algorithms & data structures take time to truly grasp. Expose your brain to them repeatedly over extended periods & eventually, they’ll click. For example, if you’re struggling with understanding priority queues, just know that they exist, move onto the next topic & come back after a good night’s sleep.

Remember, the algorithms & data structures you’re learning took some really smart people months and/or years to come up with them; you are not supposed to fully understand them after studying it for mere 10 minutes! So trust the process & keep at it; you’ll get there.

2. Cracking the Coding Interview (~3 months)

cracking the coding interview book

CTCI is the coding interview bible. However, don’t open this book until you’ve gone through the Sedgewick lectures.

I read CTCI cover to cover, but didn’t code up every question in it; instead, over the course of ~3 months, I:

  • coded up the first few questions in each chapter on an IDE
  • attempted remaining questions on paper in pictures/pseudocode & compared them against the solutions
  • read the solutions & moved on for the most difficult questions (usually the last few questions in each chapter); there’s diminishing return on these since they’re less likely to be asked (unless you’re going for FANG)

CTCI solutions are in Java, but I wouldn’t get hung up on trying to understand every Java syntax/OOP concepts (unless you’re going to be interviewing in Java). I coded everything in C (I was targeting embedded software engineer roles).

For reference, by the time I started interviews, I had at least attempted every question in CTCI twice.

3. Leetcode (~2 months)

leetcode algorithms

I love Leetcode. It’s so much fun. But don’t jump into it until you’ve gone through the questions in CTCI!

Leetcode is such a great emulator of real interviews that (FYI, Leetcode/similar platforms are used by companies for screening) I believe treating it as a mock interview gives you the best ROI of your time.

Once on Leetcode, don’t bother timing yourself at first. Start with the “easy”s (note: difficulty ratings aren’t absolute; some “medium”s are really hard, some “hard”s are not) & move onto “medium”s when you feel ready. I wouldn’t bother with many “hard”s (unless you’re gunning for FANG/Snap/Palantir/AirBnB).

Complete ~30 “easy”s & ~20 “medium”s, eventually timing yourself to be able to complete each question anywhere from 15 to 20 minutes. Fyi, I spent ~2 months on Leetcode & solved ~40 questions & read solutions for the ones I didn’t solve.

4. Programming Interviews Exposed (1 month)

programming interviews exposed

If you’re here, you’re actually ready to start interviewing. But if you have some time left over & can’t stand more of Leetcode, pick up a copy of PIE.

By now, PIE should be light reading, but this book has very popular questions & amazing advice on the mental aspects of the interview process. Once you’re done with PIE, head on over to LinkedIn (how I got all my interviews via LinkedIn)!

What kept me going

The best advice I got during my 8-month interview prep was from a reddit post (/r/cscareerquestions) that said:

Every person has a number “X”, where:

  • X = hours of work required to become competent enough to get a software engineering offer.

So if you’re a CS grad, your X may be 50. Mine might be 500, but everyone’s X is finite & reasonable! Keep this in mind during your studies — the more hours you put in, smaller your X gets, & you’ll be that much closer to landing the inevitable software engineering offer.

Software engineering is one of the truest meritocracies; given the high demand for software engineers these days, you WILL get a software engineering offer if you fully stick to this program. So trust the process & good luck!

Leave a Reply

Your email address will not be published. Required fields are marked *