How Charlie Munger can help you weed through the chaff and hire your next best engineer
Charlie Munger, the billionaire and business partner of Warren Buffett, swears by a mental model he calls inversion.
Many hard problems are best solved when they are addressed backward.
The technique is simple:
When faced with a difficult decision or struggling to understand a problem, try looking at it in reverse.
Starting a business? Think of the most likely ways it’ll fail.
Choosing a web stack? Consider all the features you won’t need for your project.
Reframing the problem in the negative can help you get unstuck by forcing you to uncover hidden beliefs, and consider different perspectives.
The ultimate dev interview question
I’ve been using inversion for many years in my own thinking, but only recently realized how powerful it can be when applied to others.
In particular, one simple question inspired by this approach has been a staple of our software engineering interviews at Edulift and Pona:
What do you hate about X?
Where X is the name of a framework, programming language, and so on.
This question is incredibly powerful.
In a single sentence, you get to test all of the following in your candidate:
Are they too attached to their preferred solution?
The question is an excellent first-pass filter to identify beginner devs who get too particular about their stack.
Many applicants will claim that X has reached the peak of perfection, and defend it like zealots against what they perceive to be an attack on their framework of choice.
There is nothing to hate about Vue.js. It is perfect, and I don’t understand why anyone bothers with React at this point.
Do they have a holistic understanding of the tech landscape?
A good engineer has used, or at least read about many different solutions to the same problem. They know the pros and cons of different stacks, and when to use which.
Programmers who don’t have experience with alternative frameworks or programming languages will often struggle with this question as they don’t have the frame of reference to see how their stack could be improved.
I sometimes struggle to find the styles of a particular element, but that’s life… we have to separate content and presentation after all.
Do they have in-depth understanding of X?
You can quickly notice a lack of experience when a candidate latches onto banal points of contention, such as syntax.
Similarly, you can quickly spot someone coming from a different stack when their issues come from trying to solve problems using the wrong paradigm.
What’s their character?
Beyond the technical aspects, this question also gives you a good idea of the character of your applicant.
Whether they take things too literally, how confident they are, their sense of humour… even their level of racism.
It’s made by Chinese people.
What to look for in the ideal candidate
What you want to hear is a specific problem they’ve clearly encountered when working on a real-world project.
Something that is not a theoretical argument taken straight out of a CS textbook, or a question of taste, but an issue people are struggling with in production.
If you as an interviewer are not experienced enough in a particular technology to assess the answer, a good indicator is if the issue comes up again and again on StackOverflow with no one clear answer.
How is there still no built-in function to left-pad a string?!
Ideally, the problem should be acknowledged by the framework’s core dev team, and included on their roadmap.
I really miss multi-document ACID transactions in Mongo when dealing with financial data.
Of course, this should be but one part of the interview process, but you’ll be surprised how many bad candidates you can filter out with this simple question, so you can focus on the few that have the potential to be great!