Thursday, December 31, 2015

Retrospective for 2015: The year of Blogging, Mentoring and EdgeHTML

Almost a year ago, on January 3rd, I made a commitment to myself to start sharing my experiences in software, mentoring and self-improvement through gamification through my blog. You can review that first post to see how my year started!

It was a lofty set of goals at the time. I remember the desire to write a blog entry per week and starting out very strong. I remember the feeling of ending my vacation having just re-read Jane McGonigal's Reality is Broken and really wanting to change my work place through principles of gamification. Most importantly I remember how my mentees were super charging my insights into how to find and fix problems in your personal and work life.

To that end my year is going to be about Career, Blogging, Mentoring and other Random Stuff. Lets combine everything I learned to self-reflect and hopefully come up with a new improve strategy for the year to come. My first post in the New Year then will be about the year to come and this, my last post of the year, will be about what I've accomplished.

Blogging


I actually started the year with 3 blogs. Two where I hoped to be purely technical and share technical shorts. They were for HTML 5 gaming and a parallel to the Perl Blackbook I was calling the HTML 5 Black Book. However, everything I wanted to write about fit into my personal blog instead, Continuous Integration, the one you are reading here. While I did contribute an article or two to those others blogs, I don't consider them launched yet. I still like the concepts they represent and I hope to improve my contributions to those in the coming year.

For my primary blog, including this posting, I was able to push out 33 articles over the course of the year. Nothing tells the story like a graph so you can see the months where I did very well and the months where I feel short, even disappearing for some time. I'll talk a bit about those, because they become real opportunities for improvement in the new year.


First thing to note is that trend line. I lack consistency for sure and the trend line would be even worse if I hadn't pulled it together in May and then again in November/December. So what happened during those extended periods of time?

March and April both coincide with some major bug fixing work to get Windows 10 ready for general release. This relaxed for a bit in May as we were doing more planning work for the next Windows 10 Update Release which most people should have by now and mostly got pushed out in November.

Starting in late June through end of August, that was the major planning and coding milestones for the update release. If a feature wasn't done during that period, it probably didn't make it into the November update. Then September and October, bug fixing for that release.

Are you seeing the problem? I sure am. I can't chew bubble gum and walk at the same time. That's not quite true, I'm actually quite good at context switching and balancing things. But the reality of faster releases of Windows is that everyone needed to figure out HOW to do it. I think I have the right recipes figured out to fix this so we'll see how next year goes since we are likely to make this release cycle and cadence the norm.

We can also pivot by our topics or tags. I didn't start my blog tagging and I didn't go back and really tag everything properly, so there are some things underrepresented. However, the tags that I was hoping to see were Gamfication and Mentoring. While I did some of that through my blog, it doesn't show up in my tags as you'll see. Another great thing to fix!


What I did really well on was an area I wasn't even thinking about when I started the blog. I've been able to build an information channel for the IE and now Microsoft Edge product. A channel which is maybe a bit more raw than it should be, but so far so good. More importantly a channel which can help the developers gain a voice when talking to the community and customers about problems, features and directions for the EdgeHTML component and the Microsoft Edge browser. I'm pretty proud of that.

I've also gotten a chance to really show how we are building our script engine integration in the FastDOM posts. That has been a great series and it drills into the intricate details of JavaScript and how the "Host" part of the specification works, which is a place only Browser vendors tend to dabble.

Starting in August I've also been ramping up on how our telemetry works in EdgeHTML and telemetry and data gathering in general. No reason that all of these findings have to be specific to our uses cases. In these posts I've started to find vital connections between how the engineering system (data used to create the browser) is then used to build and validate the telemetry which is used to build and validate future features and finally used to build tests and perform security analysis. I'll certainly talk more about how this positive feedback systems works in the coming year.

A year ago blogging was something I had done in the past. I remembered it being fun, In fact I wrote somewhere between 330-370 articles on .NET features and performance on the old weblogs.asp.net system. That ended when I joined Microsoft in 2005. It took me then 10 years to regain my writing itch and its one of the most positive improvements I made this year!

Mentoring


I've already written this part of the retrospective as a break-out. That's how important mentoring is to me. It really does drive a lot of my more major initiatives. Even the blog writing was the outcome of some mentoring suggestions I had provided to others. I was trying to get them to use it as an outlet for improving communication, building a network and generally putting into writing their mastery of some subject.

When mentoring, be very careful recommending something you aren't currently doing. Next thing you know you'll be doing it. Its hard to sell advice you yourself are not taking. In my case I felt it was a great idea for others, but that I didn't have the time. Well, I found that time and it turned out great. That means one great passion, mentoring, led to the revival of a previous passion, blogging!

One story not in my mentoring article though, which deserves to be called out, is the mentoring I've been able to provide for my wife, Ning, who also worked at Microsoft until quite recently. It is through our daily conversations that I get to learn the differences between being a male vs a female in tech. I also get to learn how many things I take for granted or how many strategies I'm able to use which simply don't work for her. There is no reason they shouldn't work, but they don't. So I get to see first hand some of the imbalance and some of the gender bias that our industry holds.

But this is a positive story, about career mentoring, not a sad story about inequality. Over the course of several months I worked with her to help navigate her career at Microsoft, but at some point it became very clear that the glass ceiling for her was different than my own. Instead of looking purely internally we started to look externally, at other opportunities.

This is where I'm really on my a-game. When it comes to interviewing and programming problems, I find them more fun than stressful so we also spent quite a bit of time in coffee shops on weekends preparing and studying the various technologies that you get rusty on as a line programmer at a major company.

I won't go into the details, but this took a few months, since we both had day jobs, but at the end, she has now catapulted her career and is now happy as a Noogler (how long can I call her that?). I usually get a chance to congratulate at least one mentee per year on a career promotion, but I don't always get a chance to watch my wife overcome all opposition and adversity and claim the career she wants. I'm super proud of her and couldn't be happier.

Career


What about my own career? How do I feel about the "New Microsoft?" Am I good with my 10 years on the IE team or am I ready for a change? What does my team think of me? Well these are all very critical questions. Some are also very personal and if answered in a public forum might make some of my co-workers uncomfortable. This is my retrospective though, so I'll try to address what I can while still ensuring the comfort and privacy of the people I work with.

First, what do I think about the "New Microsoft?" Let me start by saying I've always viewed Microsoft as the largest, most capable software engineering machine on the planet. There is so much capability in the people I work with. You point them at hard problems and you get great solutions, on time and on budget. You DO have to throw them at the right hard problems and you DO have to avoid putting too much process in their way.

The "New Microsoft" is basically executing to change these two components of how the company does business. It is changing the problems and picking problems that are both business savvy, marketable, engaging to customers, etc... That means we have a customer for all of our great solutions rather than trying to make markets from thin air. We are also working very hard to get out of the way of the engineers and improve the engineering process.

I'm liking the "New Microsoft". I definitely like the stock price. I like even more that they need people like me to help execute the change and that they are engaging me to figure out how I want to work and then enabling me to work the way that I want. Its really increasing the velocity with which we can solve problems and I appreciate even more the renewed focus on problems that matter.

Microsoft is huge though so how am I feeling about the IE team and my 10 years on the same team? After working on the team long enough I stopped working for IE and I started working for the Web. A year ago I might not have been very comfortable saying that out loud. Now, with the new directions that Microsoft as a company is going, I'm completely comfortable saying that. I would be comfortable working at Mozilla or Google as well, as long as I'm moving the Web itself forward and there isn't a monopoly developing. A monopoly on the web, IMO, would be pretty damaging and I think we learned that from the early 2000's. We had to reinvent a lot of the same technologies over again because the IE 5-6 monopoly didn't create the right result.

Since the IE team is really focusing on interoperability and standards its quite aligned with my goals of moving the web forward and the team is very supportive of helping me do just that. I wouldn't take change off the table and there are some technologies that I'm really interested in such as VR but overall it would take a pretty convincing argument to make me move.

Does my team still want me around and what do they think of me? This is always a blind spot. I spend hours and hours helping my mentees determine this information by trying to provide objective, alternate viewpoints. They tell me what they think and then I ask them questions that hopefully allow them to change their viewpoints or be a little bit more accepting of how their team looks at them.

I've been on the team for a LOOOONG time and they are still giving me great reviews and great rewards. I think those speak for themselves. Sometimes my ideas are a bit too progressive and progressive ideas are scary. They are different from what you are used to and in the case of having to deliver on them, it might put your into an uncomfortable position where you don't know if you'll be able to succeed. My projects tend to succeed, they tend to get a lot of visibility and the people that get put on my projects also get rewarded well. Overall, I think team interactions are going great.

I can't currently find any major flaws in my career. If anything, I'd like to increase my impact, responsibility and accountability. As an IC or Individual Contributor at Microsoft, this part of the equation can be difficult. I don't command resources and I've exceeded the levels wherein I can accomplish everything myself. To this end having Microsoft be able to more directly acknowledge the role of a technical lead would be an excellent improvement. A technical lead is someone who does not manage people, but directs technical projects that have people working on them. At Microsoft we combine the lead/manager roles together and the technical lead is more informal. I know other companies have a different viewpoint and maintain technical leads. Overall I think technical leads just increase the number of simultaneous projects you can do as well as improve the agility of switching between different projects.

My next career jump is a challenging one at Microsoft. Just saying that probably gives it away for people familiar with the companies level systems. I'm ready for the challenge though and I have a lot of support. I've had a string of great bosses, but my current boss, Rico Mariani is truly exceptional. My direct team, the performance team (though we do much more as you can tell from all the random things I tweet about fixing), is fully of some of the strongest technical talent in the company, every person being a self-motivated bug fixing and feature producing machine.The broader team, Windows organization and the company as a whole is laser focused on the web as a platform for application development. I'm poised to make some great things happen in the coming year ;-)

Random Stuff


Let's start with my work accomplishments since those are now top of mind after thinking through the state of my career. This year was the year of Windows 10 and Windows 10 Update 1. I'm sure the code names have leaked by now so we called these things Threshold and Threshold 2. That brought to the world one of my major features, the EdgeHTML split. A brand new DLL without the compatibility burden of the legacy MSHTML which we would continue to service for business customers.

Along with this new DLL was a heightened focus on interoperability between Edge and the mobile web. People might say we were chasing the webkit web, but that isn't fair nor is it true. We were chasing mobile interoperability and site compat primarily. While doing so, we wound up finding corners of the web which had only been tested in iOS or Chrome for Android and so we had to come up with solutions and adapt. It was a major effort and we fix thousands of bugs (many of which were the sizes of features).

On my personal development, I was able to keep my interview skills fresh while helping my wife prepare for her new career adventures. A couple of rounds through LeetCode.com is a great bit of preparation if you haven't interviewed in a few years. Its also a great way to get fresh content for interviewing others. In 2014 I was able to do an interview training course for a group of employees that were let go in the layoffs and I was using LeetCode.com at that time as a source of inspiration. I went so far as to take an interview back in September and even got an offer!

I started the year on a tri-club and I'm sad to say I feel off the bike around May and didn't get back on. I also started running with a few co-workers and was doing well for about 3 months and then stopped due to a foot injury. This exercise thing is proving to be tough and is probably one of my low points for the year. There is a pretty strong link between exercise, stress and productivity and I'm ending this year feeling like I've given up a bit of comfort and productivity by not concentrating more on my exercise regime.

Well, if I don't wrap this up now it won't make it in this year (I'm using Seattle's New Year as a time frame even though I'm in Hawaii so I could technically claim 2 more hours). This should be enough reflection on the previous year for my next post in the New Year on what my next set of accomplishments should be. See you next year!

No comments:

Post a Comment