Tuesday, January 09, 2007

Best Companies to Work for

Every year Fortune Magazine comes out with a list of the 100 best companies to work for. I've worked at a couple of companies that have made this list in the past, Sun Microsystems & EDS (neither of who have made the list recently). And I would have to agree that Sun does not belong on that list anymore. The cost of benefits keeps increasing for the employer and the job satisfaction I've had has steadily decreased lately. Sun does have a great telecommuting program, although it may hurt many groups more than it benefits them. Well this year with my changing jobs to go work for Microsoft (# 50 on this years list), I am once again part of a company that made the list. I'm not sure that it matters a whole lot, but there is some mental happiness in the fact that someone else thinks that where I work is a good place to work. In the stats for Microsoft, they are given high accolades for their top notch benefits, especially paying 100% of health care benefits (This is a big deal as I have a new baby). I also found it interesting that they hired 5203 people last year, and received 947,250 applications for employment, so only 0.5% of applicants get a job there. That apparently does not include people, like myself, who did not apply for a job, but were recruited directly by Microsoft. Anyhow, nothing too interesting, but it is somewhat satisfying to be somewhere where other people want to be as well.

Friday, January 05, 2007

New Job Part 2

So another common question people ask me is how I got a job at Microsoft. This is a completely valid question as I have no experience with any of their products. I program in Java and J2EE, I use Eclipse and NetBeans as my dev environment, I run Linux primarily and also Solaris as my operating systems, I use Thunderbird and Firefox, I contribute to opensource projects, I have an Ipod and a Wii (not really), and I've been getting anti-Microsoft propoganda from Scott McNealy for the last 10 years of my career. So why then am I going to work at Microsoft and why then would Microsoft be at all interested in hiring me in the first place?

I'll start with why I took this job. For me one of the most important things in my job, the thing that I get a lot of job satisfaction from, is the ability to be constantly learning. I also really enjoy being challenged to the point where I feel "in over my head". This new job provides me with huge opportunities on both of these fronts. I will be learning a new product as well as a complete new technology stack. And the challenges that are ahead of me seem certain to stretch me in a whole host of new directions. In addition to this, I really just needed a change. My job at Sun was looking like more of the same thing that we have been doing, with little to no clear direction, and no clear idea of the business value that our work would provide as well as not having much more than a plan 2 months out. The group I am going to may not be perfect but they seem to understand their value and their long term plans for what is being developed. That excites me a lot about the potential. I was offered another job internally at Sun, but just felt like it was not really a change as I would be working on so many of the things that I have been in the past. Much of what I do at Sun revolves around service based applications, whereas at Microsoft I will be getting back into product development. This is a whole and complete change for me.

But why would Microsoft be interested in someone who doesn't know their technology at all? Well that was exactly my question to everyone I interviewed with, starting with the recruiter who found my resume on some job board (Dice or LinkedIn I think, I never did apply to Microsoft directly). The answer I kept getting back is that they were very interested in my experience architecting and designing platform layer frameworks that were highly reusable, and also they were interested in my strong background in architecture as it pertained to building systemic qualities into the products. They then said that the technology was easy to learn and a good designer/architect would pick that up quickly. I guess that was a good enough answer for me, because I enjoy the architecture and design pieces of my job the most, and actually think I am relatively good at them. I also agree that picking up a new programming language and some underlying technology is relatively easy. Especially in going from Java to C# which are pretty similar languages.

All in all, I think that this job is a good fit for me. I spent a lot of time interviewing over the past year looking for the perfect job. I turned a number of things down because they just didn't seem to be a fit for where I wanted to take my career. So although this is a completely new world to me, I feel like it is probably the best possible fit for me at this point in my career and offers me the highest potential growth personally and professionally.

New Job

So the most common question I get from my co-workers and friends when I tell them I have quit Sun Microsystems and am moving to Seattle to take a job with Microsoft, is "what were you thinking?" Besides that everyone wants to know what I will be doing in my new job, so I thought I'd address that here once and for all. First, I am not 100% clear on the product I will be working on as it is a relatively new product that is still being defined to some extent. But I have accepted a job as a Sr. Technical Program Manager in the Connected Systems Group, which, as I understand it, is a part of the Server and Tools division at Microsoft.

The program manager position [link1][link2] at Microsoft is one of three technical positions (SDE and SDET are the other two). I will be responsible for the vision, architecture, design, requirements, customer interaction, and evangelism of the product that we are building out. It involves coordinating across many teams at Microsoft, working with customers to get feedback and push the product, and working on developing the detailed technical direction and driving the implementation of the products. This type of position was really appealing to me as it is similar to what I have been doing at Sun Microsystems as a Product Architect, but it gives me a lot more responsibility and a lot more latitude in how I do my work. In addition I get to work much more closely with customers, something that I was "sheltered" from at Sun. I still get to remain as an individual contributor and still get to be very hands on with the technical details of things, but won't be writing a lot of code for the product, although I will get to prototype stuff. I get to work with the management team, the engineering teams, the test teams, the architects, and the project managers. I get to work with teams outside of my product group and outside of the division, both engineering groups and non-engineering groups.

While it seems pretty clear what the PM role is, I have less of an idea what the product we are actually developing is.... From what I gathered during my interviews, the product that I will be responsible for is aiming to provide a framework that sits on top of the different infrastructure products that Microsoft has (BizTalk, WWF, WCF, etc.). A large part of this framework allows developers to easily create applications on top of these products using a declarative language similar to XUL from Mozilla. It sounds pretty interesting. The immediate goal of the product is to release internally to the other product groups within Microsoft. Many of the applications that the infrastrucutre products will provide to their users would likely be built with this, there are some things within the Office suite that would utilize this framework, and possibly even some things in the operating systems that would use it as well. Once the framework has been integrated into internal products and we've gotten it really stable and strong, we will be releasing it as a public api, possibly as part of the .Net framework. This is where some of the external customer interaction of the position comes in. So that is about all I know about it. I do know that it sounds really interesting though and has a lot of potential. The initial product vision is something that came out of Microsoft Research and a couple of the lead engineers on the project moved into this group from the Research group to continue working on this product.

So there it is, what I know about what I will be doing at Microsoft.

Robotics and Software

There is an interesting article in this month's Scientific American about robots, by Bill Gates. It mostly talks about the need to have some standard, underlying frameworks and common building blocks in the software space for robotics to really take off. Of course Microsoft is getting into this in a big way. One interesting idea that was in the article is the notion of using the robot as only a mechanism for remote sensory and then using networking technologies to send the sensory input back to a more powerful computer for processing (Gates says your desktop, I'm sure it could likely be a server farm as well). Sounds like Gates may finally be coming aroung to McNealy's mantra of "the network is the computer". Anyway, MS has put out a robotics software toolkit called Microsoft Robotics Studio that looks pretty interesting. It apparently works with Lego Mindstorms too, so it should be accessible to the hobbyist like myself. The coolest thing about this studio is that it has a full virtual testing environment built in so you don't actually even need a hardware robot to build something, you write your robotics code and then test it out in the virtual environment. If you have the hardware you could then upload your program to it.

Wednesday, January 03, 2007

Well I gave my resignation today....




Dear Dave:

After serious consideration, I have made the decision to resign my position as Staff Engineer with Sun Microsystems. My decision is final and I have accepted employment with a new organization.

I have enjoyed working on the Service Tags project under your guidance and look back on this experience with favorable memories. My new opportunity offers me a combination of challenge, dynamic growth, improved compensation, and geographic location that fits perfectly into my career plans for the future.

My last date of employment will be Jan. 19, 2007. Rest assured that I intend to close out my service with SysNet with the same vigor and energy that I have shown thus far.

Thank you for all of the courtesies extended to me during my employment.

Sincerely,

Mike Davis