I have a problem. When presented with code that I don't believe is very good or well designed my natural reaction is to want to rewrite it. This is not always the best approach. Especially when there are deadlines/feelings involved.
Take, for example, my current job. The engine we are using has been developed in-house over the last few years and it does have some cool technology features that other people don't have yet. However, there are some systems that are just horribly complex and convoluted. Some systems were designed by people who had never worked on a video game before and had little experience. Some try to be overly clever or flexible and end up wasting tons of memory and cycles. Worst of all, some system barely do what they are supposed to do and making them do what our designers would like is no easy task. (In short, it looks like almost every other game engine I have worked with.)
Clearly, this is a case where rewriting these systems makes sense. Or does it?
I'm finding that my job is no longer about writing code. It is about figuring out what is possible, both technically and, more importantly, politically. Technical problems can be solved given enough time and the right people. But what if you don't have enough time? What if you have the right people, but they are busy doing other things and you are left with the wrong people? What if there are no people? How do you balance designer demand and production capability? When is it "good enough"?
That is the issue I am facing. In our recent milestone I signed myself up to rework our weapon system (which almost everyone agrees is overly complicated and doesn't allow for change) and our input system (which doesn't support all the features we want, such as multiple configs and binding multiple inputs.) Out of the last three weeks I have had about four days of actual time to work on it. My time has been spent in meetings and preparing for meetings and dealing with scheduling. (I can't help but smack myself for making such a rookie mistake of overestimating how much time I would actually have to work on these problems.) Since our deadline is next week I have had to report that my part is slipping because I just haven't had the time to work on it. I set out to rip out the current inventory and weapon system and I have managed to do that, just no time to actually put a new system in place.
Time is running out.
My manager reminded me of this today. For about half an hour. In his office. With the door closed.
There was no yelling or cursing. He just explained how nervous he was about my trying to rewrite systems. That our longer term milestones are not going to move and we have to hit them. We may not like the code, but we have to ship, and there are a lot of features that are still not implemented.
I had to sit and think. I guess mostly because I knew, deep down, that he was right.
The moral of the story here is this: People don't like other people's code. It is ugly, badly done, and doesn't do what you think it should do the way you think it should do it. You could obviously make it better, but don't. Make it work. The people who pay the checks don't care. They want results and it's rather unlikely they will be happy if you spend a month rewriting a system that mostly worked in the first place. Besides, you have better things to do, like the other features that don't yet exist.
Tuesday, July 22, 2008
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment