To Gretchen: recruiting successfully isn't only up to recruiters. The best recruiting department in the world can't make people want to work at a company that's moribund, that can't figure out how to ship a compelling upgrade to their flagship OS, or update their flagship database server more than once every five years, that has added tens of thousands of technical workers who aren't adding any dollars to the bottom line, and that constantly annoys twenty year veterans by playing Furniture Police games over what office furniture they are and aren't allowed to have. Summer interns at Fog Creek have better chairs, monitors, and computers than the most senior Microsoft programmers.
Recruiting has to be done at the Bill and Steve level, not at the Gretchen level. No matter how good a recruiter you are, you can't compensate for working at a company that people don't want to work for; you can't compensate for being the target of eight years of fear and loathing from the slashdot community, which very closely overlaps the people you're trying to recruit, and you can't compensate for the fact that a company with a market cap of $272 billion just ain't going to see their stock price go up. MSFT can grow by an entire Google every year and still see less than 7% growth in earnings. You can be the best recruiter in the world and the talent landscape is not going to look very inviting if the executives at your company have spent the last years focusing on cutting benefits, cutting off oxygen supplies, and cutting features from Longhorn.
Network Load Balancing Works
For the first time ever I was able to install today's round of Microsoft patches on our web servers without bringing the sites down at all. I'm very happy about this, since this was the main point of upgrading the web farm.
We have two web servers, web1.fogcreek.com and web2.fogcreek.com, each with their own IP address, but using a feature built into Windows 2003 called Network Load Balancing, they both share the web site load using a third IP address, which I've named webnlb.fogcreek.com. Whenever a request comes in on that shared IP address, it is distributed to one of the web servers at random. If requests come in from the same class C address range, those requests will prefer to go to the same web server that previously served that address range. So for the most part the same user will always go to the same physical machine, if possible, so stateful web applications still work even if the state is maintained on one computer.
I actually like the NLB system a bit more than using a dedicated hardware load balancer. Here's why: there's no single point of failure. If you have a hardware load balancer and that needs to be updated or rebooted or if it fails, you're off the air. Whereas Windows NLB is all-software and each server in the cluster is a peer, so any server can die and the rest of the system stays up.
When I needed to install today's Windows updates, here's what I did:
As far as I can tell nobody should have seen a single hiccup in the sites served from the new web farm.
You’re reading Joel on Software, stuffed with years and years of completely raving mad articles about software development, managing software teams, designing user interfaces, running successful software companies, and rubber duckies.
I’m Joel Spolsky, co-founder of Fog Creek Software, a New York company that proves that you can treat programmers well and still be highly profitable. Programmers get private offices, free lunch, and work 40 hours a week. Customers only pay for software if they’re delighted. We make Trello, insanely simple project management, FogBugz, an enlightened bug tracker designed to help great teams develop brilliant software, and Kiln, which simplifies source control. I’m also the co-founder and CEO of Stack Exchange. More about me.