Uh, I'm a programmer, and I'm not much impressed with steam. In fact, it's just the sort of app one could easily code in visual basic.
What does steam do that's so great?
Steam has some encryption stuff.
It has a list of games.
It can launch said games.
It can download games that it doesn't have yet with trickling downloads.
It can display simple gif ads.
It can connect to a central server, check that your key is valid, and then give you a list of all servers currently connected.
This is SIMPLE. It is a few weeks worth of work.
It is much harder to code the networking code for a game. That has to handle packet loss, high pings, and low bandwidth.
Steam on the other hand uses TCP, does not need to worry about lost packets, and high pings have no effect on it.
Wheoever wrote steam did not need to worry about converting floating point vlaues into fixed point bytes and ints to save bandwidth, they didn't need to worry about which data should be run via simulation and which should be manually controlled by the server, and he sure as hell didn't have to deal with trying to make a server handle 16 players simultaneously over a modem without getting bogged down by bandwidth usage.