Hi! I’m Jimmy Koppel, and I’m a software-engineering coach. I’ve been doing this for over 6 years. Between my courses and 1-on-1 coaching, I’ve trained just shy of 250 software engineers, from people just breaking into the field, to ones with over 20 years experience. And I’ve taught hundreds more in one-off sessions and workshops, and tens of thousands more through online articles.
This is my 1-on-1 coaching program. This is a program for people who are not satisfied with the normal rate of learning, for people who want knowledge taught nowhere else, and for people who want to dedicate themselves to becoming the best.
Think this might be for you? In this document, I explain exactly what to expect from coaching.
Types of Coaching
I generally have two kinds of coaching relationships with clients:
Short-Term Targeted Coaching: This is coaching tied to a specific goal, such as feedback on a design. It is available on an ad-hoc basis, for timeslots as short as 30 minutes.
Long-Term Foundational Coaching: This is coaching to generally deepen your skills and improve your understanding of software engineering. With the exception of students who have already taken the Advanced Software Design Web Course or Weekend Intensive, I require a minimum 10-session commitment, in order to give time to build the coaching relationship, and to start with deeper topics.
Most of this document applies to long-term foundational coaching.
What’s Included with Coaching?
First, all coaching sessions come with the things required to help students get the most out of their session: I’ll read through documents or code beforehand, answer questions over E-mail, and send students a recording of our call.
For long-term foundational coaching, I think of it less as a few timeslots on my calendar, and more as bringing students into my inner circle. I routinely give students access to the latest curriculum developed, often before anyone else has seen it. In the past, I’ve used my personal network to help students find a new job, and met up with them on other continents.
As with my web-course students, I give all my students access to a Slack workspace for alumni, ongoing access to the latest version of the Curated Reading List and Software Design Glossary, and invite them to dinners when I travel.
What Happens in a Coaching Session?
I’ve done hundreds of sessions, and every one has been different. Even for sessions based on the same material, the client is different. The only rule is that I always come into a session with a plan, and always come prepared to not use it. If you’ve seen a lesson on my website or course, it emerged from material originally taught to one person. And that’s only a fraction of the material developed for 1-on-1 clients. And when someone wants something not covered by an existing lesson plan, I make new material.
In addition to the technical aspect, I am trained in mainstream life-coaching by iPEC, the Institute for Professional Excellence in Coaching, and certified by the ICF. I thus often help my clients in emotional situations as well, be it with navigating a difficult situation at work, charting out a life plan, or dealing with feelings of inadequacy.
Here are a few example sessions:
The client sends me a personal project he’s been working on, and I review the code before the session. I point to a few sections I consider design flaws, and ask how the code would change under several scenarios, and teach him about the principle the current code violates. The client asks about another part of the code he doesn’t like. This leads into a discussion about how that’s an instance of a general pattern from PL theory, and why the problems he’s complained about are inevitable.
We’ve been in a weeks-long discussion about information-hiding. In this session, I teach the client about existential types and the type theory of modules, and end with a teaser about how it helps us identify when code is violating another module’s secret. In the following session, we practice translating some ordinary code into the language of module theory, and identify a counterintuitive example where a secret leaks.
A client asks me a follow-up question about the previous week, asking if the lesson of the previous week implies something negative. I start to answer with an example, but sense something’s wrong. I ask him about burnout; the rest of the session and the following week’s are me coaching him about burnout and what gives him energy.
What Can I Expect to Gain from Coaching?
I cannot predict with certainty the outcome of any prospective client. I can share the patterns I’ve noticed in client outcomes. It is very common for clients to have some kind of software “epiphany” within the first five sessions. By the tenth session, others have noticed a difference in their understanding.
Often, their perception changes of their job. Sometimes, clients begin to understand conversations around them, and suddenly find themselves more accepted and listened-to . Other times, they begin to feel they understand things their coworkers don’t, and begin looking for a new job.
Beginning the Coaching Relationship
Clients differ in their needs, not only in their existing skills and immediate wants, but also in what view of material works best (e.g.: balance of deeper theory vs. immediate applications), and whether they’re interested in homework between sessions. My goal in the beginning of the relationship is to understand how best to work with you, and to identify a few gaps in your understanding or skill-set to begin the coaching process. To do this, I give all new clients a questionnaire, and review their code: either by reading their open-source code, or, if none is available, by giving a 3-hour coding challenge. For the first session, I usually have to prepare multiple topics, in search of one which resonates with the client.
Finding an approach that clicks with a client is often an iterative process. In one extreme example, I spent the first three sessions with a client repeatedly finding that everything I tried to teach him was too advanced. We then had a very productive coaching relationship, with over 70 sessions over the following 2 years.
Never trust a coach who claims a 100% success rate. At time of writing, I have had 16 very happy 1-on-1 long-term coaching clients, and 2 unhappy ones.
All available timeslots are between 11 AM and 1 PM or between 9 PM and 11 PM US Eastern Time, Mondays-Thursdays.
Sessions may be purchased in packages of 1, 4, or 10. Purchased sessions may be used indefinitely long after purchase.
These prices are for individuals, where arrangements are simple and bureaucracy minimal. Contact us for corporate pricing.
1 session: $349
4 sessions: $1326
10 sessions: $3141
Nils Eriksson, Portugal (GMT+1).
1 session: $150
4 sessions: $570
10 sessions: $1425
Nils is a previous top student of the course turned Instructor. Previously he was a tech lead engineer at Discovery Networks, where he oversaw the development of multiple products such as the 2020 Olympics, Eurosport Player, Dplay, and Discovery+. He also offers 1-on-1 training under my guidance.
He is available from 09:00-17:00 GMT+1, Monday to Thursday.