New Challenges

From C# Builder to C# User...

Dateline: Redmond, Building 41


Eric Gunnerson called me early this morning, asking me to come by to talk with him. When pressed, he would only reveal that he had news to impart that would “Rock the very foundations of society... Or be a good filler piece. Definitely one of those”.


So, I grabbed my notebook and headed over, wondering what the morning would yield. Eric is the noted author of “Bad Roomba!”, “Hangin’ with Generics”, and the critically acclaimed “Tantric Snacking”, so I expected something big.


Me: So what’s this important news?

Eric: Well, the news is that I’ve decided to leave the C# team to join the Windows Movie Maker team as a developer.


Me: What does that mean?

Eric: Developer? It’s someone who writes software. Are you new here?


Me: No, what does your leaving mean?

Eric: Well, first of all, it means that instead of showing up at building 41 every morning, I’m going to be showing up at building 50 instead. At least for the first month or so – I expect that after that, I’ll occaisionally find myself in the building 41 lobby, feeling very confused.


Second, it means that instead of working to help further the C# language, I’ll be using the C# language to help build a really cool app on top of Avalon and Longhorn.


Third, it means that some of the things you currently see me doing you’ll soon see other C# team members doing.


Oh, and it probably means that those of you who meet directly with the C# team will be subjected to fewer bad puns, though I obviously can’t make any promises.


Me: Why are you leaving?

Eric: To put it simply, it was time to move on to new opportunities, explore new vistas, climb every mountain, ford every stream... Where was I? Oh, that’s right...


Every year I spend some time looking at what I’m doing (both inside and outside of work), and evaluate what I want to do for the next year. This year, when I did that, I realized something.


I wasn’t enjoying life enough. I was going to say, “I wasn’t having enough fun”, but that sounds too frivolous. I was doing too many things that I wasn’t excited about doing. And I wasn’t spending enough time with my family, and even when I was with them, I wasn’t engaged.


So, I stepped back and looked at what was wrong, and what I realized was that I had lost passion for my job. I’ve always felt that you spend too much time at work to spend it doing something you don’t at least like, and preferably love.


My attitude towards my job had bled over to other parts of my life. I hadn’t coded for fun in a couple of months, nor had I launched any rockets, played with microcontrollers, gotten any house projects done, or experimented much in the kitchen.


So, what did I want to be when I grew up? That was the question.


I considered a number of different options. Could I be a full-time author? What about a trainer? What about getting into the construction business? Or going back to the QA side at Microsoft?


I mulled these over for a few days, but my thoughts always came back to code. In the years before Microsoft, I wrote a lot of code, and I miss that feeling of immersion when you realize that 4 hours have passed without you really noticing. It’s a state of being as much as a state of thinking.  There’s an interesting parallel to long-distance cycling, as I can reach a similar state there. Or, strangely, finish carpentry.


In the Microsoft world, “code” == “dev”, so started to explore dev positions.


Me: (starts) huh? Sorry, I think I dozed off for a second there. Umm... so why the Movie Maker team?

Eric: I looked at a number of different openings. Unfortunately, the C# team and most of Visual Studio is still written in unmanaged code, so the positions there tend to be COM and C++ oriented. I’ve done a fair bit of C++, but if you’re going to move, why not find something you really want to do? No offense to COM programmers, but “ick”.


I also looked at the teams that write frameworks, but decided it would be more interesting to work on an end-user application.


I did several informational interviews, which are informal meetings between a manager and somebody who is interested in that team. It’s how both parties figure out whether it makes sense to spend the time on an interview loop. Why is it a “loop”, anyway? It’s not like you talk to the same person more than once...


The Movie Maker team is doing some really cool stuff, and I’ve had a soft spot for graphics since doing so meant you wrote your own graphics library for a ReGIS terminal and then shot movies one frame at a time. By yourself. In a dark terminal room. On Saturday night. Plus, it’s C# code, working with all the cool Avalon stuff, and it’s a small team. Oh, and I used to work with one of the devs on the team, way back in my VC++ days.


I’m really excited about the team and where they’re (we’re) going.


Me: Coming at this juncture, how do you think your departure affects the C# team’s chances of winning the pennant?


Eric: Well, it obviously makes it harder for them to contend for the Division Championships, but I believe in this team, and I’m confident that they’ll find a way to continue their winning ways. I don’t think it’s going too far to say that “one person does not make a team”.


Me: Will you still be involved in the community? Will customers still see you at conferences?

Eric: I’ll still be writing my blog, though over time I expect it to morph from a blog that has a small amount of useful content about C# language design to one that has a small amount of useful content about using the C# language and writing for Avalon and Longhorn. I’m certainly going to continue providing valuable information, such as useful gift giving tips (link).


For conferences and other events, I don’t really know the answer to that. Perhaps. I hope so.


Me: When will you update your more-than-a-little-out-of-date book on the C# language?

Eric: You mean my C# book from Apress, still available for the ridiculously low price of $34.95? No comment.


Me: Tell me a funny C# story

Eric: Okay. Two stories.


The first one is a language design story, and I’m not really sure I can do it justice, but I’ll try. When we were working on the numeric types, the question arose around naming the signed numeric types. What would name the signed and unsigned byte types? We had int/uint, long/ulong, etc. We were discussing sbyte, and not terribly happy about it, when I pointed out that we already had precedence for doing “s byte”, with the “s hort” type. Then Scott suggested we abandon the current system for a different one, using “short”, “tall”, “grande”, and “venti”.


Things deteriorated rapidly after that.


Second story. Way back when the compiler was first coming online, I got one of the early drops, typed in “Hello world” (or some suitable variant), and went to compile it, but there was something wrong with the compiler, because I just got the command prompt back.


I went and asked Peter Golde for help, and he came into my office and said, “did you do a directory?”. And there is was, Hello.exe, just sitting there. I’d never run into a compiler that ran so fast that you couldn’t tell that it had actually done anything.


Me: What exactly are you going to be doing in your new team?

Eric: Initially, I’ll be working on the small “v” of “Movie”, but I hope to move up to the “i” after a few months, and perhaps, if things work out, someday I'll get to work on one of the Ms...


Movie maker is a fairly small team, so I’ll be working on different things – UI, transitions between clips, and likely writing a few wrappers around some unmanaged code.


Me: When are you leaving?

Eric: Over the next few weeks, I’ll be transitioning and vacationing. My last day in the C# team is 9/3, and my first full day in the Movie Maker team is 9/13.