Ludwig

On becoming competitive when joining a new company

Context

This is sort of a written-down blueprint of how I become competitive when joining a job. Being competitive, to me, means:

I want people to think of me in the top 5 if there was to be a tier-list of engineers and if possible, ASAP.

This is not really advice you should especially follow: everyone's different and context matters, but there might be some approaches in there that are valuable to pick up. Some of that advice is also probably not super applicable to people starting out: you will know that for yourself better than I.

Shape of the blueprint

I've started a new job quite a few times over the last 15 years and almost every single time, I felt criminally under-skilled for the position. Still, every single time and within a few months I would end up being the person to ask on any codebase or design questions, to lead a new project or to assemble a new team and start on a R&D project (which usually entails already having acquired a lot of trust!).

The truth is that the reason this happened so consistently wasn't that I was wrong I was under-skilled -- most of the time, I was. I think the difference mostly came from the fact that I was substantially more willing to spend enormous amount of times on the job, combined with having very strong soft-skills and capacity to navigate social and power dynamics. The job here is not just the engineering part, it's the power dynamics and relationships that make the company what it is: who does what, why do we do these things, what matters to who and, as rude as that sounds, who matters.

Ultimately, I feel like I'm in the best place if I have an intuitive sense of the multi-dimensional landscape of systems <> features <> people

Pouring more time and care into everything I touched than the average-to-great coworker and being serviceable, friendly, well-spoken + trying to map out the essence of the company/department (depending on the context) usually

There are a few core components of the mindset I usually have:

Looking back at the process to get to that place trying to reverse-engineer it, a lot of it boils down to building relationships, maximizing knowledge acquisition and shipping.

Pre-requisites and mindset

First, the reality. When you join a new job, the shorter your "onboarding" / the period where you lack the capacity to deliver high-quality code at speed, the better your "onboarding" is going imo. I use quotation marks here because in many companies, your onboarding is really also your trial period (whether it's a legal trial period is a different matter) and that onboarding can be substantially shorter/longer than what it should be on paper. First impressions also really do matter.

For that, there are no tricks: I spend ages in the codebases, mapping systems and their relationships out, where the data is stored, where does it go, who transforms it, why do we do this at all, etc... going up and down the stack. I try and devour PRs, observe how things get done, how problems get approached and solved and just trust my brain will absorb the patterns. It is, at least for me, all about the grind.

To survive the firehose during the first few weeks, I try and and fine-tune a "blackbox" filter to apply on things that seem low-signal. If I'm going down every path I lose speed. Can I do this task and blackbox as much as I can? If so, great -- I will code by emulating coding patterns of others from A to Z. Anything that I believe to be low-signal, I ignore and treat as a magical blackbox, trying to keep my focus on only the most important subcomponents I have to deal with for that specific task. End-to-end understanding will "come over time" and "through repetition".

On building relationships.

One of the first things I quickly try to map out are who are the wizards of the company. Who are the 20% guys doing the 80% that matters? This is usually a month+ long process which is almost entirely vibes-based. To make the wizard list is fairly simple:

Once I have a solid list, I try to get closer. I join the same channels, I read every message they post, I stalk their PRs, I try to map out in which spaces they move, what people they interact with etc. I'll even look up their Slack, Jira and git history to get some vague lines of the main large projects they worked on and the texture of their expertise.

The goal here is to simply understand:

To that end, I make lists obsessively: of both people and their skills or even their personal traits, scratching down every thought I have and making sure to feed my brain with as much data as possible so my intuition and soft-skills have something to go on.

Over time, the goal is to also be able to work with them directly even for a small self-contained project. My thought is that if they work with me, they should want to vouch for me, which should help me get to the most interesting parts.

Regardless of which "teams" they are on, being able to drop a DM to them to tell them how I love they work or I'm learning from them for afar at least plants a small seed for that possibility to blossom into a concrete opportunity.

Side-note: at my current job, years ago, I uploaded a specific emoji from one of the wizard's favorite anime and didn't say anything. He was one of the wizards that was the hardest to approach: been in the company 15yrs, superstar free electron, not the most social. I waited ~8 months to use it on one of his messages which led him to ask "wow, who uploaded this?". This led to one, two, ten conversations talking about our hobbies and ourselves, then the company, our projects, etc. We're now really good friends and our teams ended up collaborating on numerous key projects. The amount of knowledge I gained from this relationship and the number of projects that came out of this knowledge is mind-blowing and is a story on its own.

It goes without saying that relationships are needed on the product and business sides too. This is something that isn't always possible depending on the company you work in and how it is set up, and writing about this here I think would be mostly useless: there isn't any methodology to follow on how to come off as genuine and interesting and the way I make relationships in that space works for me because I am who I am. Building meaningful relationships with PMs to SVPs etc is therefore left as an exercise to the reader.

Outcomes

Over a few months, nearly every single time and after going through this process, I end up being able to participate in the larger projects I'm interested in, and/or am in a place where I've gained enough trust and agency / space that I can use it to barter it to get to the place I want to be in. That place usually changes over time, as I understand more and more about the company, its objectives and the people who compose it.

I'm not saying that's how your job should be treated: as a game of min-maxing and with it taking enormous amounts of your awake time, but it is what I enjoy doing. I don't want to spend more time than I need sucking or being told what to do vs having the ability to just apply my intuition on what are the most important things we should be working on.

Don't buy into the popular & negatively-connoted saying that "if you do more, more work will come" unless that is something you want to avoid: my entire mentality is that I want to be in a position where people ask more of me.

So: do the job, do it well, do it fast, do it a lot and with heart, make real relationships (that is, make friends if possible, settle for trusted allies who are indebted to you everywhere else). These relationships will lead to more knowledge, this knowledge will lead to concrete projects which will help you rise. Rinse and repeat. Make sure to stop before you end up in 25 hours of meeting a week. Easy!