The Nintendo Wifi system is not terribly effective. I had an elaborate introduction involving Web 2.0 to explain why this was the case, but then I realized that I would be better off saving that material for another time and getting to the problem more directly. Basically, psu writes at Tea Leaves that the problem of Friend Codes is not going to be solved any time soon, because Nintendo doesn't care about investing in the infrastructure it would take to catch up to services like XBox Live.
And psu has a valid point--the Friend Code system, which requires players to put in a different 12-16 digit number in each game in order to play multiplayer against a specific person, would require the company to put into place a lot of servers and centralized record-keeping services. It is nice to have this information, because people can mess around with it or use it to rank themselves. But it's also true that the Friend codes are not the end of the world, and they add a little bit of security, which can be helpful in a kid-friendly environment.
With that said, and admitting full well that this is not at all what psu meant to address, this is not the main reason that people dislike Nintendo's online service. It's not the reason that they're upset when it was carried over from the DS to the Wii. The reason that they're upset is because the service fails at the basic tasks of creating a good multiplayer experience, even without the bells and whistles of stat tracking and online ladders.
I've written before about how Nintendo has half-baked its Internet offerings online. They're unbalanced and easily exploited, and as a result I don't even bother to go online with Mario Kart or Metroid any more. But even if we set the games themselves aside, the matching service simply doesn't work effectively.
Say you're relatively new to gaming, and you want to play something online. So you load up a NiWiFi game, and you tap on the relevant icons. At this point, you wait. And you wait. And you wait some more. The four slots onscreen for other players--four players seems to be the maximum allowed, for some unexplained reason--will blink on, and then sometimes they'll blink back off without explanation. Eventually, the game will start, and then two minutes into the match at least two of the other players will disconnect when it becomes clear that they're not winning.
This is not a satisfactory process. It begins badly, it continues badly, and it ends badly. At no point is the player given any real information on what the system is doing, or why these players are being chosen. Moreover, once the match has been created, the game operates client-to-client, which opens up a whole new set of cheats and exploits, and lowers the ability for Nintendo to intervene with patches and quality control. It is not a coincidence that when Internet gaming really hit, it almost always used a client-server relationship, and it continues to do so. Servers create virtual spaces, gain their own communities and continuities, and give administrators the ability to slow down or kick cheaters off. Without those assets, we get to find out exactly how annoying most people online actually are.
Instead, Nintendo has basically chosen to go the cheapest route as possible, meaning that they rent servers from Gamespy for this crippled matching and pay for nothing else. I understand the impulse, but I think it's hard to claim that even the uninitiated are satisfied with this kind of system. Even casual gamers would like to see the people they're playing before they play them, and would like to spend as little time as possible waiting to connect. And it would be nice to have more options than just "random match" or "friends match," so that players can have some control over their experience. As it is, playing DS (and now Wii) games online is an opaque, frustrating hassle. Friend Codes are just an easily-grasped example of how messed up the system is.