Become a better engineer
Write clean code with minimal risk of bugs
Be the person on your team who can explain why a design decision will save your team hundreds of hours, months or years down the road
Explain in clear terms the reasoning behind why some piece of code 'feels better' than another
Join over 250 professional software engineers
Apply to the Advanced Software Design Course
I’m Jimmy Koppel, and, six years ago, I set out to create a better way for people who could already code well to become masters of their craft.
One of my first clients went from a major career setback right before we started to competing offers from Google and Facebook after four months working together – and Ivy-League grads looking up to her after another four. Another was a brilliant startup founder with a CS degree and over five years experience; after witnessing how our sessions improved his code’s modularity and architecture, he came out saying
I wish I had started working with Jimmy sooner.
Stephen Balaban, CEO at Lambda Labs
And now I want to help you! I’ve taken the intuitions that top engineers use to build robust and maintainable systems and turned them into principles that can be taught and drilled much faster than learning by experience. Now I’ve streamlined this material, tested it on live audiences, and turned it into a course to help bring you to your dream skill level.
This course is not a replacement for hard work and is not a guarantee of success. It is a shortcut to understanding the deepest levels of software engineering.
Education research shows lectures are not enough. I'm committed to your learning, and that's why I'm making this more than just a course.
I've gone through thousands of articles online and hundreds of academic papers to find the few with insights about the general art of software design. And when I couldn't find anything that explained a topic well, I wrote my own. I'm giving you access to all of these.
Between sessions, you'll be given exercises to drill in the concepts and samples from large projects to critique, so you can apply your learnings to real-world software.
Rapid and targeted feedback is a general principle that can help you learn anything 3x faster. I read every submission and give individual comments so you can know you're getting the material.
That's right, two 30-minute 1-on-1 sessions with ICF-certified coach James Koppel, one at the middle of the course, and one at the end. I'll use my hundreds of hours of experience working 1-on-1 with professional engineers like you to help you be the best engineer you can be.
Are you a junior or mid-level software engineer who wants to build systems that take little effort to maintain, and where adding new features is a pleasure? Then this course may be the right thing to jump you to the next level?
This is not a beginner's course. I designed it for engineers with at least one year of professional experience, and I'll talk with you 1-on-1 before the course to make sure that it's right for you.
If you already have a proven track record of designing systems so that it’s hard to make a mistake in the implementation, or if you routinely show teammates why their code will fail in a year, then you may find this course a nice way to put a more principled perspective on intuition you already have. You may also find the exercises too easy. But, in that case, you might be a great fit for my 1-on-1 coaching, where I'll teach even more advanced material at the pace you desire.
We teach skills which are more fundamental than any particular language or framework. Still, all examples will be in C, Java, or Python, and you should be somewhat comfortable with the syntax of all three.
This is a course for professional software engineers. For homework, you will need to be able to understand code samples from open-source projects we give you to critique, and you will need to be able to reflect on code that you’ve worked with in the past.