A very long telecommute - Brian
As some of you know I work from home in Granada, Spain, for Microsoft as a software developer on the Windows team. Prior to moving to Granada my wife and I lived in Seattle, Washington and I physically commuted to the Microsoft offices in Redmond. I can’t say I miss my daily hour and a half to 2 hour dose of Seattle to Redmond 520 traffic but I do enjoy seeing what I’m missing once in a while.
People often ask how this works so I thought I’d explain how I do my job. Briefly my job is to develop a part of the next version of Windows. A few things make my telecommute possible. None of these are unique to Microsoft, perhaps you’ll find some tips in here you can use to figure out how you could work from home (no matter how far from the office that is) and convince your employer that it will actually work.
Good internet access
We have the fastest internet connection I could get in our neighborhood, which turned out to be 10mb ADSL. Considering our neighborhood is at least 1500 years old this seems pretty good. The bandwidth is sufficient for me to be able to maintain an up-to-date copy of the source code for Windows on my home computer, which I use to create a new test version of Windows every day or two. Typically this means transferring about 2gb of data each day.
I connect to the internal Microsoft network using the normal buzzwords – a VPN that requires two factor authentication and IPSEC.
Good internet access these days also means really cheap international phone calls via VOIP, I use the phone (in addition to email) to communicate with my teammates.
Fast and inexpensive PC’s
Windows is not a small software project (according to these guys there are 50 million lines of code in Windows), to be able to compile the source code requires either a lot of time or a very fast PC. Most of my teammates in Redmond only compile the part of the project they work on and get a copy of the rest of it from one of our file servers; even with a good internet connection that isn’t feasible for me. A complete copy of Windows suitable for development is about 25gb of files – this includes files to make debugging easier in addition to other files to help with testing. In short a huge amount of data to try to download over an ADSL connection. I compile my own copy of Windows instead, using a fast but surprising inexpensive PC.
For the curious, I currently use a Dell Dimension 9200, with an Intel Core 2 Quad cpu, 4gb of memory and 4 10krpm Raptor drives, 3 of these are arranged as a stripe set (aka RAID 0) to make the disks perform even faster. The whole setup cost about $1500. From start to finish it takes just under 12 hours for me to produce a new installable version of Windows.
I also have PC’s at home that I use to test my new versions of Windows.
Remote controlled PC’s
I have a set of PC’s in a datacenter in Redmond, they allow me to share data with my teammates and minimize the data I need to transfer over the network – I don’t want to send 25gb of data to Redmond any more than I want to download it. On any given day the size of the changes to the source code I have are on the order of 100kb; I transfer the small source changes and compile them in Redmond when I need to share my changes with other team members.
I access my machines remotely using Terminal Services for Windows for most of my work. I use some of the machines for testing new versions of Windows, so I install new versions of Windows on PC’s in Redmond; this is tricky because installing a new version of Windows at times involves needing to interact with the BIOS of the PC. I use an IP KVM which allows me to control the PC even when it is in BIOS. And finally, sometimes things go really wrong (especially when I’m testing new changes) and the PC hangs or blue-screens. I use a remote controlled power strip so that I can turn the PC on and off remotely to reset it.
There is also a lab staff that I can call upon if things are really messed up and I need someone to physically do something to one of my PC’s. That is rare, however I have had one machine catch on fire before and I wasn’t able to deal with that one myself from Spain.
Good management
My manager and his manager (and his manager and his manager too) and I have all worked together for a long time; we have a solid foundation of trust and expectations and how to communicate those to each other when they are (or aren’t) being met. Technology aside, I have found this to be essential.
I visit the offices in Redmond two times a year for a week or two at a time, this helps tremendously in terms of keeping my network of colleagues strong and allows me to meet new team members too.
Hacked »