Hero image

The Perpetually Prepared Programmer

Get the research-backed framework to permanently master programming interviews with 95% less effort.

This course is no longer available.

Explore other courses

Course overview

Overwhelmed by Software Engineering Interviews?

Most engineers wait until they are unhappy at their current job before preparing for interviews. But if you use the 80/20 rule and spaced repetition you will spend less time practicing and be ready for any opportunity, giving you leverage to negotiate (even at your current job).

This course is for you if...

01

You want to quit your job, but months-long interview preparation burns you out, so you end up losing steam and staying where you are.

02

You dream of retiring early, but quietly settle for 5% raises when you could be getting 30% or more somewhere else.

03

It's hard to feel secure due to recent unprecedented lay-offs, so you want to hedge your bets and prepare for any scenario.

04

You're a skilled engineer, but feel trapped doing busywork at a job where you aren't learning, and keep getting passed over for promotion.

Key outcomes

Use the 80/20 rule to identify a core set of Algorithm and System Design problems, reducing the time you need to spend preparing and improving your ROI.

Build a spaced repetition flash-card deck that feeds you questions in the optimal order so that you permanently internalize them with 95% less time, staying interview-ready for all future job searches.

Attract more offers, increasing your leverage during negotiation (even during review cycles at your current job - get that raise or promotion).

Develop a habit to overcome procrastination and burnout by using a system to always know what to do next (without having to think).

Grow with a community of like-minded career optimizers who share ideas and hold each other accountable.

Get 1:1 help and shape the course to cover what you need most.

See what people are saying

        I teach information retrieval, and every semester I point my students to Alex’s blog and code to learn about succinct data structures. He is remarkably gifted in explaining things in a fun and accessible way, inspiring my students to love the subject!
Edgar Chávez

Edgar Chávez

Senior Researcher at CICESE, Mexico
        I stumbled across Alex's blog a few years back and became super interested in wavelet trees and succinct data structures in general. He writes thoughtfully and with great reverence for his craft. I find myself rereading his posts periodically and have recommended them to other engineers to help them grow.
Nick Scheiblauer

Nick Scheiblauer

Director of Engineering at Flickr
        Alex has many years of experience creating content around problem-solving, data structures, and algorithms. I'm a fan of his technical writing and his expertise is undeniable. If I start job-searching again this would be the first class I would take.
Hide Shidara

Hide Shidara

Software Engineer at Collective Health | Researcher | Ex Instacart | Ex Indeed
        Alex helped me with Computing Theory while I was at university, and is an amazing tutor. He is very patient and his knowledge is sound, and he makes complex topics easier to digest. He has a way of understanding where your knowledge gap is, and helps you to bridge that gap.
Charles Atton

Charles Atton

Tech Lead at Next Technik
        Alex has a natural ability to distill complex topics and make them fun, which made it a pleasure learning from him while we worked together.
Nitin Passa

Nitin Passa

Senior Software Engineer at Two Sigma | Ex Senior Software Engineer at Cruise
        Alex has turned a normally daunting task like technical interview prep into a systematic game and habit I can stick with!
Haejin Jo

Haejin Jo

Software Engineer at HackerOne

Meet your instructor

Alex Bowe

Alex Bowe

Senior Software Engineer at Cruise | Advanced Algorithms PhD | Algorithms Teacher at RMIT and Hyper Island | Lifelong Learner

Over my past 5 years as a senior software engineer I have interviewed hundreds of engineers. The difference between a prepared candidate and an unprepared candidate is night and day, (and the best candidates get the most offers, allowing them to effectively negotiate).


When I finished my PhD in advanced algorithms in Tokyo, I knew that I didn't want to work just anywhere. I also wanted to catch up financially as quickly as possible.


I spent 6 months grinding LeetCode and doing hundreds of mock and real interviews. I got an amazing job, but I was left feeling burnt out.


Then I realized that if I use spaced repetition (a technique I learned from studying Japanese) I could get better results with less hassle. And better yet, it was fun.


I've taught algorithms at RMIT university in Melbourne, Hyper Island in Stockholm, and on my website (alexbowe.com). Now I'm building this course to teach you how to build this habit too.


If you're a software engineer who wants to find a new job or optimize your pay while reducing the amount of preparation you have to do, this course is for you.

Course syllabus

14 lessons • 3 projects

Week 1

Jan 18—Jan 22

    Start Here: Orientation

    Just a few things tips to help you get started :)

    • ✍️

      Acquaint yourself with the schedule (and let me know if there will be conflicts)

      Submit by Jan 18
    • ✍️

      Introduce yourself!

      Submit by Jan 20
    • 📄

      Schedule 1:1s with me here

    Effective LeetCode

    • Apply the 80/20 rule to identify a core set of LeetCode problems to focus on.
    • Utilize spaced repetition to simplify your practice loop.
    • 📄

      Workshop 1 (uploaded after session ends)

    • ✍️

      Project 1: Set up Anki

      Submit by Jan 20
    • 📄

      Bonus: How to Build a New Habit (James Clear)

    • 📄

      Effective LeetCode Workshop (Dec 2022)

Week 2

Jan 23—Jan 25

    System Design and Behavioral Interviews

    No module content yet

Bonus

    Bonus: System Design

    • 📄

      The System Design Primer

    Bonus: Behavioral Interviews

    This course focuses on the 20% of things that will give you 80% of the return, and most interviews will be Data Structures/Algorithm or System Design interviews. Doing a few mock interviews should cover most of this, but if you want to prepare for the Behavioral Interview, here are some resources.


    Thankfully these are easier to learn than the technical interview types, and most of the time the interviewer is just trying to get to know you better. But it'll help you put your best foot forward if you can cache some answers to commonly asked questions. Choose your favorites from the following resources and load them into your Anki deck so can remember the key points.

    • 📄

      The 30 most common Software Engineer Behavioral Interview Questions

    • 📄

      Interviewing.io guide to Amazon Leadership Principles

    • 📄

      How to not suck at Amazon Leadership Principles (Interviewing.io)

    Bonus: Negotiation

    One of the biggest benefits of being perpetually prepared for interviews is that you will easily be able to interview every year or two, allowing you to know your market value and use competing offers as leverage to negotiate (even at your current position).


    This benefits from negotiation skills. This is outside the scope of this first cohort, but here are some fantastic resources on how to negotiate.

    • 📄

      Calibrate your expectations with levels.fyi

    • 📄

      Negotiation 101: How to not suck at Salary Negotiation (Interviewing.io)

    • 📄

      Negotiation 201: Advanced salary negotiation tactics for software engineers (Interviewing.io)

    • 📄

      Negotiation 301: A Case Study for Software Engineers (Interviewing.io)

    • 📄

      Live Salary Negotiation with an Expert (Interviewing.io)

    • 📄

      How to Negotiate When You're Screwed (Interviewing.io)

Course schedule

2 - 4 hours of contact time + projects

  • Wednesday, January 18th

    5:00 PM - 6:00 PM PST

    Workshop 1:  Intro, 80/20 rule for LeetCode, Anki & Add-ons

    • Introduction to the course: The Perpetually Prepared Mindset.
    • Analyze LeetCode to identify the build a data-driven spaced repetition deck to rapidly internalize interview problem patterns.
  • Monday, January 23rd

    5:00 PM - 6:00 PM PST

    • Create a smart document that automatically sync notes to your spaced repetition deck.
    • Systematize your System Design preparation.
  • Co-working and Q&A sessions

    2x 45 mins (more as needed)

    • Stay focused and accountable by working with your classmates.
    • Bring any questions for me to go over.
  • Projects, Readings, Videos

    1 - 4 hours

    • Projects that help you interact with each other and share ideas, as well as make your setup your own.
  • 1:1 Consultations

    30 mins as needed

    • Schedule 1:1 time with me to go over anything that you need (even if it isn't in the syllabus).

Put interview preparation on auto-pilot

Track your progress, project your finish date, and always know what to study next.

Track your progress, project your finish date, and always know what to study next.

Learning is better in groups!

Learning is better in groups!

Accountability

This course builds on live workshops and hands-on projects. This active style of learning will keep you accountable, unlike passive courses.

Network Effects

Surround yourself with like-minded people who want to grow alongside you. Bounce ideas, share leads, and learn from each other.

Feedback Loops

Since this is instructor-driven, you are able to shape the course! For example, this course won't cover algorithm basics, but if the need arises I will happily go over them.

Frequently Asked Questions