Achieve Engineering Mastery In Weeks With The

Advanced Software Design Course

by Mirdin

Unleash your full potential as a software engineer:

  • Make yourself stand out from the crowd
  • Eliminate impostor syndrome today
  • Guaranteed transformational results in hours 
  • Rise above subjective debates. Give concrete suggestions your team will understand and respect
  • Escape software influencer dogma. Get your own compass.
  • Join a buzzing community of over 350 top-level engineers who love to help you with your latest design challenge.
  • We will help you towards your goals with 1-on-1 sessions.
  • Curriculum developed based on learning science that works.
  • Over 100 hours of content 100% at your own pace
Liquid error: Nil location provided. Can't build URI.
I Want To 2x My Skills Today
Join the Course. No risk. 14-day refund policy
What is in the course?

Software Design Quiz

99% of software engineers can’t answer these questions 

Ned Nguyen

Ned Nguyen

Senior Staff Software Engineer, Google

As a tech lead at Google, I have always been trying to improve my software design skills. I decided to sign up for Jimmy’s class after looking at the overview of its content.

Jimmy is a fantastic instructor. He spends a lot of time reviewing my homeworks & answering questions. The reading materials & exercises are top notch. Before Jimmy’s class, I had vague ideas of how to write code “the right way.” After this class, I have a lot more clarity in terms of writing good code and designing better software. I find myself better at articulating my design rationale, and having easier time aligning people’s opinions on difficult decisions. My colleagues also said they noticed my code reviews are a lot more objective and convincing.

Bryan Andrade

Bryan Andrade

CTO, Atlas Health

Don’t repeat yourself. Don’t use magic numbers in your code. As experienced developers, we’ve all heard advice like this. We have decent intuition for “good” code. After watching Jimmy’s Strange Loop presentation and his explanation of citrus advice, I realized that much of the software design tips available have some truth embedded in them, but are imprecise. There are deeper truths for those who want to find them. Jimmy created a set of principles that we can use to build better software. From his principles, advice like those above can be derived and understood. The course is challenging, but Jimmy will go out of his way to make sure you grasp the material. After the first week of the course, I noticed improvements in my code. By the middle of the course, I was more aware of all the decisions I was making when writing code, and I started changing some of my old habits.

I particularly enjoyed the refactoring exercises and one-on-one coaching sessions. If you are committed to improving your software design skills, work with Jimmy.

Dennis Lumpkins

Dennis Lumpkins

Principal Engineer, T-Mobile

I’ve learned more from the first 2 weeks of Mirdin’s course than from 2 years of grad school

Yoonseo Kang

Yoonseo Kang

CEO, Guidebolt Robotics

After working 1-on-1 with Jimmy years ago, I had both of my engineers take Mirdin’s course recently. Since taking the course, I have sensed during design reviews that their understanding of software design has greatly elevated. As a result of their improved understanding and communication, we now routinely achieve better clarity on a design in 15 minutes than we previously could in an hour.


Software Engineer, New York City

I was fired from a FAANG and told I would never reach the next level, but somehow got hired to that level at a different FAANG anyway. But it’s thanks to Jimmy I was able to perform at that level. Within months, I had senior employees assuming I must have been there for years, and was exceeding manager expectations. The only explanation for my improvement is working with Jimmy.

Stephen Balaban

Stephen Balaban

CEO, Lambda Labs

Jimmy is an intelligent, patient, and deeply knowledgeable coach. His sessions have markedly improved my code’s architecture and modularity. In addition to becoming a better SWE, I’m now a better manager and coach to the other engineers on my team. I went into the program with over five years of software engineering experience and an undergraduate degree in Computer Science; I came out wishing that I had started working with Jimmy sooner. Simply put, if you want to become a more effective engineer, I highly recommend working with Jimmy.

Follow in the footsteps of Professionals from Top-tier Companies!

Jane Street
Offchain Labs
Two Sigma

Programmers learn by making bad design decisions, working on the codebase for a year, and then find themselves wishing they could go back and do things differently. We can give you that experience in an hour.

I'm Ready To Take The Leap
No risk. 14-day refund policy


Six core units aimed to refine your coding approach, enhance your design skills, and elevate your competency to meet the industry's urgent needs.

Unit 1 | The Hidden Layer of Logic

Discover the key distinction between design and implementation in our first unit. Master Hoare triples to unveil code complexity, laying a solid foundation for software design mastery.

  • Why design is conceptually different from implementation, and what this means for building robust code.
  • How it’s possible for code that never fails to still contain a bug.
  • Understanding how code that looks simple may actually be complex, and how to avoid writing code likely to break in the future.
  • Hoare triples, a simple method of specification that lets you see complexity as concretely as the code itself.

Unit 2 | The Embedded Design Principle

Dive into our deepest and furthest-reaching principle. How do you capture the design of the program in the code ?

  • Understanding that code can be mechanically derived from a design, and how this perspective de-mystifies system design.
  • Using the Embedded Design principle to better structure your code.
  • Understand the most general forms of couplings. Learn to to spot and eliminate hidden coupling, and prevent 10-minute tasks from becoming 100-hour tasks.

Unit 3 | The Representable/Valid Principle

Learn how to constrain your state so only valid states can be represented.

  • Understanding how to partition the state space of code and reduce the possibility of failure
  • How to design data structures and APIs that cannot be misused.
  • How to design code that contains zero error-checking, but is less likely to fail than even the most defensively-written code.

Unit 4 | The Data Over Code Principle

Learn how thinking about data structures first leads to better modularization and information-hiding.

  • Parnas’s 40 year-old “secret” of information hiding.
  • How to use information hiding to make your code more modular and easier to extend.
  • How organizing your program around data structures can make your code cleaner.
  • How an extreme application of this principle can help you understand systems 3x more quickly.

Unit 5 | Algebraic Refactoring

Harness the power of algebra and see that what first appears vastly different, can actually be the same.

  • Understanding sum and product types, and how common data structure patterns in most languages are just special cases of these two fundamental constructs.
  • How most common refactorings are special cases of a handful of rules.
  • How refactoring a program can be isomorphic to factoring polynomials in algebra.

Unit 6 | Future-Proofing

When should you spend time on upfront design, and when can you leave it for later?

  • Learning to spot and sequester the assumptions in individual lines of code.
  • Using the Liskov substitution principle to make your code compatible with future versions of itself.
  • Using the theory of subtyping to anticipate and avoid “complexity ratchets” that could make your code treacherous to modify in the future, and impossible to clean up.
I Want To 2x My Skills Today
No risk. 14-day refund policy

Frequently Asked Questions