Simon's Diary

Morning

I arrive at work about twenty past nine, which gives me 10 minutes to check email before the start of the day.

The day begins with a brief stand-up meeting, when all the members of the team discuss what happened on the previous day, and any issues that are likely to crop up today. I mention a bug in the save system I managed to track down yesterday, and let everyone know what to look for to check if it comes back. The game is always in a playable state, which allows us to test continuously, so bugs can be picked up at any point during development.

One of the artists mentions that he finished some animations that are part of a story I'm working on at the end of yesterday, so I promise to get them into the game as soon as possible, so that they can be checked and tweaked.

There are two active stories at the moment, neither of which I am signed up for. All our design is done in the form of short stories, which can be split into code and art tasks. Individuals sign up for the tasks, and estimate the amount of time they will take, which allows us to be sure we have the right amount of work to do in a two week iteration - enough to keep busy, but not so much we won't meet a deadline.

One of the coders with an active task asks me to pair with him, so we take a pairing station and start work. All coding begins with writing tests, which provide dummy inputs to the module, and check the outputs against expected values. It's against the rules to write code unless you have a failing test to fix. The tests fail, as expected, so we swap over (the person who wrote the tests doesn't write the code) and start fixing the tests. Once the tests pass we merge and commit the code then start writing more tests.

As we work on the code for the story, an art pair are working on the graphics. We break off at one point to discuss naming conventions, and make sure they know exactly what we need to get the story finished. Requirements can be changed by either discipline as the story progresses, so it's important to keep in contact.

Lunch

We stop for lunch at 1pm. Normally this would be my cue to continue playing through Mechwarrior 4 on the company's gaming PC, but one of the artists has brought in a new console game for us to have a look at, so a few of us head downstairs to the meeting room. We have a large screen plasma TV, which was bought for use in meetings and presentations. The fact it makes a really great HD screen for playing console games is a total co-incidence . . .

We end lunch time with an impromptu pinball tournament. Our creative director owns dozens of pinball machines, and stores a few of them in the office.I get trounced, as usual - there are some ridiculously skilled players here. It's a hard life.

Afternoon

In the afternoon, I start on my own task for the day. It's higher priority than the ones we have been working on, but was stalled waiting for artwork to be finished. As it's my task I pick the partner who knows most about the area I'll be working on, and get started.

As we are working, we realise that one of our tools has missed a potential bug, due to the way it interacts with the compiler. We stop work on the task temporarily, and work out a fix for the problem. All the coders get together to discuss the change, and we agree to implement it.

Once we have the art I was asked about in the stand-up meeting visible in-game we let the artists know, so that they can check it out on their integration machine - a separate PC which we keep up to date with the latest build of the game. We have put a lot of the variable options in a separate cpp file accessible to the artists, so they have the tools they need to tweak the final look of the section.

Towards the end of the day, the artists call the whole team together to discuss some concept sketches they've been working on. Everyone is involved in design decisions, and a few people make comments and suggestions. Half the concepts are dropped, and the art pair responsible continue developing the remainder.

As it's nearing the end of the release, we spend the last hour fixing bugs from our test database. Keeping on top of the bugs in this way is one of the things that lets us keep to the same work hours throughout the project, which is why I'm able to pack up and head home at six.