Ryan Peterman · Ryan Peterman · Transcript & summary by WhipScribe
In six minutes a Microsoft distinguished engineer names the exact habits he had to drop to get from senior to principal.
Tap a chapter to open that moment in the transcript; the link to it is copied for you.
“Software engineering is a collaborative event.” David Fowler · at 4:56 — open in the transcript →
“What I think helped a lot was not treating everything as equally urgent.” David Fowler · at 5:28 — open in the transcript →
David Fowler, now a distinguished engineer at Microsoft, tells Ryan Peterman how he made the jump to principal, a level one former boss had warned him he might never reach. A manager told him at his senior promotion that his promotions would slow from there, and he took the warning seriously. The opening that changed things came when a director pulled him off Kudu, the Azure deployment service he had been building with an architect, and named him one of two architects on the from-scratch rewrite that became .NET Core.
Most of the conversation is about the habits that work at senior level and fail beyond it. Fowler first learned to delegate on SignalR, a team of seven or eight where two new graduate hires forced him to accept that handing someone work to grow them pays off once they catch up. On .NET Core, with about 30 engineers rebuilding the runtime, libraries and package manager, he tried to review every change himself and was burnt out within a year. What rescued him was sorting urgent from merely important, setting foundations and letting people fail.
Fowler's broader argument is that many engineers plateau because they like building alone, while software engineering is collaborative. The control and personal output that earn the senior title stop working at the scale of a thousand engineers, where influence runs through one-on-ones and example. He frames the change as moving from judging his own work to judging outcomes, and notes he was promoted to principal the same year his first child was born.
A distinguished engineer at Microsoft who worked on SignalR and Kudu and was one of two architects on the rewrite that became .NET Core.
David Fowler told Ryan Peterman that his path to principal ran through the .NET Core rewrite. While still a senior engineer he was pulled off Kudu, an Azure deployment service, and made one of two architects of the new cross-platform .NET. After the first year of designing and building it, during which he learned to scale himself across roughly 30 engineers, he was promoted to principal.
David Fowler describes the leap from senior to principal as being able to do more through other people than through your own hands. He says many engineers plateau at that point because they enjoy coding alone and building things themselves, while software engineering is really a collaborative effort of getting customer feedback, deciding what to build and how.
David Fowler says that early in the .NET Core rewrite he tried to code review every single change from a team of about 30 engineers. Within a year that had burnt him out, and he had to learn to trust people, decide what mattered and stop blocking merges over changes that were imperfect but not urgent.
David Fowler says SignalR was a team of seven or eight people, including two new hires from college. As a senior engineer he used to keep work because he could finish it faster, but he came to see that handing work to people to grow them takes longer at first and then amplifies the whole team's impact once they understand the system.
David Fowler argues that some traits that get engineers to senior and even principal hurt them beyond that: being a control freak and insisting work gets done in one specific way. At the scale of a thousand engineers he says you have to inspire others through one-on-ones, setting an example and other techniques, and let people fail rather than prevent every failure.
David Fowler describes Kudu as an early Azure service he built with an architect, modelled on Heroku's idea of deploying an app instantly with a Git push. He notes that a company was already offering the same thing for .NET, and that Kudu still exists. A director pulled him off it to work on what became .NET Core.
Our own transcript of the public episode, with a timestamp about every 90 seconds. Tap a timestamp or the link button on a paragraph to copy a link that opens this page there.
0:00Going to your late stage promos, you got the promotion to Principal. You got the promotion to Distinguished at Microsoft. I'm curious, what is the thing that led to the promotion to Principal? Principal was interesting. So I had one boss, I won't say his name. I had one boss who told me when I got to Senior that my promos would slow down. And I remember that meeting where I sat down and I got the promotion. I was really happy. And he kind of gave me this downer, like, don't expect more promotions from here. Because, you know, I was like, what does that mean? And I really took it to heart. But the jump to principal is a big jump. I had been working on SignalR at the time. I built this. Have you ever used Heroku? Heroku, like, pioneered Git pushing
0:47and deploying your app, like, instantly, right? We had built, there was a tech call at Harbor for .NET. This company was doing the same thing for .NET. And we built a similar thing for Azure. This is, like, super early in Azure timeframe, really. We had built this like brand new, it's actually still there, it's called Kudu. And I had been working with this same architect and I had built it with him. And then at some point in that timeframe, I got pulled off of that. And I think this is one of the places where like your track record helps just get set up for the future opportunities so i had my director tell me hey we have this new thing spinning up and we need you to go work on it and obviously you know you're working on something
1:40else you're like man i'm i want to finish what i'm working on but then this thing happens okay i'll i'll help people this thing and that ended up being the beginning of the new .NET Core, the rewrite. It was cross-platform and modern and new. And it was a big opportunity. So big, it was scary at first. Like, oh my gosh, what do you mean you're the architect? And I was senior. It was me and another principal engineer that got chosen to be the architects of this project. And I hadn't had an experience working at that scale before because I think we had like 30 engineers that were working on this project. We had free reign to kind of build whatever we thought was right. And that was like both amazing and terrifying.
2:25And I think through that project, I learned a ton of things, like knowing how to, I don't want to say we weren't managers, but learning how to manage a project and architecture and scale. And like, initially I was trying to code review every single change. You can imagine that burnt me out. Within a year, it was like, okay, I can't, we can't do this anymore. We have to figure out how to trust people and scale and figure out what's important, what's not urgent versus urgent, et cetera. That year I got promoted. Actually, I had my first kid and I got promoted to principal that same same year I did this um the first year of .NET Core um design and building it you you mentioned that that the team grew so much that
3:12you had to scale yourself out of necessity what are the things that you did that allowed you to be an architect for so many engineers without burning yourself out. So I learned some of this during SignalR. The smaller version was SignalR when they had like seven or eight people overall, right? Engineers, texters, product managers. And we had two new hires. And I had never had the experience of delegating in a way where I thought it was like, if I gave you this work, it's to grow you, right? I never thought that way before. I was always like, I'm a senior engineer, I can get this done. I can do it faster than you. Like, why would I give you this thing when I can do it faster? We had really smart engineers that we hired from college. And it took me a while to
4:03kind of get past, it's gonna take them longer at first, but once they understand all the stuff, then we can amplify the impact. And I think once I saw that, it flipped my brain. So I had something from the Signal timeframe for now is that, okay, if you can invest in people and kind of get them on the same pitch as you, if you are on the same wavelength, if you can delegate more, then you can kind of get more done as a team, right? You begin to think about outcomes and less about the work you're doing individually. I think the leap from senior to principal feels like being able to do more through others than yourself. And it's where I think a lot of people end up plateauing because software engineers are very like,
4:51you know, we like coding. We want to be alone. We want to build the things ourselves. Software engineering is a collaborative event. It's like, we want to figure out how to get the customer feedback, figure out what to build, figure out how to build it the best way. And I think that change in my brain prepared me for .NET Core because it was such a bigger scale. How do you even begin to manage that many people, that many facets? We rebuilt everything from scratch. We literally rebuilt the package manager, the runtime, the libraries, everything from the get-go. And it was overwhelming at first. What I think helped a lot was not treating everything as equally urgent. That was a big deal. If this change over here went in and it wasn't perfect, I wouldn't be like, we can't merge this.
5:41We need to have this interface, these tests. Learning how to set foundations for others and to trust others and letting people fail was a really hard thing for me at first. I could avoid the failure. And it turns out that the team, I think a lot of the things that get you to senior and maybe principal hurt you even further. Being a control freak, being someone who is amazing at their job, getting stuff done in a very specific way doesn't really help you when you want to steal it to a thousand engineers. You have to figure out how to inspire others to do the same as you through different means like one-on-ones or or you being an example or like more more different techniques but it's difficult
6:31to just be to take you're not gonna type Carter and make a bigger impact so it's like I shifted my brand to be outcome focused was a big big change you





