A few years ago, almost two years into my tenure as a Staff Software Engineer at Stripe, I nervously walked into my performance review with my manager. The first thing he said after I sat down was: “Drew, you’re hard to control. I’m not sure if that’s a feature or a bug.”
I gave a bewildered half-grin, to which he replied, “Then again, Basta is hard to control, too, and we just promoted him to Staff.”
I laughed and waited anxiously. Where was he going with this? Was it a feature? I certainly wanted to think so.
His feedback wasn’t entirely surprising, as I’ve long marched to the beat of a different drum.
My first two jobs, at Microsoft and then at Facebook, had gone poorly in their first two years.
At Microsoft, on the Visual C++ Compiler team, I was fresh out of college and not tapped into team priorities. I bristled with ideas, but I was new to compilers and everything else about the job, and my ideas weren’t good enough.
Facebook began similarly. Though I had a few years of experience by the time I joined, I had a lot to learn about working at a fast-growing startup. I was also brand new to web programming. My first Facebook post at the new job sums it up: “Web development is unsettlingly informal. Where's my compile button?”
In one performance review, my manager flagged me for an “overall lack of productivity due to a mix of incorrect prioritization and rat-holing.”
Two years into my job at Stripe, was I doomed to repeat the past?
I had turned things around at both of my previous jobs. In my turnaround third-year performance review at Microsoft, my manager confessed, “If I’m being honest, I had thought we were going to have to manage you out of the company, but then something changed.”
At Facebook, my next project was a hit as well.
In each case, I got great reviews, but management delayed promotion just to make sure it wasn’t “a fluke.” What had changed? I don’t think any of us, myself included, really understood what was going on.
My greatest achievement at Facebook happened soon after: inventing a developer framework called EntSchema, a platform for programming database models. It was nothing anybody had asked me to do—I founded the team, tech-led the buildout, and growth-hacked until it became pervasive, mission-critical infrastructure. It sped up product development and withstood the test of time.
Was I lucky? Did I have unfair advantages? Well, yes—I had an excellent manager and the privilege of pair-programming weekly with Kent, who kept insisting that I write my tests first. (This was a big winner!) But above all, I had spent 3.5 years at the company learning and thinking about what engineers there needed, and I was unafraid to make a big bet.
In other words, I was still being myself, but my ideas had mysteriously become “on point”—they were practical, useful, and aligned with management’s goals.
When my boss at Stripe mused whether my autonomy was a feature or a bug, my history whizzed through my head, a heady mix of failures and confidence-inspiring successes.
I had come to Stripe, determined that I wouldn’t languish for two years. I’d picked a company that aligned with some of my core values—caring deeply about prosperity and the productivity of our customers. And I’d resolved to be humble and listen to those around me much more, which had worked decently well so far.
Then again, at the time of this performance review, I’d been transitioning into a more opinionated mode where I tried to help set the team’s agenda. By this point, it was a formal part of my job description, but that didn’t mean I wasn’t screwing it up.
Moment of truth, he handed me the page—I’d successfully met expectations! I know, I know, not a big deal—but this one somehow felt sweet. Like I’d been at the plate with two strikes and fired off a base hit.
Toward the end of that year, my team and I lost alignment, and by then, I’d learned to switch teams when this happened. I asked the head of infrastructure what his top priorities were. His top choice wasn’t a fit for me, and I wasn’t sure about the impact of items two and three, but the fourth priority was to build a workflow engine for internal engineers. This one resonated with my deep experience as a Stripe engineer and my skillset, and once again, I founded a team to build it out.
The Workflow Engine was a big hit, and more than in any previous project, I listened to others while also developing my own vision and compass as I guided the team.
Something feels Goldilocks-y about picking the head of infra’s fourth priority and then having it work out. Did I finally achieve the just-right blend of top-down management priorities and my own intuitions and skills?
I think there are many engineers out there like me who are full of ideas and drawn to problem-solving. We want to make an impact but aren’t ready or willing to found our own company. We tend to be introverted, and if we’re not careful, “autonomous” is just a nice way of saying “not a team player.”
Advocating and executing our own agendas is a risky strategy. Many different skills are needed. But if we average out the hits and misses, we can make much more impact than if we played it safe.
My advice to my younger self:
Listen a lot. If are someone who needs to reach your own conclusions, do so only after you have internalized the reasons behind others’ thinking.
Calibrate your humility. The less familiar you are with an area, the more you should trust your teammates and managers while you learn.
Keep your manager posted, expressing your deeper motivations but also giving them an opportunity to course-correct if you’re diverging too far from team goals.
Stay focused on users. It’s the most direct way to guarantee impact.
Collect a lot of ideas. If you don’t spot ten problems for each one you fix, you risk ratholing.
To make sure you have enough support to be successful, distinguish when your teammates are interested in your ideas from when they are invested.
Pick teams that share your values or get explicit buy-in from management to inject your own values into your team.
Being autonomous has required me to be more connected to my users and my team, which feels almost oxymoronic. I have come to enjoy the blend.
If you’re early in your career and this to-do list seems daunting: stay bold. The skills and knowledge won’t come all at once. Looking back, I’m glad I started out “thinking different.” It honed a certain bravery and willingness to go against the flow that I’ve carried with me. It became more effective as I gained some of the other skills, but it was still good practice.
I’m sure I’m missing some good advice. What do you wish your younger self had known?