Your weakness is not your technique
I’ve been chatting with one of my mentees, and that’s when that line from The Matrix popped up in my memory. The one where Morpheus says to Neo, “But your weakness is not your technique.”
In the movie, Morpheus beats Neo up before saying that line and then he beats him up again afterwards. I didn’t have to do that: poor soul was already shaken and convinced that “I make so many mistakes, I must be a garbage coder.”
We went through several of those “mistakes,” and the conclusion was that “Your coding is fine. You make too many mistakes because you’re multitasking too much. Just start asking people if they can come again later. Most of the time, they can.” The mentee was a bit surprised by this realisation. Me, not at all.
Actually, I think this is true for a lot of programmers out there. Their limiting factors aren’t about writing code.
Take the younger version of myself as an example.
When I was twenty, I could write a self-hosting Lisp compiler. Okay, okay, it was a subset of Scheme, and it was targeting .NET CLR. But still, this thing could compile itself into an .exe file!
When I was twenty-one, I could write a parallel algorithm for planar graph optimisation with a neat Swing UI on top of it. Had to do it because selling a Scheme compiler as a topic for my graduation thesis at the EE department was a bridge too far.
So, I knew how to write non-trivial code. Then I got employed, and it took me several years to figure out things such as:
- How do I handle deadlines?
- How do I deal with prod outages?
- How do I cooperate with customers?
- Why does my boss care about their own success much much more than about mine?
- What do I do when I have seventeen tickets assigned to my name?
- How do I make promises?
- How do I renege on my promises?
- How can I give feedback in such a way that it lands?
- How should I process feedback from morons, idiots, and manbabies?
- How should I process feedback from charming, gentle people who are lying to my face?
- How do I choose between leaving the office early and staying late to refactor this piece of code to perfection?
- Which excuses for avoiding the town hall meetings work the best?
- …and I can continue for a long time, but I think you get the idea.
Some people call it “soft skills.” I don’t like this term: it implies that there are “hard skills” which are the real deal, and then there’s this decorative fluff around it.
I like to call it “personality” because, in one way or another, those skills are manifestations of personality traits like humility, courage, integrity, inner calm, empathy, and so on. And that’s the actual real deal, not how you configure Kubernetes.
I guess I should write a book about it. Or a series of blog posts. I’ll keep you posted.