I’m Leaving the EF Team, But Still Working on .NET

After 8-and-a-bit years on the Entity Framework team, it is time for something new. I moved to the US in August 2008 to work as a tester on EF. It is difficult to overstate the impact that being part of this team has had on my life. After a few years of testing, I swapped to being a program manager. Back then, we were a team of ~60 people working on the EF runtime and designer. I’ve enjoyed the journey to a more agile team of ~10 people, working on EF as an open source project.

I have great fondness for EF – both the team here at Microsoft, and the contributors we’ve worked with since moving to open source. In particular, Erik Jensen and Shay Rojansky as contributors to our code base, and Julie Lerman as an author and speaker on EF. Above all, I am thankful for all the folks that use EF, and the many chances I have to meet you online and in person.

I’m staying at Microsoft and will still be working on .NET. I wanted to take a break from building a product, and spend more time focusing on community, architecture guidance, documentation, talks, etc. I am very fortunate to work in a place that was able to make that happen.

I thought it would be fun to share some memorable moments from my time on the EF team…

Best release

EF4.1 added the DbContext API and Code First and was our first release as a NuGet package. This is the work I am most proud to have been involved in. It was also the most fun to work on.

Worst marketing decision

I think we may have gotten a little long winded with the name of our ADO.NET Entity Framework June 2011 Community Technology Preview release. Fortunately, Scott Hanselman later redeemed our proclivity for long release names by coining the Entity Framework Magic Unicorn Edition term. Unicorns have been a theme for EF ever since. Including this fun wallpaper, our @efmagicunicorns Twitter handle, and the ASCII art unicorn that Brice Lambson created for our EF Core command line tools.

ASCII-art-unicorn

Then there is the name Code First. I think the reasoning behind the name was that it paired well with Model First and Database First… which makes no sense since Code First supports both the Model First and Database First workflow, but using a code-based model rather than xml. I have spent many characters in blog posts and GitHub issues correcting the understandable confusion.

Most random moment

After a few weeks on vacation in Australia, I got back to find my office full of inflatable unicorns. This was 6 years ago, but there are still a handful of the unicorns proudly on display in our office today.

Unicorns

Closest to getting fired

When we worked on Migrations in EF4.3, we were asked to investigate using the schema diffing engine of an existing product to detect changes in the EF model. The product in question uses a fundamentally different workflow for schema changes, and it just wasn’t a good fit. Upon reporting this, it turns out we misinterpreted being asked to “investigate using the engine” as a suggestion, and were told that we had to use it. After pushing back for a while, to no avail, we decided we were pretty confident we were right… so we went dark for a couple of weeks while we implemented our own differ. Fortunately, shortly afterward our team transplanted from SQL Server to the ASP.NET organization, and we got new managers.

Most immature moment

In my early days on the team, there were some less than mature moments. When Diego Vega was on vacation, we filled his office up with random furniture and made a second hand furniture store sign for his door.

There was also the time we used a role of tape to try and prevent David Dewinter from leaving his office. There is a video somewhere of him diving thru the tape, onto a futon cushion we pulled into the hallway.

DavidTape

Most influential superior

The meetings our team had with Scott Guthrie, while designing the DbContext API and Code First, left a big impression on me. Microsoft, like any company, has its own set of unspoken norms around how senior folks interact with others. Scott was a long way up from me, but I remember him being approachable, encouraging, and collaborative – even when he was pushing back on some of our thinking. I particularly remember one meeting, where we were presenting some sketch code for what using DbContext would look like. At one point Scott knelt on the floor next to me and played around with the code on my laptop as he made suggestions. His humility left an impression, and is something I have always wanted to emulate.

Most memorable customer interaction

This would have to be the GitHub feature request for an ESSENT database provider in EF Core. “iOS hipsters”, “sadomasochistic perversion”, “a homeless miserable at a aristocracy banquet”, and “sexual minority in a modern developer environment” were among the phrases used in some passionate customer feedback. I have never spent so long pondering, writing, re-writing, and editing responses before posting them.

There was also the recent reddit thread where I was called smug jackass. I really hope I was just misunderstood… I generally try pretty hard not to be a smug jackass.

If I could pull out a soap box for a moment… there seems to be a trend of interactions becoming more hostile and less personal. I see this online, within meeting rooms at work, and in social conversations outside of work. We seem to be getting more polarized, and less nuanced and compassionate in how talk about our differences. I try to have a thick skin, but it gets to me sometimes, and my intersection of race/orientation/gender/religion/etc. put me in one of the most privileged groups around, where it should be easy to shrug things off. It is all too easy to be sucked into it, but the world needs people that remind us we are all human and worthy of respect… can we agree to be those people, and lead by example. How we talk to each other in our professional lives, both online and in person, matters.