>> You ready for this? >> Yeah.
>> Let's do it.
[MUSIC] >> All right.
David, can you give us your name, your rank, and your serial number? >> Serial number, let me check that.
>> Who are you and what isyour role here at Microsoft? >> I'm David Fowler.
I'm a Principal Software Architecton the ASP.
NET team, and I've been here 10 years.
>> Ten years? >> Ten years.
>> All right.
So I want to drillin on many of those words.
So architectis one of these words that I feel is super overloaded.
>> So what I want people to walkaway from is really understanding your understanding ofhow you view your role.
Do you think that it sounds likethe ASP.
NET core architect? >> Correct.
>> What's the right wayof thinking about it? >> I've been on the ASP.
NETTeam overall for 10 years, different managers, differentpositions, different roles.
The architect role forme, when I first joined, was the role where the person who made sure the entire team hadthe right designs technically, so it's a mix betweena Program Manager, which does a bunch ofplanning and design, but we go deeper, we actuallywrite codes sometimes.
>> See you have a mixof writing code, and of planning, and of design.
So you're in design meetingsdesigning features, but you're also planningthe next milestone with the PMs.
>> I see.
So in some waysyou think about it as you're intentionally takinga bunch of the roles and mixing them together? >> Correct.
>> In some ways, you listed project managements in there, to a certain extentas well as design, but obviously, you hacka lot of code as well? >> Yeah.
>> I see the biggestdifference is that I get a chance to work onfeatures that aren't planned yet and they may become features.
>> I see.
>> I don't have to dothe entire thing myself.
So I could havea new idea for a feature, do a quick prototype, andhave a dev take it over.
>> I get it.
>> So you aren't responsible for actually doing all the featurework and everything.
>> Got it.
>> It's more you make it surethat things are going as planned.
>> I see.
So in some ways, you don't have reports, right? >> No.
>> You're not a manager.
>> So when you do the hand-off, that's like, you have minions,but they're not directly.
>> Not minions.
>> So not minions.
What'sa good word for this? [inaudible] and they wear suspenders.
All right, but you havesomebody who can take, and that allows you to leverage your ability to focuson doing design work, which you see is your core job, and then you haveother people who are more skilled at taking that vision andmaking sure that it [inaudible].
>> More skilled? >> Well, there's this [inaudible]comparative advantage, right? >> Yeah.
>> Which is like even ifyou're better at typing than the person who — in the olden times whenpeople used typewriters, you would still havesomeone do that for you so that you can leverage yourtime to focus more on that.
>> So the key thing isinfluence, but no authority.
>> That's the key phraseof this IC role.
>> We should say what IC role is.
>> Sorry, yeah.
>> Because I havetotally a vision now.
People who don't workat Microsoft, A, or B, aren't even in our ecosystem, can learn from this.
>> This is true.
So IC isan Individual Contributor.
It means you don't havereports.
You're not a manager.
>> Have you worked elsewhere? This has been my whole career.
It's my whole career.
So feel free to, in the comments, tell uswhen we're jargoning.
Because I don't even know if that'sMicrosoft jargon or industry.
I think it's industry jargon.
>> I think, maybe.
>> Okay, good.
Well now, you know.
So the wholething is that you have to influence teams and people without havingany authority over them.
So you can't fire them, you can't tell them you'regetting a bad review, you have to go, "We'redoing this feature.
We should do it this way.
" I'm an architect.
Pleasebelieve me, please.
>> Got it.
>> So you have to build up rapportand your [inaudible] with people.
>> I see.
>> So they trust you.
So it's likereputation management.
>> It's the key building block.
>> That's the key thing in gettingstuff done as an architect.
So let's talkabout what you've built.
So architect ASP.
So what are the thingsthat you feel like you had a big contribution tobuilding inside of that work? >> Let me see.
So Istarted 10 years ago.
When I started, I was workingon ASP.
NET Web Forms.
That was pretty fun.
I worked on this thingcalled Dynamic Data.
It was basically a way to scaffold admin pages fromwebsites really fast.
I worked with an architectactually very closely, David Ebel, who's left now.
Then, did that for a couple of years.
>> Where you a dev at this point? >> Yeah.
So I was his minion.
So he would throw things at me, and I would just do his features.
>> From then, I gotmy own ideas, and it gave me.
>> For the first time.
>> He pushed me off into giving me that kind of power toexperiment with stuff.
>> The first thing that I everdid, I worked on a bunch of Web Forms features that, basically, we showed asthe future of Web Forms.
That's when I knew I wasdoing something special.
We had an MVP Summit and they were showing the thingsthat I'd built in my free time.
>> So the MVPs are [inaudible].
You explain it.
>> All right.
So the MVPs are like the Microsoftmost valued professionals.
>> They're like super enthusiasts who work closely withthe product team.
>> With our products, yeah.
>> So we bounce ideas offthem, and once a year, they come in for the summit.
Is it once a year? >> So.
Yeah, once a year.
>> Yeah, and they comein and we share ideas, but of course we gettheir information all the time.
So I've been working in my free time on a couple ofprototypes for Web Forms, and my team showed it asthe future of ASP.
NET Web Forms.
I was like, "Wait.
I just hadthis thing together in my free time.
How can we be showing asthe thing that we're doing?" So okay.
This isa thing that I'm doing that actually seems to have value, so I'll just keep doingit.
So we kept doing that.
>> So where you established the pattern that youwanted to later get to? >> Yeah.
I think it made the team realize that this guycould do some stuff.
I could throw something together, and have a prototype working quickly.
So then, we ended upworking on this thing called Plan nine with codename.
It was basically a competefor PHP style size.
The whole goal is to make iteasier to write web pages in.
NET, and it was too hard because there was too much Web Forms and I thought, "So what if you could just writecode and pages again like PHP?" >> Got it.
>> That whole effortspawned a bunch of tech.
Razor, our rendering, companyengine, it spawned NuGet.
NuGet came about ina really fun way, actually, wherein you get packagemanager in the web page, and we thought that wasthe coolest thing ever, where you can sell packagesin a random obligation.
It's not secure at all,but we didn't ship it.
>> So you will alwaysadd that stuff later.
>> So we ended up havinga meeting with Scott.
Really it was me, Scott[inaudible] and David Ebel.
We showed our prototypefor the Ambrosia version and [inaudible] have been thinkingabout gems for [inaudible].
>> He's like our president.
>> Or our big boss.
>> He had been thinking aboutRuby On Rails on our compete with Rails and James wastheir package manager, and we didn't have anything,and there were a couple of package managers that werebeing made by third parties.
We had been working on NuGet.
So we got together, built NuGet, and that was the firsttime I remember, I got to use ComputerScience at work.
>> Like in the theoretical sense? >> In the theoretical sense.
>> I see.
>> All before that youdo all the algorithms, and you do all the CS stuff, and then you come to work, and you're working only fixing the build.
>> That was the first timeI got to use the graph, theory and graphworking and like that.
So it was cool for mefrom that point of view.
>> Got it.
>> I didn't really understandthe impact that NuGet would have on the whole [inaudible].
Going forward, I just felt this is a cool thing I'mworking on right now, and then we saw it growand grow and grow.
I think that was one ofthe bigger things that I think had a bigger impact early on.
We wrote the server, the client, it was all crazy, it was us running a live service where wehad no idea how to do it.
It would go down, wewould patch it in production like we always do.
>> Often times.
>> This is probablyworth mentioning at this point running services atMicrosoft was still a new idea.
>> It"s pretty new.
>> I'm not even sure we're really.
There was no Azure.
Ithink it run on some days.
It run maybe on Davidthat was like machine.
The first version wasactually on CodePlex.
>> It was repository and we tookpull requests for new packages, and then that grew, It's like size and they were like, let's make a server with a protocol, and then we use OData, and then as the skillgrew, things fell apart.
You have to make a brand new servers that would have been scalable.
I did that for about two years, 2.
5 years but the whole team,I was the first time on.
It was funny because when the NuGet team come andtalk to me some new Dev, I was like, yeah I wrote that.
That's my code I'm sorry.
>> You got to be carefulbecause if you manage for too long they take all of your codeout and you can't do that anymore.
>> This is true.
Although atintern last year was that yeah, I removed some bad code from the Git and I waslike that was my code.
>> No hire.
David was like no hire.
>> That's fine.
>> It's fine for you guys.
Youcan do this whenever you need, take it even to the Microsoft.
>> No authority.
I can't fire anyone.
So that was first andthey give us first, and then I was sent fromhis Plan 9 and NuGet I was working on the side withDamon Edwards on this thing called SignalR and Ihad been doing it, I'm not sure why I've been doing it.
I had been working on this thing like[inaudible] , see now how we hire.
>> Sky D like ID with sky.
>> Yeah so like Cloud ID.
>> Got it.
>> The whole idea was tohave a file-sharing kind of code-sharing experience.
So I wanted to makeit so that your MVS, I'm in the browser, I can share my instincts with you so that it'sa live share, all right? >> Oh, cool, yeah.
>> But like seven years ago.
So much, much earlier thanLive Share but a worse version.
A much worse versionthat didn't work at all.
So I was building this thing and I had to make it workwith like with.
>> I started to work ona library to make it so I can collaborate over along polling between VS, and between my web application, and then that turnedinto this thing called signaler and I saw Damianhad given a talk at a conference about how youcan do long polling in ASP.
NET because there were no good blogs or anythingon how to do it.
So he had given a talk on how todo it and I had seen it said, so it had gone away, he works here.
>> Actually you guyswere working together? >> I built a thing, hegave a talk about it.
I went to him and I said, "Hey, I did this thing, you should come see my thing.
" >> I see.
>> Then he saw.
>> I see he was organic actually.
>> He's organic.
>> Then we started workingafter work on Lync, I think it was called the time,Lync not Skype for Business.
>> Sorry, you calleda different name.
>> We talked a little after dinner time, we'd be onthat thing until midnight, because he's an old man,he went to bed early.
>> I see.
>> I was up all hours andworking on this thing.
We built the first version.
It was not a Microsoft product.
It was open source.
>> Was this like literallylike moonlighting? >> It was, yeah, it was actually moonlighting, where we didn't work on it, went home, opened a differentversion of Visual Studio.
>> Like an older one? So you didnot have to talk [inaudible].
>> Fully Express.
>> I see.
>> Hey, that's cool, that's in the license man.
>> Exactly, right? >> Yes, you can do that.
>> So we put it on Bitbucket, it was our first experiencedoing open source in real life.
I think what made it popit was so easy to use.
You can do chat in like five lines which maybe inhindsight was a bad thing because people end up having unscalable chat becausethey think you can do, why stop in final code.
>> This is like, ifyour sample is too good.
>> Your sample is too goods so like.
So good so easy to get started.
It really is but man thatscale is really hard.
>> Got it.
>> We put it on Bitbucket.
Lasted for a while and thenwe had a conversation with Scott Hunter who wasour boss at the time and he said we had an agreementthat after we shipped Plan 9 we would makea similar product.
So we've got transferred from our ownership to be on Microsoftproducts, and then we got off.
>> Would have you tested on.
Was that like a process, you like a test ownership? >> We had to sign a thing actually.
It was the first time you had done like a copyright handoverto Microsoft.
>> Hope you hada good lawyer at Microsoft.
I got my lawyers.
I lawyered up just to make surethat all the legalize was perfect.
It's funny at the same time thiswas happening I had been working on this thing called KUDU.
You know what that is? >> I don't think so.
>> So KUDU is the Azure App ServiceGet Deployment Technology.
>> So when you do get pushto App Service you use KUDU, and that was me andDavid have been working on this thing.
So I havebeen working on that.
>> That was like your day job? >> Yes and my day job had beengoing from planning to working on this thing because at thattime Azure had just been like, it had been out already.
It had been really hard to use, and App source was just coming outand saying okay, I can deploy.
>> Host one page.
Host your simple websiteon Azure using App Service.
I think it was called somethingelse by then like Azure Websites.
>> Me and David about have beenworking in our day job on KUDU.
So I've been doing it in my day job and then in my freetime I'd be doing SignalR.
So it's like split-brain.
>> Got it.
>> As KUDU got booted and was working likea maybe a year and a half in, and I got promoted to senior, and then I had to makea choice like they want to keep working on KUDU because by then the team was being a reorgto move into the Azure Team.
>> So I have to choose at that point.
Do I leave and go work on KUDU on Azure websites or do I stayand keep working on SignalR.
>> So this is a road for us.
So of course one of our goalshere is to sit down and think through where are the placeswhere you had to make a decision.
Actually, I have a thesis which I'll lay forth which is that they're actually tended to not be as many of those in people's curvesas you think a lot.
>> I find that most ofthe people I talk to, weirdly just create these environmentswhere they fall into things that are awesome in creatingthat environment is a thing but this is like oneof those forks in the road.
>> Interesting to me is the factthat it was organizational.
Effectively there was a reorg I guess in and you had tochoose left or right.
>> Yeah, and it was hard for me because that would havebeen the first time it wouldn't have hadmy achitecture that I had been the whole time at Microsoft.
>> [inaudible] in this case? >> Yeah.
So we had beenworking together on everything basically everythingwe had done was together, and then I was, okay do I branch offand I'm that guy now or is it time to leavehim and let things go? >> Because he was going to KUDU? >> Yeah, he was goingthere.
He was already set on App Service assisting.
So eventually we split and he went to work on App Serviceand I stay on SignalR, and when we had finished that work we actually gota whole team to work on SignalR.
This is like a moment forme where I went from being just a senior Dev to being like the leader of this teamand there's no technical.
>> Technical? >> Yes, there's no like, there is managers andjust ICs on Microsoft.
There's no tech lead positionofficially in the title but I was like the person on the team responsiblefor making decisions.
>> It's an informal thing.
>> Yeah it's an informal thing.
So it ha been me and Damianrunning this entire team.
>> Damian is a program manager? >> Yeah a program manager.
>> We got, I think it wasabout five engineers working on it.
Two new heart from college,I'm a really good.
>> So you felt the scope expand.
>> So like yeah I felt like well, I got a team to work on the thingthat I built in my free time.
This is a thing here.
That's kind of cool.
We made a fake team room becausethere were still offices, we got some conference[inaudible] offline.
>> I know I madesome bad comments when you said team rooms, right? We're sorry, I'm sure your opinions about teamrooms are very technical.
>> It was amazing,and we went through the experience of going from anopen source project by a Dev and a PM to a real Microsoft productwith security requirements and it was an insane coupleof months to make it go from that product to looka real twin in-product.
>> Got it.
>> A bunch of bugs were found.
Security bugs, security reviews.
So the level ofinvestment that we had before compared to after itbecame a product was immense.
>> Got it.
>> The amount of stuff to gothrough and check boxes to check to make sure you can ship asa product that was serviceable, unpatchable, it waseye opening for me.
Then SignalR, we shipped it, and they caught on peopleuse it everywhere.
It was the thing thatI thought would be impactful but I didn't reallyunderstand how impactful.
>> Got it.
>> We are like five years later, even now people are justdiscovering it and going like, "Oh God, its easy to use,"and I'm like, "Oh, wow.
" This has been here five yearsbut it is still super-useful.
>>Do you like I don't know ifwe should start it or not.
Do you have like a number?Do you have a sense? Like I guess I obviously don'thave that kind of things that people deploy but doyou have a sense? >> Of how I can really use SignalR? >> Yeah.
>> I don't know.
I've taught my head, I, a lot.
How many Twitter followers you got? >>I'll tell you what.
It's used in places that I would've never thought that itwill be used in the first place.
Its used in Video Studiosin various extensions.
>>It's basically anywhere you want to connect two things and have themcommunicate through a pipe.
What we learned the hard way of doingSignalR in the first place, I learned a couple oftechnical problems that we solved like doing Distributed Systemsin general is really hard.
We went in being a team workingon the Single Framework.
Single boss was the main thing.
Then doing a SignalR witha different kind of scale, different kind of level ofproblem and going into it, I am going with First-Principle.
If I'm doing X, Ididn't read the theory, I just solve it doing these things.
Its logical and it makes sense.
Then you learn the theoryreally that's why it's a guarantee order at mass skillwith infinite retries and later.
>>But because you weren't comingfrom a distributed system.
So welearned that the hard way.
>>Did you add peopleinto the team that could help fill those thingsor you basically– >>We bootstrap various peoplein the company that knew stuff.
>>We got feedback from those people >>So because you had a network available of people who could like supply the expertise thatyou guys didn't have.
>>It's not like you had tolike go to the Microsoft.
>>Eventually endedup learning just by nature of helping customerssolve issues by fixing bugs, the kinds of things that you design for when buildinga system like this at scale.
>>I mean do you feel like– so obviously you didn'thave to throw it all away? >>No.
>>Like end up working, was that like a situation where you just feellike you just had okay instincts, and that's why you landed in a place where you're able to keep the design, even though you didn't necessarily have the skill set that you have now? >>Yeah.
I think it was more we had a bunch of smartnesson the team in general.
So people were just talkingabout things in general.
So we knew a bit aboutsome things like theoretically.
>>We designed for thatand we had some help from Clemens Vasters who is an architecton the Azure Service Bus team.
He helped us design some of thesome of our scaling primitives.
>>Because there aredesign analogs in their world.
It's actually a really good matchbecause we supported.
If you have SignalR on two machines and you want to broadcastto all users, guess what? If you're over here, it has to get tothis machine somehow.
There areusers on other planes.
>>So we had a plug-infor a service bus.
Clemens had writtenthe first version of that core using our extensions.
So he helped us designthat whole thing, and it helped me learnabout the systems, and it helped me understandwhat mistakes we made in the whole designof SignalR or on what on what kinds of things the next versionwould or wouldn't have.
>>Right? One ofthe big things that I think, we did like things I saw both arevery common that customers had, that were hard tosolve or unsolvable in the older version was because ofchoices that we made early on.
So in the in the newversion of SignalR, we said okay we'll start by sayingwe learnt these things before.
We will make it so that you can't do them yet andyou have to write your own code, and then if everyone complains, then we will make it easier.
>>So we took theapproach of let's not try to be everything toeveryone by default, but make it really easy touse and easier to ramp upon.
Then for the really hard problems, we will take it one at a timeand solve some of the issues, not all at the same time.
So prioritizationto make sure.
Do you feel like there are any major regrets in the story? Do you feel like therewas one thing that you would wish you hadn't donethat you can talk about that? >>I'd say like the adding support for scaling SignalR tomultiple machines is not regret.
It's a thing I wish we understood more about beforejust jumping into it.
>>You would have lookedat that earlier.
>>So we shed 1.
0 without it, we shed 1.
1 we added it andthat was me doing the feature.
I did a whole feature myself.
We designed it but I wrote allthe code for that feature.
>>Some of the design choicesthat we made were just insane.
>>It was just like you got major version number allowedyou to undo those decisions.
So for example– >> So no fatal flaws basically.
>>Yes, we had a cache ofa million by default, and then everyone was like we'releaking memory and obviously, oh, maybe that's too big.
Those kinds of things that should have beenobvious about doing it.
We're just like, oh,interesting with this bug.
Do you want totalk about anything after SignalR before we transitioninto the next section? >>Can't think.
Yeah,NuGet could do SignalR.
So I think after SignalR, people saw that I had a track recordfor getting stuff done, and maybe running a team or running the design ofa big thing, right? >> Yes.
>> So then I got in trusted with being one of the architectsfor ASP.
It's me and a guycalled Louis DeJardin.
We got told by our minders, hey, we're trying to work on this brand.
By the way, it was called ASP.
There was no Core atall at this point.
We had a thing called Katanaand Owin from the older stack, that we were trying to figureout how to move that forward.
We got a told we're makinga thing called ASP.
We want you guys to leadit.
Just go figure it out.
So at this point, I was okay I'm still working on SignalR.
So we're still fixing bugs.
I'm still in the day-to-day.
How do I pull out at the start? >>Do you think about this as making a transition from tech lead to, this is when you start to actually become like baby architectand something.
>>Yes, it didn't feel so.
I was still developing SignalR and still running the code,fixing the bugs, answering customer which honestlike overflow on GitHub.
>> They gave youpercent or something? >>I was still in it, right? I would design features,but I still be like coding thingslike every milestone.
When we did ASP.
NET Core, when I moved to that rolethat felt more like okay, you don't have to code anymore.
You don't really have to,you can if you want to.
But your job is to make sure thatthe whole team knows what to do.
We sat down, me and Lou, and we brought a bunch of prototypes, demoed a bunch of thingsat the next MVP summit.
Remember I demoed a thing that was basically the future of ASP.
NET Core, and it's me onstage showing product JSON and the wholedynamic competition model.
We wrote a thing and we came back and said thisis what we're going to build.
>>After selling this people.
>> Of course.
>>We were just talking aboutthe fire festival before this.
I'm just wanting that out.
Maybe JSON was firefestival.
But it's been, of course, started andit was a big project.
We basically had air cover from our managers and it was the first time I've feltthat much autonomy.
It was a little bit scary at first.
It was the like there's beingresponsible and then there's, okay you can do whatever you want.
Your manager will cover you, and hopefully, you makethe right choices.
It feels like, oh, okay.
>>We learned aboutbeing a bottleneck.
So there was a big teamworking on ASP.
NET Core and every single design decisionwas going through me and Lou.
It got to a point where we became really this bottleneckin this funnel.
>> Where people that want to design a thing yeahwe're coming to us and going, okay, I have this problemand we are looking at it.
I'm doing these other things.
I can't do this right now.
So we made a thing calledlabs, lines and boxes.
So every day during the week, we'd have open hoursfor lab designs where someone would bring intheir design issue and we'd go over it in the boardlike a diagram.
>>I see boxes and lines and that.
>> Lines and boxes, yeah.
>>That'll be different.
>> It was loosely named labs.
We're going to do labs.
>>I guess balanceddoesn't sound as good.
>> It helped us finding the problem.
This is where I began to learnabout trusting other people.
>> Got it.
>> That sounds bad.
>> What I really mean- >> Well, whatever.
We allgo through these things.
>> It went from me having control over the code I waswriting and everyone- >> It's letting go process.
>> Yeah, and coding everything, to having to not beingable to review everything, and it was really hard for me.
>> It's because, insome ways, I think like, yes, the architect role is ambiguous.
>> It's actually one ofits defining characteristics.
>> But in some ways,that's the thing about it.
>> It's like you'reprobably not an architect if you can't delegate in the individual contributor sense of decisions to other peopleand building that trust.
>> You have to let other peoplegrow as well, all right? >> Right.
>> I didn't want to micro-manageeveryone's decisions, so you have to let people make decisions and thenkeep them on course, but don't grab themand tell them to do X.
>> Pick your battles.
>> Exactly, yeah.
Iremember there was one situation that happened.
I would not mention any names, where a dev designed a feature.
He went overnight.
He got requirements from the PM.
He'd done the feature overnight.
He came and showed us and somebody had a different ideaof what they wanted.
Not an idea, they hada different implementation.
>> Got it.
>> In their head.
So whatever they were showing, thiswasn't the answer.
>> Because it wasn't.
It didn't match the vision they had in their head.
As a resultof that, not a great thing because the dev didn't feel like he was empoweredto make decisions.
That is when I beganto realize, okay, this role [inaudible] Thisisn't really about me being right or me havingthe answers to some problem.
It's really about makingeveryone more productive.
>> It is like creatingthe environment.
It is the right environment.
It is the right technicalleadership and guidance for people to not onlytell them what to do, but to give them freedom and have them tell you what theythink is right or wrong.
So I had to learn how togo from we should do this, to what do you think we should do.
Let us seehow we can tweak that to match whatever the goal is.
>> So what got you from A to B? Is it like you just hadthis realization at one point? >> You got to be into it.
>> Well, sometimesthat's what it takes.
You have to bang your headagainst something.
>> I think it wasthe scale.
The amount of people that were comingto me and asking for- >> Made you make choices.
>> How to [inaudible] , I had to go, I cannot micromanageevery single decision.
>> I see.
>> Even with two architects, wecould not manage the workload.
>> So in some ways, ifyou're working forward like at each of these sortof transition stages, it was basically you had to identify what the skill wasthat you needed at that point.
>> Then, basically, you allow the time management to force you to do the transitionthat you needed.
>> That resonateswith me as a manager.
It took me maybe, I would say only two years ago, I really thought I had let go.
>> I see.
>> I still felt like I was like, oh, I have to do this thing,I have to do this thing.
Then after a while, bugsstopped getting assigned to me.
Bugs that were assigned to me, were counted as bugs thatweren't going to happen.
>> Instead of using a tag, you just decided to David.
I got it.
So people like, "Okay, I can't assign him the bugbecause he's the architect.
He isn't the one that'sgoing to fix it anymore.
" I felt, wow, there'sa thing happening here.
This is different.
That'swhen I knew I wasn't just- >> That was you're like looking back and seeing what happened.
>> I wasn't just a principal dev.
I was a person who wasn't supposed to be in charge of writing the codefor a feature at that moment.
I was more, hey, the bug is assigned to him, but this should be assigned to adev whose going to work on it, and dev that can givethe feedback about this bug.
>> All right.
So we did one of these already.
I want to work backwards in time, and I want to see the places where you felt you had to make a choice.
Are there others? Is theone that we talked about where there was areorg and you had to go out left to right?What are the others? >> One was a reorg too.
So I had a bunch ofreorgs in my career.
>> Microsoft is really good at career developmentvia reorg, I guess.
>> There was one whereI recall us having a choice while working on a SignalR to be mergedinto service bus.
I was like, we had been mergedinto the Azure org as a whole, but then there shouldbe a different fork.
I went, I have todecide if I want to, if SignalR is going to moveto this thing or it won't.
I had a choice to, do we want to have the team go there, have dev be a different manager, and I said, "No.
" We kept SignalR in ASP.
I think it was a good choice overall, but it had been a whole conversation, like should we put SignalRas an Azure thing, should it be a part of service bus.
>> What do you feel like? We don't need to replay the entire decision, but I'm curious what you learnedor whether you feel you did that well or if you would have learned anything from thatprocess in making that decision.
>> What everyone alwaystold me, and this isn't a stain on any specificteam or manager.
Working with a good manager that you like and that you enjoy workingwith, is super important.
For me, at that point, I liked my manager, my managementchain.
I think I'm doing well.
>> You thought you were gettingthe support you needed, and so rather than taking a variable into there whereyou'd be adding risk.
>> Yeah, exactly.
>> You felt like youcould still grow.
I felt like I had ultimate autonomy whileworking.
I felt I was at that pointwhere why change this right now because I'm still in the middle of it.
I don'twant to move that point.
>> Is it fair to say you're still able to turn that intothis sort of the deuce, right? >> Yeah, it was that.
>> There's an alternative universe, in the Marvel multiverse where- >> Yeah.
>> Well, you're over hereworking in service bus- >> It could have been good.
>> -and you established all of those- >> Exactly.
>> -things, but you feltlike because you had that support structure inthere, why take the risk.
I'm trying to think of a different timewhere it happened.
I say every time I move frommy previous project to the new one, like moving from NuGet toSignalR was tough too.
>> Did you choose that? >> I chose that one.
I had tomove between my two children.
>> I see.
>> And it felt like my NuGet.
NuGet wasn't done.
It was, we we're growing a team- >> There's a lot ofpeople working there now.
>> I know.
It's so cute, right? >> Yeah.
>> Do as a server teamand a client team, and I had been working on both, and I had been the NuGet guy because I had been therefrom the beginning.
Unlike I had been workingon SignalR in my free time, but now I was gettingthe chance to lead SignalR.
I was like I have to.
I cannot [inaudible] the chance.
>> So in the last one, the decision was between support.
This one was about, there was just a babyand you just needed to make Sophie's Choice betweenwhich one of the child.
>> -and go in there,and you just felt like there was so much potentialinside of SignalR, and that was the signal thatyou just basically went with? >> Yeah.
How didyou pick this place? >> Microsoft? >> Yeah.
>> It's funny.
So I wentto college in Florida.
I call it the MIT ofFlorida, which it isn't.
It's FIT, Florida Tech.
I went there because I knewMicrosoft went to the career fairs.
That'ssome long range planning.
I did some research.
I mean, they go to a bunch ofcolleges in America, but I chose Florida because they had a good CS program and because there was a careerfor they have Microsoft.
I heard they didn'trecruit freshmens.
It was too early to recruitfreshmens.
So you only go- >> Oh, like for an intern? >> Yeah.
So you go tothe career fair in your senior year, when you're almost done, orjunior year to get an internship.
My freshman year, my friend andI wrote a game, we made a game.
There was EA there and Microsoft.
>> You mean ElectronicArts? The company? >> Yeah.
>> We showed the game to Electronic Arts and to Microsoft,and we got interviews.
Because they were like, "Ohmy God, you guys wrote a game?" Because we didn't knowanything.
I remember writing a- >> I'm sure you do a thing.
>> We didn't know any theory.
Because first year youlearn intro to Java, and I have been encoding waybefore college.
So we did- >> Java, is that thing.
It's like C#? >> It's like C# but less bar.
>> We love the entire ecosystem.
>> We love Java.
We wrote a Java kind ofa SignalR.
Here you go.
>> So you were learning theory.
You weren't learning theory.
>> So for example, in the game, we wrote a parser for math, so you could evaluateexpressions in the game.
>> It's like thetraditional first build the calculator app in your game.
>> But it was parsing in fixed expressions andtrying to evaluate things.
We didn't know the theory behind it.
So I wrote a thing just based on first principles thatI thought was right.
It turned out it was right sometimes, but then at times it wasjust completely wrong because it didn't have the right precedenceand ordering and stuff.
Then my friend went to logic class, and he learned about RPN,reverse Polish notations.
Then he was like, "My God,I've solved the problem.
" That was our very firstlearning a parser.
We were at that stage.
We hadn't taken any coursein algorithms yet, and we got interviews.
So I interviewed for internship, and my school was known for testers.
We had a software testing degree.
So I got put in a bucketfrom the get-go.
>> SDET? >> Yeah.
>> Which was basically Microsoft up until about four or five years ago.
>> Five years ago.
>> We had three disciplines, so Software Development Engineer, Software Development Engineerin Test, and Program Manager.
So you were SDET intern? >> So I didn't know thatat first by the way.
So junior interview, I had to go study super hard because Ihad not done algorithms yet.
So I had to go learna bunch of things.
>> So you can reversethat linked list.
I got asked all the weird brainteaserquestions that they asked before we hope we cut those questions.
I hopewe cut those questions.
>> We did.
So I got askedthe question about, how do you count the numberof gas stations in Florida? I remember staying then going.
>> I liked that they localizedthe question for you.
I asked them.
I said,"Is that a trick question?" I asked and was like, "Isthis a trick question?" He said no and I was like, "What?" So I got an interview.
Myinterview for my internship, I flew out to Microsoft, interviewed.
I remember being in the hotel roomwith the algorithms book open, and I just passed outwith my face in the book.
I was only reading a book.
I was like, "I'm goingto fail.
" I'm reading about heaps and trees.
>> So this is very much just-in-time? >> I didn't learn it in class yet.
>> Just-in-time learning.
You had to do it the nightbefore in the hotel.
I got the interview, got internship as an SDETon the ASP.
Wow, so they counted you in.
>> From internship, yeah.
Thenat the end of my internship, I told my managers itwas a great internship, I want to be a developer, and I interviewed to be a developer the last day of my internshipto be a developer intern.
So I came back next yearas an SDE intern.
>> Then you wrote the intern program.
>> Yeah, full-time offer.
>> Get them young, folks.
>> Yeah, those traps.
>> Go to Florida.
>> I went to Bill Gates' house.
I was the last group togo to Bill Gates' house.
>> Yeah? I think we still doa pretty good job.
We got a year on.
>> They get artists known.
>> You should sendus Twitter request.
If you're an intern at Microsoft, we'll let you go overto David's house.
He's got some work in the backyard.
>> I was this close to Bill Gates.
At the intern event at his house, they take your phoneand stuff because you can't take pictures at his house.
>> They take us to a church I think, and they said, "Handthe phones over.
" >> I bet there's swear in the Bible.
>> I think there wasa metal detector to detect stuff, and they took our stuffand went to his house.
We were sitting on his epic lawn.
Then someone shouts,"That's Bill Gates.
" I remember standing upand turning around.
The entrance had formed a circle.
I was in the middle of the circle, and he was at there.
I was like.
The interns are super smart by asking him questionsthat sound super smart, and I'm just like,"That's Bill Gates.
" >> My closest touchedby a grain story is one time when I was atmy first conference with customers, I came out of the bathroom ina Japanese conference hall, and then I bumped into Ballmeras he was on his way to stage.
>> That's awesome.
He's bigger than hehad at this period of time.
All right, so let's go to the beginning then.
When did you realize thatcomputers are a thing? What's your first computer?When did you have your first computery experience? >> I had a Macintosh SE, and I wasplaying Frogger on that thing.
We had Frogger commerce San Diego.
By then I was just playing games.
I think games got meinto programming.
I want to make games.
Iplayed so much game.
>> Got it.
>> Where is that? I playedso much games in my teenage years.
I don't play any more at all now.
I just stopped playing games.
I thought I'd neverstop playing games.
I used to play so many games.
>> I was the same.
But then now with the kids,it's a little bit more.
>> Maybe eventually when I getolder, I'll play more games.
I have been playing ton of games, RPGs, everything, Age ofEmpires all this stuff.
Then around age nine, 10, I just felt likeI want to make one.
So I went online and like,"How do you make games?" >> There's online in this story? >> I had Internet.
I'm not that old.
I had internet.
So Isearched on AltaVista.
>> That's good.
Today's program is brought to you by AltaVista best search.
>> So how do you make games? I found this thing called Qbasic.
That's awesomethat it was basic.
>> Install Qbasic, and thenI made a tile-based RPG.
My first one's a tile-based RPG with a guy on the screenmoving around.
Then that got me into programmingand has learned from there.
So it was Qbasic.
>> So it was 10, "print,'David is awesome.
'" Then we go to 10,tile-based RPG, [inaudible] >> Exactly, that's what happened.
Then I found Pascal somehow.
>> So you were mostly self-taught? >> Yeah, before schoolbecause I learned on my own, and then we hada Pascal class at school.
>> I had Pascal in school.
>> You did? >> Yeah, even the old sideof Pascal.
Yeah, I did.
>> By then I had known enoughto know the basics and stuff.
So in Barbados, there'sprimary school.
>> Yeah, we should talkabout.
Where is Barbados? >> I'm from the Caribbean.
I'm not from America.
Me and Rihanna werein the same school.
>> At the same time? >> Same time, same school.
She is two years younger than me.
So as she saw me, she might go.
>> So she probably looks up to you.
>> She might actually knowme.
I'm not sure though.
I remember I saw her in Barbadosmaybe four years ago now.
I was like, "I wonder ifshe would know who I am.
" >> I looked this up.
So aspart of wanting to look smart, I did read the BarbadosWiki page last night.
>> I think she has a titleas the ambassador, plenipotentiary, whichis a great word.
So you have something toaspire to in your career now.
>> We were in the same school,yeah.
That means stuff.
So in Barbados, the wayit works is you go to primary school until age 11.
They make you take a test like the ACTs to get into high school.
It's crazy actually.
>> I guess I know.
Wikipedia says it.
I've got a Barbados-splain you.
>> Yes, splain me.
>> They say it's in the UK style.
Is that right? It'san ex-colonial country.
>> You wear uniforms.
Youdon't wear your own clothes to school.
>> Even a sweet polo like this? >> No.
You wear your khaki uniform, and you were your dressfor your school.
So you do a test at 11to get into high school.
You get to some high school.
>> Then they track you basically.
>> They track you, yeah.
>> You can go on untilyou're 16 or 18.
So you can leave at 16 and go to community college andget an associate degree, or you can go through untilsixth form and get your A levels.
>> That's very UK.
>> For the UK people, it's GCSE.
I think it's what'scalled over there.
>> I heard that.
>> SATs are at 18, right? >> You take it at junior, senior high school,third, fourth year.
>> So what I did wasI left school at 16.
I went to community college.
I did physics, IT, and math.
I got an associate degreein those things.
At that point, I had beendoing IT programming.
>> Got it.
>> That was where I had todo it for a class for real.
When I knew I want to do programming, what sealed the deal is when I had been doing a projectfor our senior project, and I wanted to make a Windows GUI.
I didn't know what to do honestly,well-aligned Windows GUI.
I just typed in on the AltaVista.
I think Google was there by thenand this thing called Win32.
I didn't even know that Iwas coding in C really.
I just know I was coding on Windows.
>> Because you go in from samples, like a sample you made too easyfor SignalR and IO an everything.
>> So MSDN had code samplesfor everything.
I can just copy and paste and run and learn by trying thingsright and debugging.
So I have been using Visual Studio.
>> Did you get that fromschool? You can say pirate it.
The statute of limitation is gone.
>> I got it from school.
You have a really good educational program where you givethose things away.
>> I had been up all night.
I remember I was up until 5 AM, and I wrote this in GUI, in Win32, and C.
I couldhave used the Visual Basic.
I could have used VBA,and anything else.
I had done it in C andI felt super hardcore.
Actual GUI buttons and interactive in that drop-downs and they got the whole thing working.
No ETL, then the last time I wasjust like win Robin 32, right? >> Well.
>> And I demoed it, andmy teacher was like.
>> in the cream couch.
>>I demoed it, and I was so tired.
I hadn't slept for a whole day.
I was up, didn't sleep.
[inaudible] My professor asked me what I used, and I say Win32 andhe was like, " What?" Then I said yes I wrote an app and he was like, "I don't believe you" >> Printed out the codeon a dot matrix printer.
>> I had GUI, had to use VBAor something else.
>> So that's your next sign that you are maybe capable of doingsomething and a bit more.
>> I have been likea TA in the class.
I had been helping everyonewith their programs.
>> I see.
So really, realistically, we're looking atthis, there was never a doubt? >> Yes.
If you were to ask people in my classthey would've been like, "yes, he's a programmer.
>> All right let's shoot forward in time again, let's talk mentors.
So there was at leastone in the story, right? Seems like he taught you some stuff.
>> Yes, super informal, buthe was a really good mentor.
>> What's the number one thingyou felt like you want from him? >>Debugging skills.
>> Interesting, I tell people this all the time.
I'mglad you said that.
>> He had some habitsthat were really good.
Like, imagine you made a changesome piece of software, and you apply the change, but then it didn't show any effect.
>> First thing youdo, is you you throw an exception in the main cold path, apply it again, did itthrow or then throw, all your thing isn't running.
That technique is just so simple.
I see people debugging and they don't know it.
I'm like, "Oh my God.
" He would do it all the time, he would always asked these questions that were just likeperfectly, "Did you try this?" Then he's like, "Oh, no.
" So he taught me a reallygood debugging skills.
>> This my thing, like anytimeyou have any opportunity at all, I'm going to give career advice.
Like where you can learnhow to debug better, like a conference orread blogs or whatever.
Oh my God, such a good skill.
I'm sure Ilearned a bunch from him.
[inaudible] time zonebecause he would.
It was so like, I see other people not having that skill and going like hetaught me that super early.
He didn't teach me Ijust learned from him doing it.
Oh, that's how you do it? >> Yes.
I was the manager for debugger team fora little while and I would always tellpeople like you're trying to explain to somebodynot technical what you do.
You say oh yes, writecode.
Which is a lot.
You write codes like five minutes in the morning and youspend the rest of day trying to figure why it doesn't work.
Anything you can do inyour life to like shrink that period of time isthe number one thing.
>> He was amazing and debugging.
Best career advice.
>>Best career advice.
>> Maybe the one I got from Scott Gould where Iremember I was trying to solve a problem where I had to get team to do a thing and Ihad no influence over them.
So I thought I had to go all the way up the management chainand push all the way down.
>> I was going to say that'sa hell of an escalation.
>> I thought to getthings done you had to talk to your boss andyour boss's boss and you boss's boss's boss and then have their boss talk across and thenpush down.
Like all the way up.
>> We get to data structures.
You can assumeits like a tree.
I can't jump to a cousin.
I have to go through the parents.
So he told me some story about him in his silver light days and himmaking a thing happened because he knew a guy on some other teamthat was in his hood.
Him knowing that guy, andthe trust between those two helped them get things done.
>> Do you do intentionalnetworking behaviors or is that sort of just something that happened fromthe kind of friend that you had? >> No.
I try to do it more know because Isee the importance of it.
>> It's the only reasonhe's talking to me.
>> I think for the most partI hadn't tried it, it had been mostly organic.
>> Do you havea worst career advice?? >> I was thinking aboutthe worst Career advice.
Maybe I did have career advicebut I just threw it away.
>> Like you side swept the disaster? >> I can't think ofanything on top of my head.
It's all right.
>> I've never hadbad advice ever in my life.
>> All right.
We kind oftalking about one though.
Let's talk about, in terms ofmaking yourself more efficient.
In order to achievewhat you've achieved, what are your productivity hacks? How do you stay effective? How do you sleep sometimes? >> Yes.
It's a goodquestion.
I had kids right in the middle of ASP NET Core andthat a life changing thing.
>> I used to work crazy hours.
I would work at work, work athome and there was no break.
Right? People would say I don'tdo it as often as I did before.
So I use my work tocommunicate with others.
I use work to talk tothe people that are at work and figure out designs, figure out issues people are having, how to solve those issues.
>> You redirect more of yourtime towards interaction? >> Yes.
When I"m not codding at work.
So I think I'm in a place now where, I get things done after hoursthat I wouldn't normally do.
Either early in the morningbefore I start my day, I would do coding stuff or slightly after the days' ending when I wasn't going home I'lldo some coding stuff.
During the day I don't like codingbecause people are there and I want to use them andget their brain power and get access to them at work.
So I normally takea list of things that I think are things to solvefor the next milestone, for the next week,for the next month.
I put in a Notepad andthen a kind of order it.
>> So you do have a backlogin one note? I do that.
>> I just started doingit again this year.
We'd do this year fromlike [inaudible].
I kind of want to keep it around so I can see whatI did because I I've been removing stuff asI complete it because I felt like it was a lot of overheadto have it there in the file.
>> Got it.
If compose it, [inaudible] I did all of this stuffalready this week and I'm doing stuff.
You got anything else you want to share with folksin terms of codding stuff? >> Yes.
I'll say onething that's interesting.
I got to a point where I didn'tknow if I was doing any work.
I felt like I was in limbo, where I would come to work, I would talk to people, go to meetings, do stuff and I felt like I did something andI get home and I go what.
I didn't have any commits? I didn't close any bugs? I didn't do anything concrete? How are they measuring me? How am I going to get fired soon?Are they going to fire me out? >> Yes.
>> It took me maybe two yearsto realize that this is my job.
What I'm doing is my job and I need to go and make everyoneelse productive like.
There was a blog post on Hacker News about what a principal engineer is.
It's a force multiplier.
So see your dev likeyou type super hard, your technical when youget in your area and you just like principle devs.
Don't just type harder.
They impact the entireteam in different ways.
Right? I think that's the bigdifference between going from being a really good dev to being someone who has toimpact the entire league, team or Org or company.
Itsa different scale.
>>It's like you had to figureout how to take credit for it.
like you had tointernalized that was work.
>> So for example I rememberI wrote the prototype for the process.
We have a new module for iOS.
Runs and process and I wrotethe prototype for it then dev wrote the actual codeand it took a while.
We shipped it and I'm like didI do it how did we call beat in a meetings display agreeing Austin[inaudible] do anything without useful.
I'mactually looking forward to getting people from all sortsof different roles.
I suspect we're goingto find that as we talk to people whoare further along in their career that I certainlythat resonates with me like I literally sit andtalk to people all day.
And when that's like a bad dayactually it's weird.
>> Your kids like, what doyou do at work and otherwise? A lot of people I have metto people into meetings.
Yeah what do you doall day? Do you work? >>All right.
>>David thanks for your time man.