Moving from full time coding into full time managing is a move many engineers and developers look at with a strong dose scepticism. We use metaphors like “becoming part of the corporate machine” or “turning to the dark side” to describe it, from the outside. There is probably some truth in that. However, there are some surprising upsides to becoming a full time manager that you reap even when you stop being a manager and go back to coding. The experience of looking after a team or an org really changes your perspective about how to work. I’ll talk through some of the things I discovered.
I’ve now bounced between management and coding at three companies — Facebook, Synthace, and the company I’ve recently co-founded. In this post, I’ll talk about a 3 month misadventure which also marked my first foray into managing people.
An Intern Management Train Wreck
At Facebook in 2011, I was an intern manager for the first time. I’ll spoil the ending for you by pointing out that it was an absolute train wreck. I could levy some fair criticisms at the intern I was managing, but the truth is that if you’re a fully grown up engineer and you have a train wreck experience with an intern, the blame lies squarely on your shoulders. In this case, squarely on my shoulders.
The beginning of the problem was that my intern didn’t want to do the work he needed to do to succeed. He finished the internship with roughly the same set of skills he’d started with, though he did gain a bunch of practical coding experience. He created bugs constantly and nearly caused the Facebook Video Calling feature launch to be delayed because of the mess he made helping them with marketing pages.
On top of that, he was undisciplined and entitled. He told me on his first day that he didn’t want to be there, really. That he’d gotten the internship because his professor at university knew someone at Facebook and got him in. He also didn’t like to learn things on his own. If I told him he needed to read some
git documentation, I could be guaranteed that he wasn’t going to do that. So, he failed as an intern. That’s on him. Importantly though, I failed even harder as his mentor and manager. I watched him fumble, then fail, then lose all his motivation, then leave in shame with no offer. It hurt emotionally. It was super frustrating. It also hurt my performance review. Everyone lost.
So, why did I fail? If I’m being honest, I blamed the intern himself for years. The things I listed above are prime examples of why he sucked and it was his fault, right? Wrong. I failed because I lacked some specific skills that, as a coder, I had never had any reason to learn. In many ways, the skillset of management and the skillset of engineering are disjoint. I understand this deeply now, but I had no perception of it until I was tasked with succeeding at it… and failing.
So what skills did I lack? And, also, what do they do for me as coder?
The Team Succeeds or Fails… Together
It’s trivially easy to say, “The team has to succeed together,” but manifesting it practically can be really, really challenging. What do you do when someone on the team isn’t pulling their weight? What if they’re being bratty and entitled and making your life miserable? A 26 year old me decided to just lean back and let that someone fail. I thought, “If this jerk doesn’t have the presence of mind to follow through on simple tasks, it’s his problem not mine.” I think a lot of engineers reading this can sympathise with this perspective. And they, like me, would be dead wrong.
It was my job to figure out how to make the situation successful. I missed that. When I saw his attitude, I checked out. I kept thinking about my own work and throughput and looking at our two-man pairing as a barnacle that I needed to give as little time and energy as possible. This is a bit like having a very inconvenient fire in your living room and just deciding to ignore it because it’s not being reasonable. It’s still a fire. And my fire went on to cause chaos for other people while I ignored the situation as much as possible. This is a great way for whole teams to fail.
You might think, “But I’m never going to be a manager or mentor an intern. Who cares?” The reality is that software engineering is a team activity and that any group of people — no matter what size — will have rough edges and behaviours that hurt the group. You can sometimes tactically allow those rough edges to persist when they don’t risk the success of the team. But very often though — you can’t. Often negative behaviours within the team compound over time and cause all sorts of nasty side effects. You ignore them at your own peril.
I ignored them. At first, I tried a few things to help the guy. Then gave up on him and let the problem fester. And it was a train wreck. Which brings me to my next point.
You Have to Give Feedback
At the half-way point of the internship, I had a catch up with the intern program director (a senior engineer with a meteoric trajectory within the company). She asked me how it was going. I told her how terribly my intern was performing. Her first question to me was how the intern reacted when I gave him the feedback. I felt confused. I remember thinking “This guy is a jerk and he sucks and it’s my job to tell him?” I may have said as much at the time. Her response was unequivocal: “You have to tell him.” In fact, she was incredulous that I hadn’t already. She didn’t tell me I fucked up. But, for reasons I’ll describe below, I could sense that I’d missed something.
To quote an old meme — it was at this point… I knew… I fucked up.
You Have to Know How to Give Feedback
One of the most painful things I learned during my first intern mentorship experience is that I didn’t know how to give feedback. Actually, it went much, much deeper than that. I didn’t know how to be compassionate.
My life experiences had taught me that you either get it exactly right… or you’re worthless. “Getting it right” means figuring out the expectations in whatever situation you find yourself in. Unfair expectations? Rise to them. Unclear expectations? Be more psychic. Don’t know how to succeed? Figure. It. Out.
And… if you don’t figure it out… you’re literally worthless.
A Brief Aside About Trauma
Without telling a long sob story, I had seen a lot of cruelty in my life, especially in the early years. I had found my way through the trauma by becoming very hard and very, very attentive. Hypervigilant, in fact. I had learned to carefully read and then brutally force myself through tough situations. It was the better alternative compared with feeling worthless. The combination of hypervigilance and relentless work ethic is uncommon, apparently. Together they helped enable my early successes.
Where other people couldn’t figure out what was required to succeed, I was hyperaware of the situation and also of any hidden expectations behind the overt ones. You’d never hear me saying something like, “I didn’t know I was supposed to do that.” I would figure it out. So, when the intern program director told me I had to give the feedback, I already knew I’d failed. Her tone of voice. The cocked eyebrow she looked at me underneath. Those clues were enough to tell me I was off the blessed path. This was going to hurt.
In addition to this hyperawareness, I had the work ethic to do what was required. Do I need to read all the documentation and code in a system I didn’t create but have to maintain? Ok. Do I need to stay up for two days straight delivering a technical outcome because someone else set an impossible deadline? I’ll do it. Is someone being an asshole and demanding that I read their mind in order to know what the right thing to do is? Fine, I’m on it. And I’d still have the energy to take that victory-against-the-circumstances and keep moving upward in my career. Not because it was a healthy thing to do for me. But because I had to.
So, it’s practically a super power… right? Wrong. If you measure only on one dimension, kind of? But all factors considered, it’s a poisoned blessing. As a mentor, it creates some surprising problems.
The even deeper problem is that I hid all of this. From my team. From my boss. From myself. I basically just pretended like I wasn’t an absolutely brutal, anxious person. All the while, I pointed all that brutality inwards. I used it as fuel for hard work. But… it turns out even if you’re an expert at leveraging inward-facing brutality while hiding it from a world that you relentlessly read and respond to… you’re still not guaranteed to be safe.
You Have to Understand Your Own Emotions to Give Good Feedback
My early trauma and the way I was managing it caught up to me when I had to give tough feedback to a bratty 19-year-old who was failing and being a jerk about it. I didn’t understand myself well enough then to realise all of what I was feeling.
The feedback that I needed to give was about attitude and quality of work. But the much more intense feelings I was battling with were about what a bratty piece of shit this kid was. How selfish and arrogant he was being. How he could dare to be wrong and mouthy about?! How he could not take desperate advantage of the amazing place he was in and the amazing people he was surrounded by?! The opportunity at Facebook was something I would have killed for as a 19-year-old. The disconnect between what I was feeling about him and what feedback I needed to give him would end up causing a lot of problems.
When it came time to talk to him… I didn’t give feedback. I eviscerated that kid. I wrote a detailed list of all the ways in which he was failing our expectations and then I read them to him and explained with context, one by one. It was a list of about 7 or 8 key failings. (For managers reading this right now and cringing — I know. I know. 🤦♂️ I would never do this again.) Naturally, he argued back against many of them. And I gave him further examples of feedback other people had given me about him until stopped he fighting back. He gave in. Then he cried. I felt confused and irritated. Crying is not permitted be the hypervigilant, ultra-hard-working, stoic persona.
We finished the meeting. I went back to work. He went to HR to complain. I’ll never know exactly what was said there, but I overheard my own manager quote the email. It included the phrase: “[Jackson] is tormenting me.”
“Torment” is hyperbolic language (I did say he was bratty), but the kid had a point — I messed up. Badly. I had seen each of the critical points come up. I had sat on the feedback. I’d let the situation fester. Then, under duress, I delivered all the feedback all at once in an extremely brutal, compassionless way because I had a huge backlog of emotions I wasn’t able to face.
It doesn’t matter that I’m brutal with myself. It doesn’t matter that no one told me how to give good feedback. What mattered was I took a bad situation and made it even worse. I took the fire… and added more fire to it.
What Should Have Happened?
Now, 9ish years later, I can look back at my junior engineer self and see my intentions. See my fears. See my shortcomings. I had a chance to turn that situation around, but I couldn’t see it. I had the chance to help give this kid the mixture of hard love and support that he actually needed, but I didn’t know how to give that kind of love to myself. To quote RuPaul — “If you can’t love yourself, how in the hell are you going to love somebody else?” On top of that, I didn’t know what healthy feedback even looked like. My life experience were that you either ignored or screamed at or slapped things that weren’t doing what they were supposed to. What the hell did healthy people do?