Thursday, April 20, 2006

more about work at microsoft

this article about working at microsoft was a top story on slashdot yesterday. it was written by Michael Brundage, who works as a dev for the Xbox team. in general, I agree with Brundage. however, I think that he should acknowledge that his experience is atypical - even within the company itself.

note: I also posted about working at ms last year.

Brundage divided his article into a number of sections and assigned each a rank of good, bad or in-between.

Focus (good)
in this section, Brundage talks about the benefits of working as a software engineer at a software company. I don't think that Brundage is offering much of a complement here. I would expect people at a software company to be more interested in software than employees of some other industry. however, I would also add that - unlike some 'tech' companies - ms is a 'real' tech company. at ms, they practice what they preach. pretty much everything at ms has been put online as uses up-to-date technology. another example is that ms also forces beta versions on its employees. before a new version of windows or office ships, ten of thousands of ms employees have been running the software for months.

Unreality (in-between)
I have to agree with Brundage on this point: "Some employees forget that most of the world doesn't have broadband wireless networking, high-end consumer electronics, luxury vehicles, and enough money that they don't need to live on a budget. Some employees spend so much time using Microsoft products, that they forget about the competition and/or lose touch with typical customers' needs." one common example that I would always throw out during ms conversations was south africa (where I was born and most of my family lives); in SA, broadband is rare. ms needs to pay more attention to customers. a bug fix or a feature tweak is often more important to a customer than a new feature, but few devs at ms want to work on existing code. the 'code-on-code' mindset is horrible for the customer.

Personal Freedom (good)
yes, it's true that ms offers its software devs a truckload of freedom and benefits, but this isn't the case for a large portion of ms employees. many ms people have to work set hours, don't get their own office and have to account for their time (sometimes down to 15-min intervals). people on the redmond campus don't generally appreciate how lucky they are. for example, when I first moved to the redmond campus, they were still offering friday massage sessions. that benefit (and many others) have gone away, but the inequality between redmond/red west and other campuses is still obvious.

Company Leadership (good)
I think that this is one of the points where there is a large gap between the experience of the microsoft employees and those who rely upon news and rumours for their opinions. I also have had positive experiences with ms execs, but this isn't the general impression that makes its way outside of the company. despite his extensive work with the bill and melinda gates foundation, gates still raises the ire of a large portion of people - especially the zealots of the 'anything-but-microsoft' religion. ballmer doesn't fare much better. how many times will the media report that he threw a chair and vowed to 'kill google.' the leadership at ms is carrying a lot of baggage and it may be best to let some new blood take over.

Managers (bad)
"Microsoft also suffers from a phenomenon that I've seen at other companies. I describe this as the "personality cult," wherein one mid-level manager accumulates a handful of loyal "fans" and moves with them from project to project." I don't feel that the criticism in this section is unique to ms. everywhere I've worked, I've come across issues with managers. the issue is that there really isn't a system of '360 degree performance.' lower-ranking employees are powerless to do anything about a crappy manager. there is a highly-structured performance review at ms, but as Brundage writes, it only works for individual contributions - not management skills. it's almost as if there needs to be a 'manager audit' where someone completely removed from the team (read: its politics) goes around and assesses the performance of the managers. managers who score poorly should be demoted.

Source Code (good)
this is sort of a silly point. at ms, you get access to what you need. since Brundage has worked on various teams, he has had access to various source trees. if he wasn't a dev, or a 'CPR' support engineer, he wouldn't have access.

Benefits/Compensation (in-between)
I agree with Brundage on this point, new employees are probably enjoying the above-average benefits at ms. however, those who have been around for a few years have seen their benefits steadily decrease.

Work/Life Balance (bad)
I agree that work/life balance is an issue at ms and it was one of the points in my fist post about working at ms. before I started at ms, I expected there to be a huge setup for company sports teams and the like - after all, they do have their own fields. but this is not the case at all. people work long hours and many people take pride in the fact that they don't do anything else.

Microsoft's (sic) Not Evil (good)
I agree with what Brundage is saying here. people outside the company don't appreciate that the microsoft of today is usually ethical. when mistakes are made, it's usually because of the same reason as any other company: someone was incompetent. however, Brundage should acknowledge that microsoft's issues with this perception stem from its own actions. ms has been convicted of various infractions and therefore is partly to blame for the ill will that still exists.

having said that, ms is a 300 pound gorilla (to use a common ms expression) and the gorilla likes to throw its weight around. ms may not be breaking the law anymore, but it's obvious that it can have its way with many companies. but one could argue that this isn't evil, it's business and any other company would do the same thing.

Influence (good)
I understand what Brundage is saying here, and I have commented about it in the past. but, again, Brundage only has this viewpoint because he is amongst a small group of people at ms that have the opportunity to work on cutting edge stuff. the vast majority of employees at ms don't have the same experience.

Sunday, April 09, 2006

pragmatic augmented reality book

after having completed my third Halo book (the black art of Halo mods for Sams), I've moved onto my next project. it's a book called Augmented Reality: A Practical Guide for the pragmatic programmers. it's a cool project and I'm excited to be working with the pragmatic folks --- if you're not familiar with them, they are responsible for the highly respected book the pragmatic programmer.

Update: the code download for the book is available on the Pragmatic book page


- draft cover for Augmented Reality @ Home (now... Augmented Reality: A Practical Guide)

Augmented Reality is the process of adding virtual objects to the real world. so unlike 'virtual reality' most of what you see is usually real.

in our book, we'll be explaining (and providing) all of the source code for an Augmented Reality "Tank Wars" game (see screenshots below). the book's download includes samples for Windows, Linux and MacOS. the applications are written in C/C++ and C#.


- ARTag Tank Wars demo (click for full size image)


- ARTag Tank Wars demo (click for full size image)

here's a quick example that I just shot on my dining room table. the piece of paper with the augmented reality tags is real and the 3D objects (e.g., the fish and car) are artificial. in order to see the virtual portion, you obviously must be looking at the scene through some sort of interface that allows the augmentation. for example, a computer monitor or a head-mounted display.


- click for full size image

and here's a 3D fish coming out of my 1939 Remington Model 5...


- click for full size image

for a better example, take a peek at this cool video of an augmented reality demonstration. you can also see ARTag videos on YouTube (search for "ARTag").

Update: I've added an ARTag FAQ post for all your ARTag questions.