Bad news everyone - today's post is high on reflection and low on inarticulate rage. It's actually two posts. Reflections on lunch with a reader, and my reflections on the many emails I've received over the past few weeks.
Incidentally, I had such a great time getting lunch that I'm going to erode my SecOps a little bit further. While I love being in touch with people from around the world, and will certainly arrange some time in Europe and America to get coffee with anyone that is interested, I live in Melbourne. Feel free to reach out if you're anywhere in the country and you'd like to catch up to nerd out. I'll fly to Perth for a single beer, just watch me. While I can't promise that I'll get to everyone for coffee, while I do to reply to every email, I suspect there won't be that many people here in Australia. As always, reach me at firstname.lastname@example.org.
Also, I can feel management's noose slowly tightening around my neck. They're going to work out who I am one day, and I hope you all appreciate me self-immolating for your amusement.
Last week, a reader reached out to me and managed to guess I was in Australia based entirely off my description of the technical dysfunction. I suspect that Australia is unusually bad for a culturally Western nation for who knows what reason, but it was still a very impressive prediction - based on my correspondence with readers, things are pretty fucked everywhere.
In any case, it was a tremendous experience, and I have finally monetized my writing to the tune of one cup of coffee. Feels good to be a sellout. I'll leave the person and the company anonymous, but I wanted to highlight a few things that really stood out.
Firstly, the person I spoke to was an engineering manager, and when I mentioned that I've been looking into Elixir, he spoke very highly of his own experiences with Erlang and the BEAM virtual machine, two topics that I know absolutely nothing about, and suggested that I would benefit greatly from diving into these topics.
This was fucking wild to me, because I didn't realize they actually made management with that level of competence at the factory. Can we run another batch in production? While he rightfully pointed out that I hadn't seen him code when I expressed amazement... well, look at it from my perspective.
I received a message this week from someone that manages engineers and is "on the tools" asking whether it was a good idea to delete files from a Git repository that were no longer in use, because in theory you could check out older commits. The answer is yes, and I'm glad they've realized it's absurd to have 100 files in a folder called
archive, but this is a ridiculous question for someone that has senior engineers reporting into them to ask. And this is one of the most technical managers I've ever worked with, and because I'm a typical young person with no staying power, I've worked at a reasonable number of places already. I would love it if that poor, out-of-their-depth bastard had opinions on the relative quality of Erlang. God, I can't even imagine that.
Secondly, we spoke at some length around why things are dysfunctional, and it was gratifying to hear that it turns out most of my ideas on how things could be run... just work in the right environment. Frankly, many of them would work where I am now, and there's no reason we don't do them correctly other than not caring. He also remarked that he had worked at many dysfunctional places until making the jump to "better" places, and noted that the CTO was a big reason for joining the company.
I couldn't even understand this, because the CTO at my organization technically only manages a staff around the size of this reader's entire company (even though the organization is huge) and they... well, I've heard they're smart, but suffice it to say that they don't seem to get any results. I don't think it's their fault - the organization is ineffective and no human can fix it - but I couldn't imagine it even mattering who the CTO is. They certainly don't know everyone's name, and once called my senior colleague "that smart intern". And literally as I was shaking this reader's hand, I received four messages from colleagues telling me that the CTO had credited someone else with the Snowflake savings at an all-hands meeting, then said "and I think Ludic helped?"
And I didn't care because they don't even say hello to me! Why would I care what they think about my work if they aren't going to fire me?
Anyway, long story short, it was like meeting a version of myself from the Good Timeline, where you eventually find pleasant people who just do a good job and don't torture each other endlessly.
II. Meeting The Rest Of The Team
At this point, I am actually invited upstairs to meet the rest of the team, including the mythical good CTO. Let us take a moment to reflect on how brave this reader is. Upon meeting a man who wrote something called "I Will Fucking Dropkick You If You Use That Spreadsheet" for an hour, he thought "seems like a sensible move to introduce him to the C-suite".
Apparently some of my posts had circulated a little bit, and I'm afraid I might have let some people down by not frothing at the mouth in real life. I was horrified to hear the CTO greet me as "the angry blog guy" (this is not effective corporate branding), but you know what, fair assessment.
We get to talking, and the CTO was, to use the technical term, based. All in on the idea that engineering managers must be technical. Lamented the fact that even good hires had to be "de-corporatised" after years of moulding themselves to get along with grifters, morons, and sociopaths. I believe someone said the CTO had contributed to complex open-source projects. Again, every workplace is going to have some problems, and no one is without flaws... but I returned to my own office on Monday and watched our leadership talk about how many goals they were kicking (to be fair, they didn't say they aren't own-goals) with disappointment. Everyone has flaws, but people deserve leaders who aren't utterly self-deluded or ineffectively bragging constantly.
We all went out to lunch together, and at my prompting one of the engineers tried to explain what Org Mode is on Emacs (I remain convinced this is a cult), we spoke about how we would know if an artificial intelligence was sentient, and just generally had a good time. I don't think I've seen a team casually get lunch and drinks without drowning in cynicism since I was a totally fresh graduate, and it was refreshing. You'd have to pay me a few hundred dollars to get lunch with some of the managers in my department, and here I was with a whole team of people who agree with the tone of the writing here, can stand each other's company, and even the CTO comes down with them to eat. Utterly alien, and possibly paid actors.
I've been invited in for Friday drinks, and to meet two other teams, which I'll certainly do. Again, they were the first to tell me that they've got their own problems - but there's hope out there if you're somewhere terrible, that's all I'm saying. Also the lunch place would have made my pretty well-paid colleagues complain about the prices, so they're probably not doing too badly in the remuneration department either - that isn't even the main factor in enjoying work, but it certainly doesn't hurt.
II. Thoughts On Emails
I'll try keep this brief, as I received far too many emails to write about them at length. Here are my broad takeaways after processing many stories and wise words from dozens of engineers.
- There are certainly two tiers of company in terms of pleasantness. The majority of people seem to go through their entire careers working at terrible place after terrible place due to path dependence in their network and the fact that most places suck. My workplace sounds terrible, but I assure you that it is better than most. Find a good place instead if you intend to stay employed. The pay is better and they're nicer for the most part.
- The good places are, as I've mentioned elsewhere, small, and run by compassionate people that don't want to grow forever. There aren't many of them. The level of dysfunction at large places varies wildly, but they're always going to be there, so if you have a low tolerance like myself, they're almost ruled out immediately.
- Being this honest means that some employers won't work with me. This is fine when times are good, as it's removing people I wouldn't enjoy working with anyway, but could be rough when times are desperate. But I haven't been outright killed, so you can be braver than you think if you're willing to take the risk to reap the rewards.
- The market is so absolutely desperate for good engineers that the main difficulty is having a network strong enough to get warm introductions to people, and they'll always have work for you. And I write Python at the level taught to generic data scientists and am considered good by the market, so you're almost certainly fine too.
- Markets and companies are not efficient, and by extension, neither are the good engineers stuck working for jerks. I had a very long exchange with a reader, and interviewed some talented engineers at a company that wasn't treating them that well or that badly. They all agreed that the main reason they stayed was being underconfident that they could do better, even though to an outside observer they obviously could.
- Working with people you like is very important. It dominates all other considerations in terms of day-to-day happiness. People that you could like can become difficult to be around if the broader environment is toxic.
- Ask for more money. I don't even care about the money, but you get respect for negotiating like a professional.
- Read the room. When your organization indicates that they don't care about quality, believe them and don't waste your time. There are a lot of teams that don't even version control their code, and they will all say that they want to improve their practices. If they were serious, they would already be version controlling their code. Things that are sufficiently bad are going to stay bad.
- This is very important, so I will repeat it. If the organization is doing nothing right, then they probably are incapable of doing so regardless of what they say.
- You will probably not be rewarded for going above-and-beyond. Sad fact.
- If management picks on you, just leave ASAP. It will end badly. I would like to set up some (free for users) platform for blog readers here to network on to this end - hit me up if you have ideas.
- You can sell your soul for a while, but you've got to pay that debt eventually, and it can be very painful.
- Organizations eventually pay the price for these severe inefficiencies, but all the current actors that benefited from them will just leave. But if you're in an inefficient system, don't assume your job is safe. A lot of the stories I heard ended with products and companies eventually shutting down.
- Be likeable, reliable, meet lots of people, and ask for more money. Then your career will sort itself out. Being likeable is easier said than done, but it is definitely a learnable skill for most people. You just don't talk like a corporate dweeb and people think you're a no-nonsense person who gets stuff done. The industry is handing you this win on a silver platter. When I wrote my first post, I predicted beforehand that it would hit the Hackernews frontpage because it didn't have a gross sanitized tone. I half-believed it couldn't be that easy, but there you go.
- Don't work for dickheads.
- Don't work for dickheads.
- Let me check my Bloomberg terminal - it says "Don't work for dickheads, they aren't paying you enough".
These may sounds obvious, but most success at this early stage in my life has stemmed from noticing obvious mistakes, then making obvious corrections. If they weren't obvious, I would have to be smart to exploit them which I am not.