When B first started on the project he was just doing a little R&D. Later on when everyone was given specific tasks, he ended up with the job of trying to get multiplayer stuff set up. This included talking to the game DBs to set up game information for game creation and then some firewall punching with a 3rd party to get the clients to join games properly. He did a lot of work on this and almost got it all working. With two weeks left before the deadline, he still couldn't figure out what was wrong. So, management ended up turning around and giving his pet project to me. All I was asked was how much I knew about network programming, TCP, and firewall punching. The answer was, "not much". I mean, I did some network programming when I took Distributed in school, but other than that I have no idea. Anyway, after a week of trying to fully understand the problem, it took a day to fix the bug. As usual, it was one of those one liners that make everything work. All I can say is, he's been pretty depressed ever since they took his pet project away from him and replaced it with only part of my job -- a couple of UI screens for the game.
On the one hand I understand the frustration behind things not getting done and thus handing it over to somebody else who they *hope* can do it. Fortunately for them, I pulled through again. Yay me! However, they really could have handled the situation a lot better. First of all, when they took a small part of my job and gave me his entire job, they probably shouldn't have brought us both in together and told us both at the same time. I mean, you're kind of making him lose face in front of everyone, including me. You're not really helping his self-esteem any. If anything, they really should have, at the very least, spoken to us separately. Or even better, I'd say they should have made us do some pair programming. Given I didn't really know what his code did, I pretty much ate up a bunch of time getting him to point things out anyway.
Ah well, what can I say? I feel bad for B. It does however feel like he's not pulling his weight at the moment and that does put weight on the rest of us. I still, however, support him whenever somebody tries to say that he didn't get the networking stuff done. After all, he put it all together and I threw in one line to make it work. Granted, the one liner only made everything work with static ports. I went ahead and had the game bind to a random port (obviously the better thing to do). I'll give him the benefit of the doubt though and assume he would have put in the random port binding after he got the static port binding working.
In other news, we've finally decided to put together some standard coding practices (after another coworker left and we had to restructure what he did so that it was "human readable") as well as a code review structure. We've all got our very own primary and secondary code buddies who should be reviewing any code that we write before it gets checked in. We've also finally decided to make the move to subversion. Actually, what I mean to say is that we've finally got a subversion server up and running on Windows and we're going to then migrate our project to the server. After that, I just need to make sure I can access the repository from Linux and then we're all set. I can't believe we're finally going to use a half decent source control system. The only downside is that subversion tools in Windows really aren't all that great. I can't figure out how to get merge to work properly with Tortoise SVN. On the other hand, the client is a bit out of date so maybe I should just update that. In any case, the command line svn tools work (and that's what I'm used to anyway) so it isn't that big a deal.
And finally, ugh, I have to get to work by 8:30 tomorrow. That's crazy. I never get in that early. Hate. Who came up with the idea of having 8:30 meetings for knowledge transfer?! Seriously. Whose brain is working that early in the morning? Sigh.