Latest / The Pragmatic Engineer / Developer Experience at Uber with Gautam Korlam
Transcript
- 0:00SPEAKER_0: Vibe coding.
- 0:01SPEAKER_0: This is a brand new term.
- 0:02SPEAKER_0: What do you think it stands for?
- 0:03Vibe Coding is just you trying to figure out how the system should behave when
- 0:08you're prototyping.
- 0:09The good thing about Vibe coding is you're able to basically iterate much
- 0:13faster with this Agent Loops that now you're just focusing on how would I
- 0:16actually achieve my outcome rather than the exact way to do it.
- 0:19SPEAKER_1: You can always change those details later.
- 0:21SPEAKER_1: If you have the right abstractions, you could swap layers out.
- 0:23So I think that's changing the way people think about software because if
- 0:27you're someone who has taste and knows this is the outcome I want to see on the ux,
- 0:31you may not even need to know a framework.
- 0:33You should experiment with it till it feels right and of course you need to
- 0:36massage it to make sure it doesn't make it harder to all later on.
- 0:38I think a lot of the software today gets you to the initial,
- 0:41it looks great,
- 0:41but then how do you maintain it is basically sort of left for later time.
- 0:46And I think a lot of people who are still coding with AI are early in the
- 0:48prototype phase.
- 0:49Gotan Corlon worked at Uber for almost 10 years,
- 0:52joining X Android engine number eight and was the founding engine for the
- 0:55mobile platform team.
- 0:56He grew from software engineer two level,
- 0:58all the way to principal engineer and worked on developer experience and
- 1:01scalability challenges throughout his decade at Uber.
- 1:04Gotham is now the co-founder of guitar and a Gentech AI star that automates
- 1:07code maintenance.
- 1:08In today's conversation,
- 1:09we cover how Gotham acts onto the lead at Uber's job of monorepo,
- 1:13which had thousands of developers committing to it.
- 1:16In-house engineering tools like Monorepo,
- 1:18submit queue,
- 1:19local developer analytics and dev pods,
- 1:22AI's impact on software development.
- 1:24Why VI coding will spread and why got believes Junior does will thrive with AI tools.
- 1:29Uber's engineering culture is very unique even across tech companies and
- 1:32this epi is a perfect inside look of its early days.
- 1:36If you enjoyed the show,
- 1:37please subscribe to the podcast on any podcast platform and on YouTube.
- 1:42SPEAKER_0: Welcome to the podcast.
- 1:43SPEAKER_0: It's great to have you.
- 1:44SPEAKER_1: Oh, thanks so much Ka.
- 1:46SPEAKER_1: Glad to be here.
- 1:47SPEAKER_1: Thanks for having me.
- 1:48SPEAKER_0: It's good to reconnect.
- 1:50SPEAKER_0: We talked a lot while you were at Uber.
- 1:53You were on the platform team and your work touched a lot of the systems that we
- 1:59worked on.
- 2:00SPEAKER_0: Every engineer causes outages at Uber.
- 2:02SPEAKER_0: I did it, people on my team did.
- 2:04What was a memorable outage that you might have caused accidentally or deliberately?
- 2:10SPEAKER_1: So this is a funny story.
- 2:12Towards the end of my career there,
- 2:15I accidentally deleted the Java Monorepo Uber and there were thousands of
- 2:20devs committing this.
- 2:22Yeah,
- 2:22the Java monorepo,
- 2:24that was one of,
- 2:25we had two big back in Monorepo,
- 2:28right?
- 2:28SPEAKER_0: Go and Java.
- 2:29SPEAKER_1: Go and Java.
- 2:29SPEAKER_1: Yeah.
- 2:30So this was after we did the migration on almost everyone was using the Java.
- 2:35Yeah,
- 2:36it was pretty funny because what the story is essentially,
- 2:39I don't think many people know about this because I record pretty quickly,
- 2:42but I was trying to test something out like a test repo and I was like,
- 2:48Hey,
- 2:49I need to copy the GI push command.
- 2:52SPEAKER_1: We created the repos on push, so I copied the URL from the Java mon repo.
- 2:57I forgot to change it and then when I pushed,
- 3:00usually at Uber they prevent you from force pushing and it said,
- 3:06Hey,
- 3:06I can't force push and I didn't really read the message.
- 3:09Then I was like,
- 3:09why does this,
- 3:10I should be able to force push and I did with some special flags and there's
- 3:15only few people,
- 3:16maybe like three people at Uber who can force push with that flag because I was
- 3:20part of the platform team and we didn't want anyone else to do it.
- 3:23SPEAKER_1: And I pushed and then someone pings me on Slack.
- 3:26SPEAKER_1: Hey, so the repo is initial commit, what's going on?
- 3:32SPEAKER_0: So you were at a principal engineer at this point, right?
- 3:35You were one of the most senior people and you were there for a long time,
- 3:38right?
- 3:38SPEAKER_0: This is not some, you didn't know what was going on.
- 3:42SPEAKER_1: I mean that's why I had the permission to push.
- 3:44SPEAKER_0: So hold repo gone until you verdict minutes later.
- 3:49SPEAKER_1: Was it minutes?
- 3:49SPEAKER_1: It was tricky because we had to get it back from a backup.
- 3:51SPEAKER_1: Yeah, it was not too bad.
- 3:52SPEAKER_1: It was a few minutes and I think we had an incident review.
- 3:56It was luckily at a time when we had a submit queue so the queue would pause
- 3:59automatically and said,
- 4:00Hey,
- 4:01no work is lost.
- 4:03We had really good backups in place so we reworded quickly and I was like,
- 4:07ah.
- 4:07SPEAKER_1: Got to be very careful with those copy paste commands.
- 4:10SPEAKER_0: Wow.
- 4:12SPEAKER_0: Well, but I guess you tested the backup actually worked.
- 4:16SPEAKER_0: You should have said that.
- 4:17SPEAKER_0: It was just a test.
- 4:18SPEAKER_0: I wanted just to see if how it actually worked.
- 4:22SPEAKER_1: Yeah.
- 4:23SPEAKER_1: Chaos engineering,
- 4:24This episode is brought to you by sent buggy lines of code and long API Calls
- 4:28are impossible to debug and random map crashes are things no software
- 4:32engineer is a fan of.
- 4:34This is why over 4 million developers use sentri to fix errors in crashes and
- 4:38solve hidden or tricky performance issues.
- 4:41Centriq has debugging time in half,
- 4:44no more soul crushing,
- 4:45lock sifting or vague user reports like it broke.
- 4:48SPEAKER_0: Fix it.
- 4:49SPEAKER_0: Get the context.
- 4:50You need to know what happened when it happened and the impact down to the
- 4:54device browser and even a replay of what the user did before.
- 4:57The error Central will alert the right dev on your team with the exact broken
- 5:01line of code so they can push a fix fast or let AutoFi handle alert repetitive
- 5:05fixes so your team can focus on the real problems.
- 5:09Sent help monday.com reduce their errors by 60% and sp up time to resolution
- 5:14for nextdoor by 45 minutes per DAF per issue.
- 5:17Get your whole team on sent in seconds by heading to century.io/pragmatic.
- 5:22That is SENT y.io/pragmatic or use the code pragmatic on signup for three
- 5:30months on the team plan and 50,000 errors per month for free.
- 5:33SPEAKER_0: You reverted.
- 5:34SPEAKER_0: Thankfully nothing crazy happened, but this is a pretty big deal.
- 5:37SPEAKER_0: How can we imagine, what was the response of your manager?
- 5:43SPEAKER_0: The incident review?
- 5:44I mean yes,
- 5:45sure you were an experienced engineer,
- 5:46but come on,
- 5:46this was a big deal.
- 5:49So the good thing was since we had a summit queue and we can talk about it a
- 5:52little bit more,
- 5:53only thing it affected was the amount of time it would take for a commit to
- 5:57merge onto main.
- 5:58SPEAKER_1: So usually everything would get serialized.
- 6:00So all that it looked like was there was a 20 minute delay while we recovered
- 6:05everything and then everything just flowed naturally.
- 6:09So it was just like a random CI failure you would see,
- 6:12but we had so much recovery automated in place,
- 6:15it was almost a non-event and the only SLO we broke was the latency SLO,
- 6:19no reliability SLOs were broken.
- 6:20SPEAKER_1: So that was pretty good.
- 6:22All the systems we put into place in the many years actually worked to save me
- 6:26that day.
- 6:27And this is a good way to say into the next one,
- 6:30Uber's unique engineering stack.
- 6:33I worked at Uber,
- 6:34I worked for a lot shorter time than you,
- 6:36but we overlap.
- 6:37SPEAKER_0: You were there when I started and you were still there when I left.
- 6:41SPEAKER_0: Uber had a lot of unique systems.
- 6:43Can you talk about some of them and how they came about and why did Uber build so
- 6:49much of its stack?
- 6:49SPEAKER_0: Well Uber and also you built a lot of that stack, right?
- 6:53SPEAKER_1: Yeah, absolutely.
- 6:53So when I joined Uber in 2014,
- 6:56I was like Android engineer number eight I believe if I remember correctly.
- 7:00SPEAKER_1: And there was no unit tests.
- 7:01So I wrote the first unit test for the Android code base,
- 7:04then I set up the active factory.
- 7:06SPEAKER_1: Yeah, it was pretty funny.
- 7:07We were shipping so fast that people were just integration testing using
- 7:12their mobile phones.
- 7:13SPEAKER_1: It was just very, very fast growth.
- 7:15SPEAKER_0: This was in
- 7:17SPEAKER_1: 20 15, 20 14 is when I joined.
- 7:20So then I brought in Artifactory so we could share stuff and over time what
- 7:24ended up happening was a lot of the stuff you take for granted today,
- 7:28the cloud native SaaS products for observability or hosting source score
- 7:34were just not built for our scale back in the day.
- 7:37So we had to build a lot of stuff in-house to solve some very crazy problems.
- 7:41SPEAKER_1: So we had commits going in almost one every minute.
- 7:45I think,
- 7:46and that might not seem like a lot,
- 7:48but when you have thousands of engineers working on code basis where you can
- 7:51easily go into merge conflicts,
- 7:53that was a big deal.
- 7:54I hear a lot of companies saying it or at the time it was probably to say it's not
- 7:58built for our scale.
- 7:59SPEAKER_0: What was that scale?
- 8:01I mean you mentioned the one commit per minute,
- 8:03which I can actually attest to that build systems could not handle at least
- 8:07mobile build systems could not handle that,
- 8:09but what other scale was considered just way bigger than what commercial
- 8:14vendors supported?
- 8:16SPEAKER_1: Yeah, absolutely.
- 8:17So I think the build system part was definitely one because bills are taking
- 8:20us way too long.
- 8:22I think we embarked on a big app rewrite I think when you were there,
- 8:25I think you talked about it before.
- 8:26It was funny,
- 8:29I was actually in Amsterdam and that happened in between and then my boss
- 8:32calls me up,
- 8:33Hey,
- 8:34this build time is getting crazy.
- 8:35SPEAKER_1: We need to somehow bring it under control.
- 8:38SPEAKER_0: Oh that was you.
- 8:39SPEAKER_1: Yeah, I was there and it was almost an hour something plus.
- 8:44So if we actually seal analyze all the commits one by one to make sure there was
- 8:47no merge conflicts,
- 8:49it would just take forever.
- 8:50SPEAKER_1: And if it did not do that, our main bench would be red.
- 8:53We had this graph where it was like red,
- 8:55green,
- 8:56red green,
- 8:56red,
- 8:56green and it was impossible to work.
- 8:59There were so many teams trying to hit their deadlines and you were depending
- 9:02on so much work from the other teams like the networking library or the
- 9:05platform experimentation or a feature library from some other team.
- 9:09SPEAKER_1: It was just not possible to do this without Green Main essentially.
- 9:14So it's not just the bill system time but also the fact that when you push something,
- 9:20if you don't run tests against the other part of the code,
- 9:23then you're just not going to have a good time.
- 9:25SPEAKER_1: You will just be stuck reverting stuff.
- 9:27SPEAKER_1: Someone would be on call all the time.
- 9:29SPEAKER_1: So it was a combination of factors, it made to be very hard to work with.
- 9:34SPEAKER_0: And also we did do that on that project specifically.
- 9:36We turned off end-to-end test I think for two or three days to speed things up
- 9:40and sped things up.
- 9:42And then we had so many regressions took more time to,
- 9:48I think for two or three days we turned it off and for the next week everyone was
- 9:51fixing the regressions that sneaked in underneath.
- 9:55SPEAKER_1: Yeah, I think we got a request at some point.
- 9:57SPEAKER_1: Can you just turn off ci?
- 9:58SPEAKER_1: And I was like, what's going to happen if we actually did that?
- 10:02And I had to really talk people down saying you cannot just turn things off.
- 10:05SPEAKER_1: It's going to make things worse.
- 10:07SPEAKER_0: So there was the submit queue.
- 10:10Can we talk about what Submit Queue was and why it was unique at least
- 10:15initially to Uber even to this date,
- 10:17I'm pretty sure only a few companies have anything like that.
- 10:21Yeah,
- 10:21I think Submit Queue is essentially a way for you to guarantee a green main.
- 10:25So it's a way to kind of serialize your comments coming in and make sure that
- 10:28they play nicely with each other.
- 10:30There are some more open solutions now,
- 10:32but when we did at the time,
- 10:34we had actually a paper that we published.
- 10:37SPEAKER_1: It was fairly novel because we had very low tolerance for main being red.
- 10:43So we'd always want to guarantee a green main,
- 10:46which means we had to figure out how do we actually test changes coming in and
- 10:49make sure that the cross dependencies between different commit commits
- 10:53were considered.
- 10:54So it's just a way to kind of handle commits at scale and make sure that when
- 10:58everything merges,
- 10:59everything still builds with each other.
- 11:01And that's a trickier problem than it sounds because we had to test things in combination,
- 11:05discard some paths and do a lot of processing on the backend,
- 11:09but it was just one of the systems I think we had to build a ton more check and
- 11:12talk about as well.
- 11:13SPEAKER_0: I was the consumer on this side, I was just using it.
- 11:16SPEAKER_0: It was just a build system for me.
- 11:18But I didn't realize for quite a while that because my team,
- 11:22the 10 of us who were working on it,
- 11:24we didn't really have merge conflicts with each other.
- 11:27We were working in different parts of the code,
- 11:29but it took me a while to appreciate that when I was pushing something at any
- 11:34given time there would be maybe 10,
- 11:2720,
- 11:2730 people on the same code base in mobile working and each build would take 20,
- 11:2730,
- 11:2740 minutes.
- 11:45And then behind the scenes actually I understand only when I read the paper
- 11:48that you were looking checking is this code path in conflict?
- 11:52SPEAKER_0: If so, which one should we build beforehand?
- 11:54SPEAKER_0: There were all sorts of probability models.
- 11:56SPEAKER_0: There's a bunch of math in that paper as well, right?
- 11:59SPEAKER_1: There's a lot of ML models too.
- 12:01I think we had to estimate what would potentially cause a failure and
- 12:05speculatively try to go on paths that might be green to try to optimize and
- 12:10then backtrack if we didn't make that goal and we would make that model better
- 12:14over time.
- 12:15SPEAKER_1: So it was quite interesting.
- 12:16SPEAKER_1: I think if you didn't notice, that's a good thing.
- 12:19SPEAKER_1: It means that it worked as it's supposed to do.
- 12:22SPEAKER_0: One thing that Uber did as an engineering practice was mono repos.
- 12:27Can you tell us how it,
- 12:29Uber had multiple repos,
- 12:30but it all started with the iOS monorepo and I recall you were there.
- 12:35Can you tell us how decision was made to go from having a bunch of separate
- 12:40repos initially an iOS leader on Android and say,
- 12:43all right,
- 12:43let's just do one big repository and why did this happen and what happened next?
- 12:49So it's funny,
- 12:50I mentioned I think early on we didn't have tests at that point very,
- 12:54very early on we had two apps,
- 12:57rideranddriveronbothiOSandAndroid
- 12:59And we had another repository called library,
- 13:02which is the common component between the rider and driver app,
- 13:04which was just as a subpoint you would pull in and it was really painful to pull
- 13:08in as a submodule.
- 13:09So we said,
- 13:10Hey,
- 13:10let's set up some sort of cocoa parts artifactory thing where you could
- 13:13download stuff from somewhere.
- 13:16SPEAKER_1: But as we grew, we realized we couldn't put everything in one place.
- 13:19SPEAKER_1: We had a networking team, experimentation team, a analytics focused team.
- 13:25They all wanted their own sort of nice little playground so they could experiment.
- 13:30So we went off and had hundreds of repos for a while where everyone was just
- 13:35unaffected by everyone else could focus on their priorities and deliver.
- 13:38But then when you wanted to pull in these changes,
- 13:42let's imagine the networking library changed.
- 13:44SPEAKER_1: We had to update networking.
- 13:46SPEAKER_1: Then the analytics library that relied on it.
- 13:47SPEAKER_1: Then maybe the experimentation, maybe some other feature library.
- 13:51It was really painful to upgrade and pump and we were sort of on the hook
- 13:55because anything that the product teams don't do,
- 13:57the platform team ends up being the kind of catchall and you're like,
- 14:01Hey,
- 14:01this is not going to scale.
- 14:03I think someone on the iOS team was like,
- 14:06Hey,
- 14:06we should just go to Monte report.
- 14:07SPEAKER_1: We'll just take a weekend.
- 14:11SPEAKER_0: Famous lost words.
- 14:12SPEAKER_1: I know, but they took a while.
- 14:15It didn't take a weekend,
- 14:16but the iOS team did it and it was very effective for them.
- 14:20SPEAKER_1: It was a lot of pain initially and I think happened at the same time.
- 14:23SPEAKER_1: They're moving to a new language Swift as well.
- 14:25SPEAKER_1: So that was like double whammy.
- 14:27SPEAKER_1: They had to do both.
- 14:29They pulled it off and the gains in productivity were massive because you
- 14:33don't have to go bump libraries because we were not an open source.
- 14:38SPEAKER_1: Make sure the interfaces are nice for external consumption.
- 14:40It's one company,
- 14:41one code base,
- 14:41so I can't,
- 14:42they update my LI'S public API and just update all consumers in one shot.
- 14:47SPEAKER_1: It should be possible.
- 14:49SPEAKER_1: So mobile did it and Android quickly followed suit.
- 14:52SPEAKER_1: We actually froze the code for a weekend and we did everyone over.
- 14:56We moved everyone over and it was painful at the start because the build systems,
- 15:01as I mentioned,
- 15:01were not meant for hundreds of modules in the repository.
- 15:05SPEAKER_1: We have seen some changes to Google to make it better.
- 15:07And then after a while we migrated to a new build system,
- 15:11buck from Facebook at the time,
- 15:14and we wrote some auto conversion from the existing system to the new system.
- 15:17SPEAKER_1: So we had both at the same time.
- 15:20SPEAKER_1: That was really successful.
- 15:21SPEAKER_1: Once things were fast, the NPS improved again.
- 15:24SPEAKER_1: Monte was good.
- 15:25So the gist as monorepo non monorepo,
- 15:29if you don't have tooling,
- 15:30it's going to suck at bigger scale.
- 15:33SPEAKER_1: You have to invest in tooling.
- 15:35As your companies grow,
- 15:35typically this need becomes more and more obvious as things start slowing down.
- 15:40And then later we had the jam monorepo and we migrate over to Basil and we had
- 15:46the go monorepo.
- 15:47And I think what we realized with the Monorepo was that the main thing that
- 15:50helped us do was it was standardized,
- 15:52which meant to make a big change.
- 15:55One team could go do it,
- 15:56like a centralized team could just take the burden of updating this one
- 16:00networking library for everyone or updating Google Play services for everyone.
- 16:04SPEAKER_1: You just cannot do that in hundreds of repositories.
- 16:07SPEAKER_1: It's just very wasteful amount of work.
- 16:10SPEAKER_0: And what was the biggest pushback that the teams initially had?
- 16:13Because I remember the mobile ones,
- 16:15they actually happened and it was very practical,
- 16:18but then when the Java and the goal was happening,
- 16:21I remember a lot of teams were dragging their feet like,
- 16:23I'm not sure we want to do this.
- 16:24SPEAKER_0: It's going to slow things down.
- 16:27Do you remember what the biggest skepticism was and then how it turned out?
- 16:34Yeah,
- 16:34the biggest skepticism is usually right now before monorepo I could break an
- 16:38API and not worry about it.
- 16:40The tax is paid by someone eventually this is deferred,
- 16:44it still needs to get paid,
- 16:46but the monitor report,
- 16:46if I do it,
- 16:48I have to think about my interface design more and my bills are going to be
- 16:51slower with the argument with the new build system,
- 16:54we kind of said,
- 16:55Hey,
- 16:55the bills are not going to be slower,
- 16:57but people would always come up with reasons saying,
- 16:59Hey,
- 17:00if I did this upgrade then I had to do it for everyone.
- 17:03SPEAKER_1: So we said, okay, you know what?
- 17:04We will make it possible for you to just upgrade your part of the code in some scenarios,
- 17:09but otherwise we want to have everyone be standard.
- 17:11It does make things a little slower,
- 17:14but then as a business it makes a ton of sense because you might not see the
- 17:19macro picture on your team that hey,
- 17:21you might be slowing slow a little bit,
- 17:22but everyone else gets a huge productivity boost.
- 17:26They didn't have to spend the time you did on each and every one of those teams
- 17:30to get up to speed.
- 17:33SPEAKER_0: It is massive.
- 17:33SPEAKER_0: Is it safe to say that mono repos often?
- 17:36SPEAKER_0: Not always.
- 17:36They bring almost necessary friction where making certain changes will be
- 17:44painful because they should be painful because when they were not painful,
- 17:48they were masking something down the road of let's say I updated a dependency
- 17:52to something else and then it has to trickle down.
- 17:56Otherwise you'll have these problems,
- 17:58but they'll only come out in weeks or months later.
- 18:02SPEAKER_1: To be fair, you can also do stuff they thought them on April.
- 18:04I know companies like Amazon,
- 18:06Netflix too,
- 18:07multi repo setups,
- 18:08but they build tooling especially to handle those cases where you have
- 18:12golden version sets that work with each other.
- 18:14SPEAKER_1: It's a little bit like a monorepo without being a monorepo.
- 18:18So you can make both work,
- 18:20but repo is just generally easier in my opinion,
- 18:25just having construed both.
- 18:27SPEAKER_1: But if you want to go the other route, you absolutely can.
- 18:29SPEAKER_1: You still have to invest either way as your code base goes.
- 18:32SPEAKER_0: And what were some other novel slash innovative things?
- 18:36I mean it sounds like you had to invent some of these things at Uber because
- 18:39there was just not a solution that you could buy or it was just really
- 18:43expensive or not built for this use case.
- 18:47SPEAKER_1: Absolutely.
- 18:48So the other thing I think,
- 18:49which is interesting for us is as I mentioned,
- 18:51build times are a problem.
- 18:52SPEAKER_1: We only knew because we first had to measure it.
- 18:54I think back in the day,
- 18:55a lot of the measurement products for developer observability but just not
- 18:59built for the entire SST LC.
- 19:02So what I mean by that is you might have a CI check-ins back in the day that would
- 19:06tell you how long your bills would take,
- 19:08but you had no idea how much your indexing time would be in your IDE and we had
- 19:12very complex projects or we had no idea what was the time between pushing and
- 19:17code review.
- 19:18SPEAKER_1: So we built a system at Uber called local developer analytics.
- 19:21We call it LDA for short,
- 19:22which was a little demon that used to run on your machine,
- 19:26collect information about your system,
- 19:28what's your CPU usage,
- 19:29memory usage,
- 19:30but also integrate deeply into a lot of the CLI tools,
- 19:34the IDE.
- 19:35So we would for example,
- 19:36know when you open your project,
- 19:38which file you went to where,
- 19:41which part of the file you're actually coding the most,
- 19:43which files would have the most bugs,
- 19:45and then you could also see a funnel in a traditional product funnel,
- 19:48we care about developers as the end user,
- 19:52you would see analytics saying,
- 19:53Hey,
- 19:54there was a drop in the funnel.
- 19:55People could not create prs because this part of the build process would add a
- 19:59lot more often than the others.
- 20:00SPEAKER_1: So you would go and know what to target.
- 20:02And it was fairly novel because I gave it a few talks at a few different
- 20:07conferences and not even big companies had something like this back in the day.
- 20:10And I think we still use that today to power a lot of the dashboards and the deep
- 20:14analytics that we get from the developers workflows.
- 20:19SPEAKER_0: Yeah.
- 20:20SPEAKER_0: You've been a developer of productivity.
- 20:23You talk with a lot of people and know a lot of people,
- 20:25but what do most companies do?
- 20:27SPEAKER_0: Do they just ask developers how does it feel or?
- 20:31I think that's a very important thing to do for sure,
- 20:33because even if you have all the measurement,
- 20:34if the development doesn't feel right to you,
- 20:37you still want to ask that you want to have a survey,
- 20:39which we did.
- 20:40In fact,
- 20:40I remember when we started doing the surveys,
- 20:43I think we had an NPS score negative 50 something,
- 20:46and when I left it was positive eight or something like that.
- 20:50SPEAKER_1: So I call it as a win that we did a lot of effort.
- 20:53So you do your survey as the very first step,
- 20:55which we did,
- 20:56but then you measure the easier things like your time to review code or time to
- 21:01build code stuff that's out of the developers control you want to minimize
- 21:05and also time spent in meetings.
- 21:06Those are things that you could probably get easily,
- 21:08but the deeper stuff is only worth it if you see that those bottlenecks are
- 21:13adding up.
- 21:14If you're making changes but you're not seeing people are happier,
- 21:18you'll always see developer's complaint bill times are slow or ID indexing
- 21:22is slow.
- 21:22SPEAKER_1: That's when you know, okay, you need to measure things.
- 21:24SPEAKER_1: But now I think products like Cisco campaigns have better analytics.
- 21:28I think we've worked with JetBrains for example,
- 21:30in trying to make them understand,
- 21:32hey,
- 21:33these are some of our problems.
- 21:34SPEAKER_1: It'll be great to have solutions out of the box with these.
- 21:36And some of those did make it upstream into a products that everyone uses today.
- 21:40So we call that as we kind of had to forge our own paths and eventually all the
- 21:45vendors would catch up based on what the industry was doing.
- 21:49Yeah,
- 21:50but it's interesting how back then there was nothing and you kind of pinpointed,
- 21:55I guess one advantage that Uber always had is we had a lot of developers and
- 21:59there was actually a dedicated,
- 22:02what was your team's name?
- 22:03SPEAKER_0: Was it developer platform?
- 22:05SPEAKER_1: We were called developer experience.
- 22:07SPEAKER_1: They had multiple names.
- 22:08I think we were mobile infra first,
- 22:10then mobile developer platform,
- 22:11then developer platform.
- 22:12SPEAKER_1: That was the final name we had.
- 22:14SPEAKER_1: But funnily, actually the team was not that big.
- 22:17We had my team was about 10 people and we supported about a thousand engineers
- 22:21and that's roughly the breakdown.
- 22:23So you would see that speaking to peers in the industry,
- 22:27the team size are about the same.
- 22:29You have a very small code centralized team and then you have a much bigger
- 22:32product organization that they support.
- 22:34So it's very common and that means that you have to find ways to scale yourself
- 22:39and be effective.
- 22:41And then there was another project that I remember that was just taking off
- 22:44just in my last year.
- 22:46SPEAKER_0: It was called Dev pods.
- 22:48SPEAKER_0: What was that?
- 22:50So I think a lot of people might've heard the term cloud developer
- 22:54environments or developer environments in the cloud.
- 22:58So we call these dev parts and what it is essentially is a container of your code,
- 23:04your bill system artifacts,
- 23:06your IDE indices in the cloud.
- 23:09And what we did at Uber was fairly unique in the sense that we figured out some
- 23:14ways to make it good,
- 23:15really,
- 23:15really fast and have pretty much everything pre-IND index.
- 23:19It is one of the most loved products there because you could essentially
- 23:23multiplex yourselves now rather than trying to switch branches,
- 23:28re-index your code or context,
- 23:29which you could have 10 different parts working on different features and
- 23:33they could have everything warm.
- 23:35You could contact switch quickly,
- 23:37you could kick off a build and go do something else.
- 23:40SPEAKER_1: It was actually great.
- 23:41I think we put a lot of engineering effort to make that scale really well.
- 23:45SPEAKER_1: And it was a fairly small team as well.
- 23:46SPEAKER_1: Actually a bunch of those folks are still in Amsterdam now working on the
- 23:49SPEAKER_0: Product.
- 23:49And can you just explain,
- 23:50because I think most companies just do not have anything like that.
- 23:53SPEAKER_0: As a developer, what can I imagine?
- 23:56SPEAKER_0: Okay, I joined Uber depos is there, what does that mean for me?
- 24:00SPEAKER_0: What
- 24:01SPEAKER_1: Can I do?
- 24:01So when you onboard previously we used to have this boots strapping script
- 24:04you would run,
- 24:05it's funny,
- 24:06we do this now we have a bootstrap shell script that everyone just keeps updating.
- 24:11There was a shell script and then which usually worked well,
- 24:14but sometimes it crashed and then we would have to ping the on call of your team,
- 24:22but it was a pretty involved script.
- 24:23SPEAKER_0: It would take sometimes minutes to run out a lot of magic under the
- 24:28SPEAKER_1: Hood.
- 24:29And the problem with that is it's hard to keep it forward and quite compatible
- 24:32with your system updates on Mac.
- 24:34SPEAKER_1: So it was definitely not worth maintaining overtime.
- 24:37SPEAKER_1: But the deports is interesting.
- 24:40I think just when we started seeing some of these solutions like via coded
- 24:43remote or JetBrains projector become a little bit more mainstream,
- 24:47we said,
- 24:47Hey,
- 24:48why don't we move this development stuff into a container?
- 24:52SPEAKER_1: It should be easy, but it's actually much more than that.
- 24:55These containers can be huge multiple gigabytes because some of these
- 24:58artifacts and disease are huge.
- 25:01We had to make sure we also use compute efficiently,
- 25:04so we would have to have multi-tenant because developer workloads are very spiky.
- 25:08They don't always have a stable pattern like a server workload,
- 25:12which means that you had to understand when to scale up and down.
- 25:15We have developers in different time zones,
- 25:17so we have to also provision machines closer to them so the bail caches would
- 25:21be warm closer to where they're working.
- 25:24Otherwise you don't upload everything from a data center in the us but you
- 25:28might be working in India and the latency will pretty bad.
- 25:31SPEAKER_1: It's a lot more nuanced I think, than just spinning up a container.
- 25:35A lot of the solutions out there now are just focusing on content izing stuff,
- 25:39but not thinking through a lot of these other factors that are important.
- 25:42SPEAKER_1: So we went through and made a lot of improvements here.
- 25:45Some of that stuff,
- 25:46actually one of the funny things I remember is I think Jet Bains had this one
- 25:51shared index thing that they had a while back where you could download the
- 25:55index of the project,
- 25:57but I think the way they were doing it previously,
- 25:59you would have the full path of the system in the index.
- 26:03So you would download a de-normalized path and then you would normalize it to
- 26:07your system just populating all the absolute paths would take a really long time.
- 26:12We measured it was take an hour to actually index that shared index for chat pains.
- 26:18But then on DevOps what we did,
- 26:20we just said,
- 26:20Hey,
- 26:20everything's in our control.
- 26:21SPEAKER_1: Let's just put everyone at home user.
- 26:23So it'll be like closing the laptop and opening it again so we could just throw
- 26:28the cash there.
- 26:29SPEAKER_1: Everyone was at home user.
- 26:30So now no more time spent normalizing the cash,
- 26:34which meant we had a six second boot up,
- 26:36which is pretty insane for a dev environment.
- 26:38SPEAKER_1: So you would come in, you would say dev port, start something and done.
- 26:42You don't need to do any bootstrapping,
- 26:44not learn something,
- 26:45and you would have one flavor per monitor you to work on.
- 26:48So a data engineer or like a backend engineer or a mobile engineer would have
- 26:51their own flavor and that's very optimized for that workflow.
- 26:55So it's basically you go on and say Dev po start,
- 26:58and then in a few seconds you have your web,
- 27:01sorry,
- 27:01your local editor,
- 27:03you're using your local editor,
- 27:04but it's kind of connected magically from your perspective.
- 27:08SPEAKER_0: So you feel like you're working locally, but it's just all set up.
- 27:11SPEAKER_0: It works.
- 27:12SPEAKER_0: You can build immediately, you can run your tests, et cetera.
- 27:15Yeah,
- 27:15you would have lots of course as well,
- 27:17so you could run lot faster than running it locally.
- 27:20SPEAKER_0: That's pretty awesome.
- 27:22I previously did a coverage on,
- 27:24did a deep dive on cloud-based development environments I think two years ago.
- 27:27One thing I'm noticing is there's not much talk about these things even
- 27:30though they're just so darn efficient.
- 27:32Do you see kind of excitement in this space or is just AI right now blurring
- 27:38everything out?
- 27:39SPEAKER_0: To me this was a really big win?
- 27:43SPEAKER_1: Yeah, I think the environments are still good.
- 27:45SPEAKER_1: I think a lot of companies do want to use this for efficiency sake.
- 27:48The challenge usually comes with I think the understanding that I have
- 27:53talking to peers in industries,
- 27:54if you start to start with the solution rather than the developer workflow,
- 27:58Hey,
- 27:58we have a container environment,
- 27:59make it work for your developer workflow versus you have a particular way to work,
- 28:03let's make it work in a container or vm.
- 28:06SPEAKER_1: So we took the other approach and that is why we were so effective.
- 28:09SPEAKER_1: We were like, Hey, these caches have to be super fast load.
- 28:13Other stuff can come in a sync and not everyone would have that insight if left
- 28:17to their own devices.
- 28:18Teams might devise a docker file that has stuff,
- 28:21but then how are you getting it up to date as your team churns out more code?
- 28:25SPEAKER_1: Are your indices actually getting up to date?
- 28:27Otherwise you're spending a bunch of time after bootstrapping to e index
- 28:30stuff or redownload stuff.
- 28:32So you would push these updates every few hours completely transparently in
- 28:36the background.
- 28:37So it was very much like a golden path that we had to happen upon and that's why I
- 28:42think if you have that knowledge of the entire developer workflow,
- 28:46you can adapt it to each company's individual working style.
- 28:49If you give a general purpose thing,
- 28:50it'll work but may not actually work so well out of the box and you may not have
- 28:54the investment you may want to make to make it work for you.
- 28:56SPEAKER_1: Yeah,
- 28:57It sounds like there's no free lunch you need to put in the work and Uber had so
- 29:01many years of understanding investing and being there.
- 29:05Speaking of years,
- 29:07you spent nine years at Uber and when you joined you were an inch two,
- 29:11is that right or Yes.
- 29:13SPEAKER_1: I was an inch two when I joined one, I guess.
- 29:15SPEAKER_1: Yeah, what is the lowest level?
- 29:17SPEAKER_1: Whatever the lowest level was
- 29:20Level when you left,
- 29:21you were a principal engineer,
- 29:22which is there's not many principal engineers,
- 29:25several,
- 29:25a few dozen or something like that.
- 29:27SPEAKER_0: So
- 29:28SPEAKER_1: You were promoted actually Yeah, maybe a couple dozen.
- 29:29SPEAKER_1: Yeah, not that
- 29:31SPEAKER_0: Many out of the closer to two, 3000 people working in tech.
- 29:37And so you were promoted,
- 29:39I think I counted four or five times in nine years.
- 29:42SPEAKER_0: Can we talk about your journey?
- 29:45SPEAKER_0: How did you do it and what did you learn on the way?
- 29:49SPEAKER_1: Yeah, absolutely.
- 29:49I think one of the cheat codes is obviously joining early helps a lot,
- 29:54especially for getting on a rocket ship,
- 29:57but it's hard because when I joined we didn't have as many people.
- 30:00SPEAKER_1: The platform teams were tiny.
- 30:02SPEAKER_1: It was so small.
- 30:03It was funny because I jumped straight from entry-level to senior,
- 30:06so I skipped a level because the first year was just put through the paces of
- 30:11you need to get a lot of stuff done and I was shipping really fast.
- 30:14SPEAKER_1: So that helped obviously one jump up, but it gets harder over time.
- 30:18SPEAKER_1: I think your roles also change a lot over time.
- 30:20I think one of my good friends early on in the platform team said,
- 30:25Hey,
- 30:25if you can get into a niche and go deep,
- 30:28it can really help over long term,
- 30:30especially stuff that people may not want to do,
- 30:32like telpro platform,
- 30:33telpro tooling.
- 30:34Not everyone likes to do it,
- 30:35but if I said,
- 30:36Hey,
- 30:36I really like this because I'm passionate about it,
- 30:39that helps because then you become the go-to person for that aspect.
- 30:43So as the company grew,
- 30:44it was very obvious that hey,
- 30:45I had to scale myself to larger and larger efforts.
- 30:49So starting on mobile,
- 30:50then I started working on packet stuff and then on more holistic entire
- 30:55organization stuff.
- 30:56And that takes breaking your own comfort zone a lot,
- 31:01challenging yourself every year or two.
- 31:02So every two years I do some introspection and say,
- 31:06Hey,
- 31:07am I doing what I want?
- 31:08SPEAKER_1: Do I enjoy what I'm doing?
- 31:10SPEAKER_1: What can challenge me more?
- 31:12SPEAKER_1: And then I try to go for that.
- 31:14Usually the path opens up if you go that way rather than trying to chase a
- 31:17particular level.
- 31:19Then when you're pushing the boundaries,
- 31:21the next level becomes obvious then past a particular point.
- 31:25SPEAKER_1: It just also helps to have a lot of connections.
- 31:28SPEAKER_1: Social capital mentorship is a very important at a big company.
- 31:31So it definitely went and got some mentorship with some more senior folks
- 31:35that helped a lot to understand how these principal engineers operate and
- 31:40what's required.
- 31:41It's more than just the engineering,
- 31:43it's also the business side of things.
- 31:45How do we actually solve problems and focus on the business metrics and bring
- 31:52that to engineering rather than start from bottom up.
- 31:55And when you say you need to get some social capital and mentoring,
- 31:58it can sound a little bit of hand wavy to people of like,
- 32:01okay,
- 32:01but how did you get that?
- 32:04I'm not going to ask how you went about it,
- 32:06but it sounds like you didn't say,
- 32:07oh,
- 32:08I want to get social capital,
- 32:09but what were things that you did that you think actually helped build up and
- 32:13people saying,
- 32:14oh,
- 32:14like God,
- 32:15I really trust this person.
- 32:16SPEAKER_0: I know him, he's a go-to person, et cetera.
- 32:20Yeah,
- 32:20so one thing that helps is I have this habit of just helping people a lot.
- 32:25So when people come to me with a problem with their dev environment,
- 32:28I would just drop everything and say,
- 32:29Hey,
- 32:29let's try to figure it out.
- 32:30I'll spend a little bit of time box it and if it fixes the problem then I hire
- 32:36some social capital.
- 32:36SPEAKER_1: It kind of accumulates over time.
- 32:38They would send else to you and over time you can automate some of this stuff.
- 32:42And I think I was one of the early people on the platform team to have office server.
- 32:46So I would say,
- 32:47Hey,
- 32:47anyone can come in and just talk about your problems.
- 32:50SPEAKER_1: And we would just empathize a lot with everyone.
- 32:52SPEAKER_1: Say, Hey, I know this sucks.
- 32:54SPEAKER_1: We're working on it.
- 32:54It helps a lot to humanize the problem because developers usually being you
- 32:59on Slack and over time what happens is as you solve more and more problems,
- 33:05it's always good to attempt and if you can meet the expectation,
- 33:08just say,
- 33:08Hey,
- 33:08I can't solve this right now,
- 33:10then try to say,
- 33:11okay,
- 33:11that's not in my area,
- 33:13and we just try to help you out and that really helps build trust with the other side.
- 33:18And then when you go for mentorship,
- 33:20it's like,
- 33:20Hey,
- 33:20I clearly know you have the right sort of mindset.
- 33:25You have the right goals in mind or the right intentions,
- 33:27so I would love to help you go to the next level.
- 33:29SPEAKER_1: So that's usually what helps get very strong mentorships.
- 33:34And I can just plus one a little bit on the helping people because I was in Amsterdam,
- 33:39which is we say it's a distributed site,
- 33:41but we were just not in hq.
- 33:42We were a relatively small office compared to SF or even Palo Alto and headcount.
- 33:47And we felt a little bit isolated and sometimes a lot of times we would feel
- 33:52blocked by SF in reviews and anything.
- 33:57And after a while I knew that if I wanted to,
- 34:02you were one of the many people on the platform team,
- 34:04but I think either someone told me there was this thing,
- 34:08if you cannot cannot return anyone on the platform team try Gotham,
- 34:12he usually responds.
- 34:14And just thinking back,
- 34:15it was just well to me that I did get responses from sometimes and unexpected.
- 34:22SPEAKER_0: I didn't think I would get anything.
- 34:24I was just trying,
- 34:25but you did spend time on this and I just imagined that you had a lot of these
- 34:30things and I'm not saying you necessarily did it all the time and obviously
- 34:33people like me were doing it sparingly,
- 34:35but it built so much goodwill and also trust of like wow,
- 34:40I just felt that whenever you did go into a problem,
- 34:43you actually took it seriously.
- 34:46You kind of did it and as you said,
- 34:47often you would tell I cannot do this right now or it's a non-issue,
- 34:51et cetera.
- 34:52SPEAKER_0: So I didn't see everyone.
- 34:55SPEAKER_0: In fact, I saw pretty few people doing it.
- 34:57So it is interesting how it feels like something that would not scale,
- 35:02but I guess to some extent it did.
- 35:05SPEAKER_0: Is the starter mentality of do things that don't scale?
- 35:08Yeah,
- 35:09I think it definitely doesn't scale in all cases,
- 35:12but you can make it work.
- 35:13I think it's funny because some people won't even try because it won't scale.
- 35:18SPEAKER_1: My solution is like, hey, let's meet the person and see.
- 35:21SPEAKER_1: It may not even be an issue.
- 35:22Sometimes what you might discover is people are just finding it hard to find
- 35:26the right documentation because they just looked at the wrong guide and
- 35:30that's where they're coming to you.
- 35:31SPEAKER_1: Then you can just go make that fix and then you have much larger impact.
- 35:34But if you don't talk to people,
- 35:36you have these broken,
- 35:37you have the big picture,
- 35:38but then you lose touch of what's actually happening on the ground.
- 35:41SPEAKER_1: It's hard.
- 35:42So I think my policy was always like,
- 35:45Hey,
- 35:45I can always talk to someone,
- 35:46spend a few minutes and if it's a very esoteric thing I'll say,
- 35:50Hey,
- 35:50I can get back to you,
- 35:51but if it is not,
- 35:52I would rather just point you the right way.
- 35:55People joke when I left because they're like,
- 35:56Hey,
- 35:56we should go build gout,
- 35:57the LLM,
- 35:58because you would know the answers to pointed things at least so that we could
- 36:03find the right information.
- 36:04SPEAKER_1: So I was sort of like an encyclopedia of where to find stuff.
- 36:10And you were a principal engineer towards the end of your tenure at Uber,
- 36:14what is a principal engineer at Uber,
- 36:18and also previously we had an episode at Meta.
- 36:21SPEAKER_0: Meta has archetypes above staff engineer.
- 36:24Do you think you fit into an archetype or did you see archetypes at the
- 36:29principal level at Uber?
- 36:31SPEAKER_1: Yeah, I did listen to that episode.
- 36:34SPEAKER_1: It's a very good episode by the way.
- 36:35I think there is some resemblance to an archetype,
- 36:38although we don't actually call it that.
- 36:40So either you have depth in a particular area or you have a lot of breadth and
- 36:47sometimes it's a lot of internal influence or you might have a lot of external influence.
- 36:51SPEAKER_1: So it really depends on where you want to take your career.
- 36:55SPEAKER_1: I focus a lot on depth.
- 36:57As you can see,
- 36:57my specialization is data productivity and I have some amount of breadth
- 37:03because of all the social capital and talking to a lot of people usually makes
- 37:06you understand what are some of the business problems that Uber is going through.
- 37:09SPEAKER_1: So that was actually a good bonus for me.
- 37:11If I never talk to people,
- 37:12I won't even know,
- 37:13oh,
- 37:13these three teams are trying to solve the same problem,
- 37:16maybe we can centralize it or do it more efficiently.
- 37:19And I could come up with solutions and people would be like,
- 37:21Hey,
- 37:21how did you know that would work?
- 37:23SPEAKER_1: You just talk to people.
- 37:26And there were definitely lesser archetypes probably than meta I would say,
- 37:30but usually it's a bunch of breadth and depth and having people to sponsor you
- 37:35helps a lot.
- 37:36SPEAKER_1: So the mentorship angle is also part of that.
- 37:38If you're working with more senior engineers and they see you actually grow,
- 37:41they can give you feedback where you might be lacking and you might be able to
- 37:46work towards that goal.
- 37:47So I think that's one of the things I would recommend anyone who wants to go in
- 37:51that path.
- 37:51With principal engineering,
- 37:52it's a lot more you have to enjoy understanding how engineering meets
- 37:57business than just pure coding or just pure,
- 38:01what do you call it,
- 38:03not soft skill stuff.
- 38:04SPEAKER_1: A lot more soft skills need to be honed at that point.
- 38:08SPEAKER_1: It's like going and giving talks helps.
- 38:11And it's funny because when I was growing up,
- 38:13I was not very good at public speaking,
- 38:16but I made myself over time more comfortable.
- 38:19That helps also build external influence and a lot of the early folks that are
- 38:24using our product right now are people I met in the community and then they
- 38:28have that trust that they built over time.
- 38:30SPEAKER_1: So that helps
- 38:31SPEAKER_0: Quite.
- 38:32So this is a lot of people who are using your product right now at guitar,
- 38:35right?
- 38:36SPEAKER_1: Yeah.
- 38:37So I guess that's a good reminder of how,
- 38:41I guess when you're doing something,
- 38:43it might hopefully it'll help you outside of when you're at your current
- 38:48company and also help you while you're at the company.
- 38:52Yeah,
- 38:52my tip is generally if you really focus on the people side of things,
- 38:56you'll do really well in these higher levels because it's a lot of
- 39:00relationship management,
- 39:01both managing up and down and shielding your team from some of the noise.
- 39:07SPEAKER_1: And if you don't enjoy talking to people, it's harder.
- 39:10SPEAKER_1: You can still do it.
- 39:10There are people who do it,
- 39:11but it's a very unique path and not everyone can do it.
- 39:14But the most common path is usually understanding and spending time talking
- 39:20to people and figuring out solutions that are more creative over time.
- 39:23And that also makes you a problem solver,
- 39:26not just someone who can just code and finish up things up,
- 39:30but that's,
- 39:31of course,
- 39:32you can have different archetypes as you mentioned.
- 39:33SPEAKER_1: So it really depends on where you want to take things.
- 39:35But I guess at the principal entry level,
- 39:37it's kind of a given that you can code efficiently whenever and however it's
- 39:41just like you might not do it all the time by choice.
- 39:44SPEAKER_0: Right.
- 39:45It's funny because there was a graph someone sent me of number of years at the
- 39:50company and number of commits per year and number of reviews and there was a
- 39:56little graph,
- 39:57like an asymptotic graph,
- 39:59and there were two or three dots at the very extremes and then said,
- 40:03Hey,
- 40:03one of them is me,
- 40:04the other one is you.
- 40:06SPEAKER_1: Then I like, damn, I should ask my boss for a raise.
- 40:10SPEAKER_0: So you were still writing a lot of code and doing a lot of reviews.
- 40:13SPEAKER_1: I do write a lot of code even here at guitar, I write a ton of code.
- 40:16I love to review stuff because it really opens up your perspective of what
- 40:20else is happening.
- 40:21I like to comment on documents and understand where there are
- 40:25inefficiencies potentially,
- 40:27but just over time I think you have a muscle to just do it,
- 40:31but it does not mean that you write tons of code.
- 40:32SPEAKER_1: It just means that you have consistent
- 40:34SPEAKER_0: Higher
- 40:35SPEAKER_1: Impact code.
- 40:37So a really interesting topic is given that you are a principal engineer,
- 40:41which was either the highest level or maybe there was one level above it,
- 40:45but there weren't many levels above that.
- 40:48SPEAKER_0: How was it like for your manager to manage you?
- 40:51And I know you also talk with a lot of principal engineers and you have some
- 40:55thoughts on what are some tips to manage these very,
- 40:58very senior engineers.
- 41:00SPEAKER_0: Can you help explain your relationship with your manager?
- 41:02SPEAKER_0: Was it really a boss or more of a partnership?
- 41:07SPEAKER_0: What worked at this level?
- 41:09I think that's a really good question because I think as you grow in levels,
- 41:14you're more and more like a peer to your manager.
- 41:17You help your manager get stuff done too because you have broader influence.
- 41:22Sometimes it can be hard as an EM to push for a particular priority because
- 41:29there's not enough senior people looking back.
- 41:31It might be just your direct develop person that's sponsoring that,
- 41:34but having someone on the team that's senior enough can completely change thoughts,
- 41:38for example,
- 41:38to get some things practiced.
- 41:41One tip I will give managers is if someone's asking you,
- 41:44Hey,
- 41:44I'm at a senior staff or I want to become principal after the senior levels,
- 41:50if they come ask you,
- 41:51it's hard.
- 41:52You should probably not ask that question to a manager because at some point
- 41:57you'll have to figure things out.
- 41:59There's very few managers who probably can help you after a particular point
- 42:03because they maybe done it before or have a lot of experience at the company.
- 42:08But most managers tend to work at senior or senior plus level and past that
- 42:14it's more like they're almost like the principal engineer on the team is load
- 42:18balancing a lot of stuff technically so the manager can focus on upleveling,
- 42:23everyone else.
- 42:24So the relationship is very much like a peer more than like,
- 42:27hey,
- 42:28step boss.
- 42:29SPEAKER_1: But it does help to get feedback.
- 42:30I think their managers are a very good asset when you want to do
- 42:34non-engineering stuff,
- 42:36for example,
- 42:37you want to get stuff unblocked and the engineering angle is not working
- 42:42because you've tried to rationale it.
- 42:44SPEAKER_1: Some team they won't listen.
- 42:46Sometimes it's just got to take the,
- 42:48hey,
- 42:49this is the priority to get this done,
- 42:51unblock yourself.
- 42:52So that's what I would say for ems who might be looking at higher level engineers,
- 42:59basically give them agency,
- 43:02but of course check in often and make sure that they're unblocked.
- 43:06They can do wonderful things as long as your org is not getting in the way from
- 43:11them trying to actually have impact.
- 43:14Yeah,
- 43:14this is always interesting because I don't think we'd really talk about this
- 43:18too much just because there's not many of these engineers,
- 43:21but even when as was a manager,
- 43:22I actually promoted someone,
- 43:25actually two engineers,
- 43:26a level above where I was,
- 43:27right?
- 43:28I mean it was a bit easier for me because I saw examples,
- 43:30but it's always interesting and I feel it kind of goes hand in hand for these things.
- 43:36SPEAKER_0: Those promotions really help usually the manager as well.
- 43:38And as you said,
- 43:39for a lot of managers it's a first and there's,
- 43:42there's no playbook after senior or staff.
- 43:45SPEAKER_0: It's all unique.
- 43:46It's all based on the business needs for the company in that specific area.
- 43:52But if you need to keep up with the engineer,
- 43:54then they can pull you up as well with them because then you can become higher
- 43:58level and you can focus on bigger picture stuff.
- 44:00You hear a lot of stuff from an org or a company perspective from the engineers
- 44:05because just talk to so many people.
- 44:07Then you might have opportunities that you may not have if you're solely
- 44:10focused on your team.
- 44:11Before we jump back into the episode,
- 44:13I want to let you know that the audiobook version of my bestselling book,
- 44:16the Software Engineers Guidebook,
- 44:17is out now.
- 44:18You can get it on all major audiobook platforms like Spotify,
- 44:21audible,
- 44:22liberal fm,
- 44:23apple Books to Google Play,
- 44:24and also DM free MP three files.
- 44:27I started writing this book after a decade of working as a software engineer
- 44:30when I was working as an engineering manager for a few years already at Uber.
- 44:35Here's a review from the book from senior principal engineer Tanya Rayley,
- 44:38who is the author of the staff Engineer's Path from Performance Reviews to P
- 44:3595 latency,
- 44:43from Team Dynamics to testing ade di diversifies,
- 44:46all aspects of a software career.
- 44:48SPEAKER_0: This book is well named.
- 44:49SPEAKER_0: It's really does feel like the missing guidebook for the whole industry.
- 44:53You can get the book@engguidebook.com or search for the software engineer
- 44:56guidebook on your favorite audiobook platform.
- 44:59SPEAKER_0: I hope you'll enjoy it.
- 45:01One thing we just kind of mentioned as natural is you worked on a platform team,
- 45:05but when you started,
- 45:08I am pretty sure there was not yet a platform team and then there was a split
- 45:13called the platform program split.
- 45:15SPEAKER_0: It was a very famous email that I think later we saw.
- 45:19SPEAKER_0: I only read it.
- 45:20Can you talk about what was before there was platform and program teams and
- 45:24how did this split actually play out from your perspective?
- 45:28Yeah,
- 45:29so I remember when I was interviewing to join Uber,
- 45:33they asked me,
- 45:33Hey,
- 45:33what do you want to do?
- 45:35SPEAKER_1: You want to do some platform stuff?
- 45:37SPEAKER_1: I said, I want to build tools for developers.
- 45:38And they're like,
- 45:38okay,
- 45:39you're hired because no one wants to build tools for developers.
- 45:45The longer version is the platform teams sort of existed,
- 45:48we just used to call it,
- 45:49I think Mobile had it first,
- 45:50I think,
- 45:51but then the other ones,
- 45:52we just had unofficial platform teams.
- 45:54SPEAKER_1: They're working on core infrastructure pieces.
- 45:57The platform teams were essentially made so that the other teams could move
- 46:01faster and not duplicate stuff.
- 46:04There's a lot of stuff that goes into building features,
- 46:06and mobile was just very new back in the day,
- 46:09so things were just not as well figured out as they're today.
- 46:12So you had to build a ton of stuff internally,
- 46:14and if you're doing this on every team,
- 46:15then it's a lot of ways.
- 46:17So I think when we decided to the platform program,
- 46:21we said program teams don't need to worry about a lot of the underlying layers
- 46:25similar to a cloud native environment.
- 46:27You worry about your business logic,
- 46:30your product metrics,
- 46:32and we'll give you all the building blocks,
- 46:34which could be a mix of open source or wrapped in our own layer and our own architecture.
- 46:39SPEAKER_1: That makes so that you don't mess with the other features.
- 46:43Everyone has their own way of building banners or their own way of styling things,
- 46:48not at all consistent.
- 46:49For an app like Uber,
- 46:51you need to have a common design language,
- 46:52you need to use common components.
- 46:54Stuff you would do on a website or take for granted today just didn't exist on mobile.
- 47:00It had to be done that way to make things move faster so you don't have to
- 47:03rebuild another widget or rebuild another analytics processing thing and
- 47:08do something in the backend.
- 47:10So one pain point or I wonder how big a pain point is,
- 47:14but one thing that looked like challenging to me,
- 47:17I was not on the platform team.
- 47:18SPEAKER_0: I was your customer, but we always pinged you with questions.
- 47:22And as you mentioned,
- 47:23a year ago or so,
- 47:25there were 10 engineers for about 40,000 engineers.
- 47:28SPEAKER_0: What did support look like and what practices did you figure out?
- 47:33I saw a lot of practices like office hours on-call,
- 47:37rotations on where toing,
- 47:39et cetera,
- 47:40that I have not seen anywhere else.
- 47:41SPEAKER_0: The platform teams were advertising these things.
- 47:46SPEAKER_0: It was almost like, I don't know, having a vendor almost.
- 47:49SPEAKER_0: They were contracts, they were actually SLAs.
- 47:53It was published how fast you can expect things,
- 47:56where to escalate,
- 47:58how to tack something with high priority,
- 48:00et cetera.
- 48:01SPEAKER_0: I've never seen anything like this.
- 48:02SPEAKER_0: And how did you figure out support?
- 48:05SPEAKER_0: How important was it?
- 48:07SPEAKER_1: Sure.
- 48:07So the angle that I think we thought about was like,
- 48:10Hey,
- 48:10for everyone else,
- 48:11the end user is a customer for us,
- 48:13the developer is a customer.
- 48:14SPEAKER_1: Let's not treat it as another internal thing.
- 48:17SPEAKER_1: Let's really be customer obsessed.
- 48:19SPEAKER_1: That was the value we had to with it.
- 48:21SPEAKER_1: We extremely focused on the customer experience.
- 48:23Developer experience for us is the customer experience,
- 48:25which means imagine if your robot didn't show up,
- 48:28you'd be very upset.
- 48:29So if you're built,
- 48:29didn't finish exact same feeling,
- 48:32okay,
- 48:32I cannot ship my code.
- 48:34So we need to make sure that there is reliability and latency guarantees for
- 48:38that exact same reason.
- 48:40So all the product,
- 48:42I think like minded folks had very much hone in on product analytics.
- 48:46SPEAKER_1: We said, Hey, let's think about what is important for the developer.
- 48:49SPEAKER_1: So we asked them things like bill time.
- 48:51They said,
- 48:51Hey,
- 48:52I want to make sure my CA is reliable,
- 48:53has no flaky tests.
- 48:54Can you make sure the flaky tests are not blocking me because it's expensive
- 48:58with the bill cut,
- 48:59you have to chase the release strain and that's not fun.
- 49:02I'm sure you've seen your team complain about like,
- 49:04Hey,
- 49:04I had this flaky test,
- 49:05I had to resubmit this diff and that's not going to merge in time for the
- 49:09releasetrain
- 49:10SPEAKER_0: And just staying late.
- 49:11SPEAKER_0: I'm not sure.
- 49:12I think the release train left on Wednesday night,
- 49:15so Wednesday night was the cutoff or morning,
- 49:19I'm not sure,
- 49:20but I know people stayed longer on those days to catch the release train,
- 49:23meaning getting their PR as we call the merged on there.
- 49:28SPEAKER_0: Yeah, as you say, it was a big deal.
- 49:32I didn't actually realize that you were obsessing about it,
- 49:34but it kind of makes sense.
- 49:36SPEAKER_0: After a while it wasn't an issue.
- 49:38Yeah,
- 49:39when people complain a lot that,
- 49:40hey,
- 49:40I tried to catch the train,
- 49:41but then something was out of my control.
- 49:43SPEAKER_1: The infrastructure was flaky, so we missed this deadline.
- 49:48Now I'm on the hook as a platform team to ensure a heart fix happens,
- 49:51which means a bunch of other teams are going to get disturbed because they
- 49:54have to retest all their workflows.
- 49:56It has a lot of ripple effects,
- 49:59and this are not obvious unless you think about,
- 50:01oh,
- 50:01we cared about testing because the end user will see the impact if you don't
- 50:04test all these features again.
- 50:07SPEAKER_1: So for us, actually, the metrics are very important to have.
- 50:10We would have SLOs,
- 50:11we would publish them,
- 50:12we would try to keep them,
- 50:13we would review,
- 50:14we miss them,
- 50:15and then do incidents management and retrospective so we could avoid those.
- 50:19A lot of the good tooling came out of that was to ensure high reliability,
- 50:24low latency,
- 50:25which means you could ship product really fast as a company and the
- 50:29infrastructure would not get in that way.
- 50:32And that is why some of those metrics you see matter is because once we
- 50:35actively talk to the developers,
- 50:36we knew actually mattered to them.
- 50:38SPEAKER_1: That's what we focused on.
- 50:41SPEAKER_0: I'm just thinking about this, but is it safe to say that?
- 50:44I mean,
- 50:44I think wouldn't agree that the platform team or the developer experience
- 50:48team at Uber did a great job,
- 50:50but they did a great job because you ran it like a product team.
- 50:55As you said,
- 50:56you talk with the customers,
- 50:57you figure it out,
- 50:58how to map how they feel or what they care about into metrics.
- 51:01You then monitor those metrics and then you kept iterating on these things.
- 51:05SPEAKER_0: If I replace this with a paying customer, it is the same thing, right?
- 51:11SPEAKER_0: That's what a great product team does.
- 51:13SPEAKER_1: Absolutely.
- 51:14You have to write a product doc because then the incentives are good on both
- 51:18sides because if the developer doesn't like the product,
- 51:21then you should be like,
- 51:24okay,
- 51:24what do I do to make it better?
- 51:25So if the company is shipping high quality product,
- 51:29then we should also ship high quality product for our developers,
- 51:31and that's how we took pride in making sure that our developers could deliver
- 51:37to the end user.
- 51:37SPEAKER_1: So yeah, you're absolutely right.
- 51:38The metrics I think a lot of people might focus about at a high level may not be enough.
- 51:42SPEAKER_1: You're right, you have to talk to people, you have to look at the funnel.
- 51:45SPEAKER_1: Where are people dropping off?
- 51:47Things like the onboarding for example,
- 51:49for new engineers,
- 51:50where would they have difficulty?
- 51:51The dev parts for example,
- 51:52was like,
- 51:52hey,
- 51:52people would go look at these outdated docs and they would try to set up an
- 51:57environment and then just spend a lot of time.
- 52:00So having a depo just eliminates that,
- 52:03and then later you might have a situation where a bill failed and there's a
- 52:07very easy quick fix.
- 52:09SPEAKER_1: You should automate that.
- 52:10SPEAKER_1: You should not ask the user to go to it.
- 52:11If there's a linter failure,
- 52:12in my opinion,
- 52:13we fail because a link should not complain.
- 52:16SPEAKER_1: It should either fix or not.
- 52:19SPEAKER_1: Just telling them, Hey, this is a problem.
- 52:21SPEAKER_1: It is not going to do anything.
- 52:22You are so much pressure to ship product that if it's not blocking me,
- 52:26I will merge anyway,
- 52:27right?
- 52:28SPEAKER_1: So if it's blocking me, if it can be auto fixx, why can't you auto fix?
- 52:32SPEAKER_1: That's kind of how we took
- 52:34SPEAKER_0: Things.
- 52:36SPEAKER_0: I like that.
- 52:37SPEAKER_0: What is your take on measuring developer productivity?
- 52:40SPEAKER_0: Your team was called developer experience.
- 52:42SPEAKER_0: I'm sure developer productivity came in.
- 52:44This is a very heated topic these days it seems like for the past few years and
- 52:48there's a lot of back and forth of what can you measure,
- 52:50what can you not measure?
- 52:51SPEAKER_0: Should you measure diffs per engineer or per team?
- 52:56You probably thought a lot about this or have been in middle of this,
- 52:58what worked and what didn't?
- 53:01SPEAKER_1: Yeah, so I think the very first thing we measured was just sentiment.
- 53:04So talking to Dev,
- 53:05as I mentioned,
- 53:06the NPS survey was very easy because it was very quick signal to see if things
- 53:10are in the right spot.
- 53:11If everyone's super happy,
- 53:12then there's no problem,
- 53:13but that's really the case.
- 53:14SPEAKER_1: There's always problems that pop up.
- 53:19I think as you mature your measurement,
- 53:21I think a lot of the frameworks we see out in the open are sort of inspired by
- 53:25what Uber did early on and took some of the good picks out.
- 53:29I think when people talk about D per engineer,
- 53:32they're not really saying,
- 53:33Hey,
- 53:33you should commit more D per engineer is something preventing you from
- 53:37moving as fast as you could potentially.
- 53:39Because I can tell you that engineers,
- 53:42if basically nothing blocked them,
- 53:44would love to write code.
- 53:44SPEAKER_1: If you're an engineer,
- 53:46You want to ship code,
- 53:47you want to feel proud about what you shipped,
- 53:49there's no one will come in and say,
- 53:50Hey,
- 53:50I don't want to write these mini,
- 53:52I want to write code because it makes me happier.
- 53:56And what we were looking at those signals first for was,
- 53:59Hey,
- 54:00do you have too many meetings?
- 54:01SPEAKER_1: Do you not have focus time?
- 54:02SPEAKER_1: Because devs are usually a matter of focus time.
- 54:04SPEAKER_1: So when we improved that we saw focus time improved.
- 54:06I think when we had Covid,
- 54:08everyone was working from home,
- 54:10the dev engineer shot up and everyone thought that,
- 54:13Hey,
- 54:13people are working so hard.
- 54:16SPEAKER_1: It is amazing.
- 54:16It's just because people just didn't have too many meetings initially and
- 54:20over time and everything went to Zoom.
- 54:22SPEAKER_1: It kind of came back again down a little bit.
- 54:25It's usually a way to make sure that our infrastructure is letting people
- 54:31move as fast as they can.
- 54:33SPEAKER_1: And as you move roadblocks, you're focusing on the right things.
- 54:35And in fact,
- 54:36actually one of the things we measured is time for code review more than
- 54:39anything else,
- 54:41the time to review was the biggest bottleneck because as you mentioned,
- 54:44you would put up a PR in Amsterdam,
- 54:46might wait for review from sf.
- 54:47SPEAKER_1: That's already like a 10 hour delay
- 54:50SPEAKER_1: And I think the P nineties are pretty crazy.
- 54:53It would take days to get code reviewed and that would just be the biggest
- 54:57blocker more than anything to ship product.
- 55:00And honestly,
- 55:01CI time is a blip compared to amount of time it takes to review.
- 55:06So in the big picture,
- 55:07I think we work to improve turnaround time by nudging people by auto
- 55:11approving prs that had minor changes that semantically would not change the
- 55:15meaning or the behavior of the Yeah,
- 55:17that helped a lot because you didn't have to get another approval for making a
- 55:21comment fix,
- 55:21so you're doing a small stylistic change for example.
- 55:24SPEAKER_1: So that helped unblocked a lot of those scenarios.
- 55:26We had auto approve or auto land,
- 55:28which helped because if you review approved,
- 55:30then it would merge immediately so you don't have to rebate and worry about conflicts.
- 55:34A lot of these kind of small things can actually have a really big impact,
- 55:38but if you don't measure,
- 55:39you wouldn't know.
- 55:39So I think in terms of develop productivity,
- 55:43when you talk to your engineers,
- 55:44they might say,
- 55:44Hey,
- 55:45I feel less productive because I can't do something.
- 55:48Then your metrics should flow from that rather than just blindly taking a
- 55:52framework and saying,
- 55:52Hey,
- 55:53this is a framework in the industry,
- 55:55this should be it.
- 55:55SPEAKER_1: It may not actually work.
- 55:57SPEAKER_1: I mean it's not also the same for all kinds of developers.
- 56:01Is it safe to say that at Uber developer productivity was measured in the
- 56:08sense that there were these charts metrics,
- 56:10it showed this per engineer on your team,
- 56:13you could see it and how it changed over time,
- 56:15the time to code review,
- 56:17focus time,
- 56:17et cetera.
- 56:18But is it safe to say that these were measured with the intention of finding
- 56:23bottlenecks and what to improve and they were not measured with the
- 56:26intention of using them for performance reviews,
- 56:29promotion or figuring out who's the low performer?
- 56:33SPEAKER_0: Is that a fair assessment?
- 56:36SPEAKER_1: Yeah, that's the usual controversy.
- 56:38SPEAKER_1: People tend to misuse it.
- 56:40The guidance is always look at them at the high level and that is where a lot of
- 56:45these are aggregated and you can find ways to dissent enterprise people from
- 56:51bringing those up because you can easily catch bias.
- 56:54We had,
- 56:54for example,
- 56:55folks on the performance company that would be there just to catch bias that
- 56:58hey are just looking at tips or you're not looking at the quality.
- 57:02And sometimes people may not have as much output because they have other
- 57:05contributions they're making.
- 57:06SPEAKER_1: They might be writing docs or they might be influencing strategy.
- 57:09They might be working on unblocking teams or figuring out product and
- 57:13business goals and ing them to requirements and engineering.
- 57:17So it was definitely,
- 57:18I think initially people thought of it that way,
- 57:21but that was never the intention.
- 57:22SPEAKER_1: That was never the case.
- 57:23In my experience,
- 57:23at least on all the companies I've been,
- 57:25we never looked at it as anything more than,
- 57:27Hey,
- 57:28it's just good to know that hey,
- 57:29if you haven't had any prs,
- 57:30that's a red flag.
- 57:31SPEAKER_1: Potentially we had zero PRS in the entire year.
- 57:35SPEAKER_1: Explain yourself.
- 57:37SPEAKER_1: We will not.
- 57:38SPEAKER_1: We'll clarify with the manager, Hey, what's going on?
- 57:40SPEAKER_1: What are they doing?
- 57:41SPEAKER_1: But we never say that as a blanket that means nothing.
- 57:44So we always want to use this as a way to say if there are red flags,
- 57:48we catch it,
- 57:48that there might be something else going on.
- 57:50SPEAKER_1: But it was mostly used for unblocking teams from shipping fast.
- 57:56So it sounds like it's just like if you have data and you can gather it and that
- 58:00data can actually help you build the right things.
- 58:02I mean it will be silly not to do it and as you said,
- 58:05start with from what the pain points are,
- 58:07what people complain about.
- 58:08SPEAKER_0: I mean we always complained about, well that was there.
- 58:11It was always about code review and how long it took code review to take,
- 58:13and I don't think we ever measured it.
- 58:16I think I left by the time this was there,
- 58:18but if we would've measured it,
- 58:19it would've just really shown that our team was,
- 58:22we probably had our median was probably more than a day because we were
- 58:26waiting a team on the other side of the Atlantic and then we figured out how to
- 58:31cutthosetiesand
- 58:32SPEAKER_1: Quote is rarely a bottleneck, especially now with AI tools.
- 58:35SPEAKER_1: You could just generate a bunch of code and throw a pr.
- 58:38SPEAKER_1: That's rarely the bottleneck.
- 58:39You are bringing alignment or figuring out product requirements or making
- 58:43sure you're not breaking the experience takes the hardest.
- 58:46So just measuring output in terms of PRS is probably going to be harder as a
- 58:51justifiable thing.
- 58:52SPEAKER_1: After this new age of AI tools, people are just shipping so much more.
- 58:56We use a lot of AI tools at work,
- 58:58including our own,
- 58:59andweshipdonemorethanweusedtobackat
- 59:01SPEAKER_0: Uber.
- 59:02So you're now in the business of AI tools to help engineering productivity
- 59:09and engineers work better.
- 59:10SPEAKER_0: How do you see these tools changing how we do software development?
- 59:15I'm talking obviously about the usual suspects,
- 59:18the coding,
- 59:19auto completes,
- 59:20the copilots,
- 59:21also the agents and also everything else that's coming.
- 59:24SPEAKER_1: Yeah, absolutely.
- 59:25SPEAKER_1: So we are very thick in the space.
- 59:27Obviously the autocomplete is a huge boost because it in many cases helps you
- 59:32less type less but think more.
- 59:35SPEAKER_1: So I think if you probably use a bunch of these tools, I do too.
- 59:38It removes a lot of the grunt work,
- 59:40but it won't remove your thought process because the taste in what you want to
- 59:45do is still there,
- 59:45just not the how Sometimes it's like,
- 59:47okay,
- 59:48this makes sense,
- 59:50but I feel like a lot of the tools are either focused too much on their
- 59:53completion or they're only on the quote review.
- 59:56I think back from we learned things at Uber,
- 1:00:01we had a lot of inefficiencies and things we wished we could solve with some
- 1:00:05sort of intelligent layer.
- 1:00:06I was for example,
- 1:00:07going unblocking things like,
- 1:00:08hey,
- 1:00:08I knew exactly what would need to happen to unblock a build or so having some
- 1:00:14sort of an adjunct understanding of things are happening in the IDE,
- 1:00:17why did you type this character?
- 1:00:20That affects what's happening in code review and that affects what happens
- 1:00:23on deploy that affects what happens on your incident,
- 1:00:26for example.
- 1:00:27SPEAKER_1: There is nothing that's crosscutting.
- 1:00:28So that's kind of what we are trying to solve with qar is have this whole STLC
- 1:00:33under the purview and not just focused on the point solution of I'm just an ID
- 1:00:37code complete or I'm just going to be on your CI reviewing stuff.
- 1:00:41A lot of those solutions currently are I believe good starting points and my
- 1:00:46experience like how I was seen technology shifts happen.
- 1:00:49The much nicer or more important unlocks happen a little bit later into the
- 1:00:53cycle because since we're very early in the cycle with AI at this point,
- 1:00:56people are just experimenting stuff.
- 1:00:59But I believe that there's a huge value add for agents just because as you mentioned,
- 1:01:04there are some things that are so obvious when you think about it that hey,
- 1:01:07we wish we wrote a script to automate this for support or for documentation.
- 1:01:13Those can be potentially driven by agents but then still have the human in the
- 1:01:17loop when things need to be approved.
- 1:01:20SPEAKER_1: That's kind of how we think about it.
- 1:01:22SPEAKER_0: And as you're using these tools, how does it change your development?
- 1:01:30Obviously we're riding less code now,
- 1:01:33there's just more suggestions or there's also agents,
- 1:01:35but what does it allow you to do?
- 1:01:39SPEAKER_0: Are you just moving faster?
- 1:01:41SPEAKER_0: Are you actually having deeper thoughts?
- 1:01:43SPEAKER_0: I'm just interested in what it means for you.
- 1:01:45The current version of these agents that we know where it's a service cycle,
- 1:01:49we never know how long it'll go,
- 1:01:50but clearly it's only been no more than two years.
- 1:01:53SPEAKER_0: So
- 1:01:54Yeah,
- 1:01:55I think it allows you to explore more paths that you previously didn't have
- 1:01:58time to explore because you could experiment much faster and discard ideas
- 1:02:03much quicker because when you're prototyping,
- 1:02:05you don't need the full rigor.
- 1:02:07SPEAKER_1: You can put them behind a flag and then say, Hey, this looks good.
- 1:02:09I think people are calling it vibe coding these days like,
- 1:02:12Hey,
- 1:02:12this has the right vibe,
- 1:02:15we can experiment this.
- 1:02:16SPEAKER_1: Of course it's harder when you have a lot of other constraints.
- 1:02:18SPEAKER_1: You have to make sure the software is secure compliant.
- 1:02:22A lot of people are not thinking about that when prototyping,
- 1:02:25so it lets you prototype faster,
- 1:02:27which is great.
- 1:02:28And I think what's also happening is I feel now this all of talk about,
- 1:02:34hey,
- 1:02:35drone engineers are going to get replaced,
- 1:02:37but I think it's the opposite.
- 1:02:39My take is that junior engineers are going to thrive because they are coming
- 1:02:43with new knowledge,
- 1:02:44new ways of working with these tools and are going to be much more effective
- 1:02:48because they don't have bias of working a particular way.
- 1:02:52They're able to achieve things that,
- 1:02:53for example,
- 1:02:54if you take a long time to even wrap up doesn't mean that you shouldn't know the fundamentals.
- 1:02:59In fact,
- 1:03:01if you think about 20 years ago they had a DBA and A-H-T-M-L and a Java
- 1:03:09application engineer.
- 1:03:10SPEAKER_0: There was no data
- 1:03:11SPEAKER_1: Engineer and a
- 1:03:12SPEAKER_0: Webmaster sometimes,
- 1:03:13SPEAKER_1: Right?
- 1:03:13SPEAKER_1: There was not that
- 1:03:15SPEAKER_0: Jump no longer exists.
- 1:03:17No,
- 1:03:18there's no front end person,
- 1:03:19there's no mobile person,
- 1:03:20there's no data engineer,
- 1:03:22ML engineer.
- 1:03:22SPEAKER_1: There's so many more archetypes now or subcategories.
- 1:03:26I think with ai,
- 1:03:28the general engineer is going to see a rise again,
- 1:03:31which means I'm able to jump into for example,
- 1:03:34front end without not doing much front end because I can understand that okay,
- 1:03:38this is what I expect to happen and I would like to have this outcome with my software,
- 1:03:46which means I can then focus on the other parts of the problem.
- 1:03:50SPEAKER_0: You mentioned vibe coding and this is a brand new term.
- 1:03:55SPEAKER_0: What do you think it stands for?
- 1:03:56Is it just prototyping,
- 1:03:57is it just throwing out ideas or is it a bit more than that?
- 1:04:02I think it's vibe coding is just you trying to figure out how the system should
- 1:04:06behave when you're prototyping.
- 1:04:10The good thing about vibe coding is you're able to basically iterate much
- 1:04:14faster with these ENT loops that now you're just focusing on how would I
- 1:04:18actually achieve my outcome rather than the exact way to do it.
- 1:04:22SPEAKER_1: You can always change those details later.
- 1:04:24SPEAKER_1: If you have the right abstractions, you could swap layers out.
- 1:04:28So I think that's changing the way people think about software because if
- 1:04:31you're someone who has taste and knows this is the outcome I want to see on the ux,
- 1:04:38you may not even need to know a framework.
- 1:04:40You should experiment with it till it feels right and of course you need to
- 1:04:43massage it to make sure it doesn't make it harder day while later on.
- 1:04:46I think a lot of the software today gets you to the initial,
- 1:04:50it looks great,
- 1:04:51but then how do you maintain it is basically sort of left for later time.
- 1:04:55And I think a lot of people who are still quo with AI are early in the prototype phase.
- 1:05:00I don't think at enterprise scale that would work because I can imagine it'll
- 1:05:03probably mess with your entire abstraction you already put in.
- 1:05:06SPEAKER_1: So you have to really constrain it to work well.
- 1:05:09So white coding is great for prototyping at this point,
- 1:05:11but that's also why I think you can move a lot faster with less constraints
- 1:05:16becauseAIhasalotmorefreedomtoexplore
- 1:05:19SPEAKER_0: One of the problems that we're seeing.
- 1:05:22And if you're using it,
- 1:05:23you'll also see as there's this Adi Oman called it the 70% problem that vibe
- 1:05:29coding and these things that they get you started,
- 1:05:31but then it can get just really confused and stuck and people see this,
- 1:05:35people who are not really technical,
- 1:05:36they kind of get stuck and that's where experienced engineers really shine.
- 1:05:41SPEAKER_0: You said previously that you think junior engineers will do great there.
- 1:05:45SPEAKER_0: How do you think less experienced engineers can deal with this?
- 1:05:48That's one and then the other is this where we might see senior engineers
- 1:05:53actually thrive and spend more of their time?
- 1:05:57Yeah,
- 1:05:57I think the main differentiator there is when things go wrong,
- 1:06:01understanding why they went wrong,
- 1:06:02which means strong CS fundamentals,
- 1:06:05strong sort of system knowledge of hey,
- 1:06:07how does the entire thing work to end?
- 1:06:09SPEAKER_1: So senior engineers usually tend to have a better bigger picture.
- 1:06:14So if they adopt these new tools,
- 1:06:15actually they can get a lot more productive.
- 1:06:18I can tell from my own experience that adopting these tools,
- 1:06:21I'm able to get a lot more stuff done because I know for example,
- 1:06:24this is how I expect my system to work,
- 1:06:27which means I can delegate to,
- 1:06:29I used to give it to a more junior person to understand the system.
- 1:06:32Now I can just keep it to AI and I can check the work and I can come at it.
- 1:06:37But if you're very stuck in the ways and not want to use these tools,
- 1:06:42you can still do it.
- 1:06:43SPEAKER_1: It's going to be a lot slower and that's totally fine too.
- 1:06:45SPEAKER_1: It is just a matter of how quickly you want to ship.
- 1:06:47And for things that are not critical,
- 1:06:49you may want to still experiment to see what's out there because the things,
- 1:06:52the way they're going,
- 1:06:53the tools are getting better every day,
- 1:06:55which means over time a lot of the mistakes that are happening today will
- 1:06:59start to disappear.
- 1:07:00There'll be like other agents that will check the work of the first agent,
- 1:07:03so they're not going to be as many mistakes.
- 1:07:06You still want to have a human in the loop before you check in,
- 1:07:09otherwise you will not have full guarantee that whatever you're shipping
- 1:07:12with the user is going to be good.
- 1:07:14But you definitely want senior engineers to focus on the high level system
- 1:07:19level knowledge and the agent loops can be more nuanced and more focused on
- 1:07:25smaller parts of the puzzle.
- 1:07:27After nine years of Uber working on developer experience now co-founded a
- 1:07:32company called Guitar,
- 1:07:34how are you thinking about continuing this developer experience and also
- 1:07:38what's your approach to ai?
- 1:07:40SPEAKER_0: What are your bets on where the space is going to go?
- 1:07:43SPEAKER_1: Yeah, that's a good question.
- 1:07:45So when we co-founded guitar with my co-founder Ali and Raj,
- 1:07:49we basically saw that a lot of the inefficiencies we had tools were not
- 1:07:54available back in the day at Uber.
- 1:07:57SPEAKER_1: We saw because we had a golden path for developers.
- 1:08:00Now with agents,
- 1:08:01I think we talked about Deports previously like,
- 1:08:04hey,
- 1:08:04there's a golden path for a developer to get stuff done.
- 1:08:08So what if an agent had a golden path to get things done for a particular enterprise?
- 1:08:13So we are thinking of guitar,
- 1:08:15the agents we are building atar,
- 1:08:17we just are going to launch a new product pretty soon and you can check us out at
- 1:08:22guitar ai.
- 1:08:24The agent AI we build is actually inside the IDE on the code review system
- 1:08:30inside a deployment.
- 1:08:31SPEAKER_1: It's across the board.
- 1:08:32So there's no reason why you can't auto complete a deployment shock and not
- 1:08:35just be stuck inside ID and having an understanding of things like,
- 1:08:40Hey,
- 1:08:40how are things going in production?
- 1:08:42SPEAKER_1: Which part of the code is slow?
- 1:08:44SPEAKER_1: These dots are usually what engineers connect.
- 1:08:47The context is what flows through your brain,
- 1:08:51and if there's a standardized path for an agent to evolve software and
- 1:08:54maintain it,
- 1:08:55it becomes much easier to focus on the business value.
- 1:08:58And one of the things that people dread doing is,
- 1:09:00hey,
- 1:09:00maintaining stuff like updating libraries or fixing tech or adding coverage,
- 1:09:04we feel like a lot of that grant work can be done very efficiently with agents.
- 1:09:08So that's where our focus is that we don't want to be just take a code complete
- 1:09:13or within your point solution.
- 1:09:15SPEAKER_1: We want to have it across the entire stack of software development.
- 1:09:18And we have that experience working on this for many years,
- 1:09:21talking to peers in the industry,
- 1:09:22there's a lot of potential for disrupting the space and the stuff we wish we
- 1:09:28had that,
- 1:09:28hey,
- 1:09:29I wish someone was on call during this time to fix a small thing.
- 1:09:33We can make that happen because we can give the agent powers to unblock people
- 1:09:37when you might be asleep,
- 1:09:38which means you'll be on call less often.
- 1:09:40So we are thinking of it from a holistic developer experience standpoint and
- 1:09:45producing more code is just one part of it.
- 1:09:47It's about doing it reliably,
- 1:09:48maintaining it,
- 1:09:49and making it understandable so newer developers can understand what's
- 1:09:53going on.
- 1:09:54If we just let AI run amok on your code base and not have an idea of what's going on,
- 1:09:58then that's the recipe for disaster.
- 1:09:59So we feel like there's a lot of opportunity for making the entire experience
- 1:10:05end-to-end a much more standardized so that the golden path for developers
- 1:10:10and agents is really well laid out.
- 1:10:14Now when I'm listening to this one part of me is if I'm a business owner,
- 1:10:19I'm like,
- 1:10:19oh,
- 1:10:19that sounds great,
- 1:10:20because over time I might just have less developers have a really capable agent,
- 1:10:24and as a developer,
- 1:10:25obviously one thing that pops into your head is like,
- 1:10:28wow,
- 1:10:28we might have a smaller team.
- 1:10:29Hopefully I'll still be there,
- 1:10:31but I might have fewer colleagues or I might be fortunate one to get the cut.
- 1:10:36Let's just run with this,
- 1:10:38that this future is coming and we will have a lot more capable agents In this case,
- 1:10:44what do you think developers will do and what are sets that are worth
- 1:10:50investing in so that you will still be an efficient,
- 1:10:54a great developer in the future,
- 1:10:56seen as a highly efficient developer?
- 1:10:5810 years from now,
- 1:10:59your managers will be like,
- 1:11:00oh my god,
- 1:11:01we cannot do work without this person.
- 1:11:02We need this person here and we should probably give them a raise underpaid.
- 1:11:07Yeah,
- 1:11:07I think as you said,
- 1:11:09there might be less people in a business,
- 1:11:10but there'll be more businesses.
- 1:11:13SPEAKER_1: That's typically how a lot of these technology shifts go.
- 1:11:16If building software is easy,
- 1:11:18then the value unlock will be actually the taste and the experience for the
- 1:11:22end user.
- 1:11:23SPEAKER_1: What do we actually provide?
- 1:11:24If every website looks the same because you prototyped it in a website builder,
- 1:11:30then that's not going to be your differentiator.
- 1:11:33Even I think during the mobile era,
- 1:11:35a lot of apps came to do things like to-do lists or reminders or just scrolling
- 1:11:41social media,
- 1:11:42but then eventually some clients are great ux,
- 1:11:44they will not because they're just a joint use.
- 1:11:46So knowing what matters to your end customer is going to be differentiated
- 1:11:50for engineers to hone in on.
- 1:11:52SPEAKER_1: So that means understanding the business really well.
- 1:11:55SPEAKER_1: And then the other thing is how do you build something for scale?
- 1:12:00Essentially as you grow the business,
- 1:12:03you don't need as many engineers probably,
- 1:12:04and that's okay,
- 1:12:05and that might be fine because if you're at a smaller company with less number
- 1:12:08of engineers,
- 1:12:09if you have equity for example,
- 1:12:11you might have more of the pie,
- 1:12:12which means that's a good way to incentivize people to experi with more ideas.
- 1:12:18SPEAKER_1: And usually competition is good in that way.
- 1:12:21So you may not be bound by those jurisdiction that you have to always be in a big company.
- 1:12:26I think we'll start seeing smaller,
- 1:12:28more efficient teams who are going to be more productive and will deeply
- 1:12:32understand the product.
- 1:12:33And that's going to be,
- 1:12:34I think a good bit,
- 1:12:36compete with other products in that space.
- 1:12:38The taste,
- 1:12:39the art that goes into crafting great X or great end user experiences is going
- 1:12:43to matter more than how you wrote the code.
- 1:12:47Now if I'm thinking,
- 1:12:49I think it's good to think back that for example,
- 1:12:51even 15 years ago,
- 1:12:4710,
- 1:12:4715 years ago,
- 1:12:54we already had this WhatsApp.
- 1:12:57They were barely at 50 people when Facebook acquired them for $19 billion,
- 1:13:01which is crazy.
- 1:13:02SPEAKER_0: This was no way.
- 1:13:03SPEAKER_0: I know nothing, but clearly they were a very efficient team.
- 1:13:05Instagram,
- 1:13:06I think 12 or 13 people also,
- 1:13:09they built an app that was already 30 million users with that small,
- 1:13:12even today,
- 1:13:13that will be a big deal.
- 1:13:14So to get that skillset of you being able as an engineer,
- 1:13:20being able to do a lot with these tools with the small team,
- 1:13:23you mentioned taste,
- 1:13:24you mentioned art,
- 1:13:26what other things that are worth focusing on that should probably help do a
- 1:13:32lot more with less?
- 1:13:34SPEAKER_1: Yeah, I think having an understanding of the system layer is good.
- 1:13:37SPEAKER_1: So I think the scalability part we didn't cover.
- 1:13:39SPEAKER_1: So how does your app or software scale to remote users?
- 1:13:43SPEAKER_1: What parts of the system are less efficient?
- 1:13:45SPEAKER_1: More efficient?
- 1:13:46SPEAKER_1: Because all code might do the same things, but less or more efficiently,
- 1:13:50SPEAKER_1: And how do you maintain it?
- 1:13:51So that's the other challenge a lot of people run into as software systems grow,
- 1:13:56is it easy to upgrade because you have less external dependencies?
- 1:13:59SPEAKER_1: Is it harder because you have so many versions?
- 1:14:01The software might work the same today,
- 1:14:03but okay,
- 1:14:03three years down the line,
- 1:14:04if you can't upgrade and move faster,
- 1:14:07your competition is going to basically move faster than you because it
- 1:14:09started on a clean slate.
- 1:14:11SPEAKER_1: We see that all the time.
- 1:14:12I think there's a lot of legacy technology or database systems people are
- 1:14:15trying to move to modern systems.
- 1:14:17It's a big cost and that's very expensive,
- 1:14:20a lot of engineering time wasted.
- 1:14:22So if building for basically maintainability is going to be important as well,
- 1:14:27and building for either AI agent maintainability or human understanding so
- 1:14:32that you don't have to look at outdated docs or do an expensive migration.
- 1:14:37I mean,
- 1:14:37for example,
- 1:14:38if I could wave a magic wand and move all my micro repos to monitor repo and
- 1:14:42everything just worked,
- 1:14:43that'd be awesome.
- 1:14:44SPEAKER_1: I don't think any system can do that today yet.
- 1:14:47Maybe it would in the future,
- 1:14:48but if that's a reality because you designed your software to move that way,
- 1:14:52that's great.
- 1:14:53So having that knowledge is not because AI agents are fundamentally based on
- 1:14:58expert knowledge.
- 1:14:59So if your knowledge is understanding of your entire business,
- 1:15:03because they can't really tell you how should you write your code for end user,
- 1:15:08what matters to one business may not matter to the other.
- 1:15:11Some parts of the software might work well for one segment but not work so well
- 1:15:14for the other segment.
- 1:15:15So really understanding those business values will differentiate just AI
- 1:15:19driven code versus how do you actually use that code to make your business
- 1:15:23actually thrive.
- 1:15:25So again,
- 1:15:27it might not happen,
- 1:15:28right or not,
- 1:15:29or it might happen slower than we expect,
- 1:15:30et cetera.
- 1:15:31But what I'm hearing is even if it does happen,
- 1:15:34having expert knowledge helps having tastes and you kind of get taste from
- 1:15:39seeing things or failing things.
- 1:15:41So is it safe to say that it's probably a pretty good strategy to try your best
- 1:15:45to go and work at companies that are either building stuff at scale or they
- 1:15:49just have kind of taste,
- 1:15:50they're startups that are known to do these things so that you can build up one
- 1:15:55of the muscles of scale taste if you can switch routine them?
- 1:15:58Because in the future,
- 1:16:00I assume that some of the repeated,
- 1:16:04the successful people who have a pattern will probably have the pattern of like,
- 1:16:09oh,
- 1:16:10they worked at companies that did pretty groundbreaking stuff at their time
- 1:16:14and now that we have these tools,
- 1:16:15well,
- 1:16:16yeah,
- 1:16:16they're doing even more groundbreaking stuff and they probably build a
- 1:16:18bunch of their own experience.
- 1:16:20SPEAKER_1: The experience matters a lot knowing a lot of the stack helps.
- 1:16:24When I was at Uber,
- 1:16:25I didn't do much work on front end,
- 1:16:26but now I'm at guitar,
- 1:16:28I'm doing front end,
- 1:16:29I'm doing infra,
- 1:16:30I'm doing a bunch of stuff and I'm using agents to help me.
- 1:16:34We use our own agent to rewrite a bunch of our stuff,
- 1:16:36and I was like,
- 1:16:37okay,
- 1:16:37now I understand why this works that way.
- 1:16:38SPEAKER_1: I'm a general engineer now.
- 1:16:40SPEAKER_1: I have strong fundamentals that say I can see the system.
- 1:16:43SPEAKER_1: I know this is how it's supposed to work.
- 1:16:45Now I've uplevel myself without spending is kind of like that matrix movie
- 1:16:49where New York gets that upgrade to no kung fu,
- 1:16:54but doesn't mean that he can beat the master yet.
- 1:16:56SPEAKER_1: He still has to train up and understand
- 1:16:58SPEAKER_0: It.
- 1:16:58SPEAKER_0: Yeah, I like that.
- 1:17:01SPEAKER_0: So with that, but let's go with some rapid questions.
- 1:17:05I'll just shoot out some things and then you go,
- 1:17:08what is your favorite programming language and why?
- 1:17:11SPEAKER_0: Rust.
- 1:17:12SPEAKER_0: Rust.
- 1:17:13SPEAKER_1: Since when?
- 1:17:14Yeah,
- 1:17:15since guitar actually,
- 1:17:16I was initially like,
- 1:17:17oh my god,
- 1:17:17rust has a bad reputation for being hard,
- 1:17:19but it makes things so safe.
- 1:17:23It's hard to have,
- 1:17:24I think outages if you design it right,
- 1:17:26I mean you can still have them,
- 1:17:27but you can really understand the type safety is there to help you out,
- 1:17:31and you start treating it like your friend.
- 1:17:33SPEAKER_1: Then it unlocks a lot of stuff.
- 1:17:34SPEAKER_1: You
- 1:17:35Coming someone who you've spent a lot in Java and go,
- 1:17:39right,
- 1:17:39you've probably spent half your career in those.
- 1:17:42SPEAKER_1: Yeah.
- 1:17:42It's funny because when I graduated college,
- 1:17:44I told my friends I would never work in a company that does Java,
- 1:17:47and then I did Java for nine years.
- 1:17:51SPEAKER_1: So never say never.
- 1:17:55SPEAKER_0: What's an AI powered dev tool that you use?
- 1:17:57SPEAKER_0: And
- 1:17:59SPEAKER_1: We use our own agent thing quite a bit.
- 1:18:01SPEAKER_1: I call it Jimmy, which is a new agent.
- 1:18:05SPEAKER_1: Jimmy.
- 1:18:05Yeah,
- 1:18:05because guitar,
- 1:18:09we use the cursor as well for the auto complete,
- 1:18:12but we feel like Jimmy gives a lot more end-to-end stuff for us.
- 1:18:16So we've been using it pretty heavily,
- 1:18:18but you can also try it out hopefully soon.
- 1:18:20And then I use a bunch of other smaller CLO directly,
- 1:18:24obviously for question and answer stuff,
- 1:18:26how to play with some of the newer deep seek research models and stuff like that,
- 1:18:30because I've been getting good things about them for more deeper work,
- 1:18:33buthaven'thadachance
- 1:18:34SPEAKER_0: Yet.
- 1:18:34SPEAKER_0: What's a book that you'd recommend?
- 1:18:40My favorite book,
- 1:18:41I don't read too much,
- 1:18:42but I read this book early in my career called Headfirst Design Patterns,
- 1:18:46which is a little old at this point,
- 1:18:49but the patterns are really good because it really makes you understand how
- 1:18:53you can layer things.
- 1:18:54A lot of software today is just abstraction or abstraction or abstraction if
- 1:18:58you think about them.
- 1:18:59So really helps you understand what pattern makes sense,
- 1:19:02when and when to use it,
- 1:19:04how to transition between them.
- 1:19:05I would highly recommend that if you're trying to go into a more systems level
- 1:19:09approach and want to design software for maintainability,
- 1:19:12that's very crucial.
- 1:19:13SPEAKER_1: Making it pluggable, composable and replaceable under the hood.
- 1:19:17A lot of the migrations we did at Uber was zero downtime with no code fees.
- 1:19:22If we did the Java migration,
- 1:19:23there was no code fees,
- 1:19:25so that was accounting achievement.
- 1:19:27And IT banks these days still,
- 1:19:30they'll shut down their thing for some migration for a whole day on the
- 1:19:34weekend in 2025.
- 1:19:36SPEAKER_0: It's a big difference, as you say.
- 1:19:39SPEAKER_0: Well, it got some.
- 1:19:39SPEAKER_0: I really enjoyed this conversation.
- 1:19:42It was good to reconnect and just see how developer productivity empowering developers,
- 1:19:49you're still just running with it.
- 1:19:53SPEAKER_1: Yeah, I think this is the area I love working in this area.
- 1:19:56SPEAKER_1: I can't see myself doing anything else.
- 1:19:58SPEAKER_1: I've been doing it for 10 years.
- 1:19:59SPEAKER_1: I hope to do it for 10 more.
- 1:20:00SPEAKER_1: We'll see.
- 1:20:01SPEAKER_1: But I hope I can make more developers productive.
- 1:20:04I hope you also found this episode about Uber's internal tools develop
- 1:20:07productivity and AI's impact on software engineering.
- 1:20:10As interesting as I did,
- 1:20:11you can find Gotham on social media as linked to the show notes below,
- 1:20:14and check out his company guitar@guitar.ai.
- 1:20:17For more deep dives on Uber's engineering culture,
- 1:20:19check out the pragmatic engineering articles,
- 1:20:21LinkedIn,
- 1:20:22the show notes below.
- 1:20:23If you've enjoyed this podcast,
- 1:20:24please do subscribe on your favorite podcast platform and on YouTube.
- 1:20:28This helps more people discover the podcast and a special thank you if you
- 1:20:31leave a rating.
- 1:20:32SPEAKER_0: Thanks and see you in the next one.