As far as I can tell, I am driving my car along a dimly lit road. I say dimly lit, but I’m not really paying attention. I’m looking at the passenger seat next to me. I’m not alone. Somebody else is looking too. Then they say what I’m thinking: “That milk’s never coming out”. And I have to agree. Suddenly the passenger seat is under water and my passenger is gone, and this doesn’t seem strange. Silence. And then noise. A piercing, all-encompassing noise. I am looking at the thing that is making the noise, but I can’t understand what the hell it is or how to shut it up. Then it comes to me. It is my alarm and I need to press the “off” button. Which I do.
7.30am Now I am awake, and the dream is fading away. Logic and sense is starting to return and I realise that it is time to get up and have a shower. Which I do. The usual nausea hits me, but not for long. And soon I’m brushing me teeth, trying to shake off the urge to close my eyes and go back to bed. Focus!
Clothing selection for me isn’t very hard. I just grab a bunch of clothes and put them on. I’m a bit of a GAP kid and therefore have a wardrobe full of plain, uninteresting clothes that can be worn in almost any configuration (I do have a large collection of Hawaiian shirts, but that’s another article altogether). As a programmer I don’t need to wear a suit so I just try to look semi-respectable, with varying degrees of success. I drive straight to work and arrive by about 8am (first in). Now the day begins.
8am After dropping my packed lunch off in the fridge, I sit down at my desk and switch my monitor on. Okay, I’ve got a tried and tested routine for the first thing in the morning at work that I fondly refer to as “getting up to speed”. First I check my e-mail. Nothing interesting. I log into Yahoo! messenger, ICQ and MSN messenger. A couple of my “buddies” are online, but I’ll leave them alone for now. They probably feel as lethargic as I do. I’ve got a message I missed from yesterday saying “cool”. [Mental note: reply to it a bit later].
8.15am Now I try to figure out what interesting things have happened in the world since last night. I go to BBC News Online and spend a bit of time doing exactly that. David Beckham (the saviour of English football, apparently) is going to be fine after injuring his ankle. The Queen mother’s death is still top of the UK news. And the Israel-Palestine conflict rages on as it has done for my entire life. I’m starting to feel ready to do some work now. But just before I do, I go for a bit of light entertainment and have a read of Dear Deirdre on The Sun website – there are so many people out there that seem to have enough complicated sex lives to fill a thousand years of Mills and Boons novels.
8.35am Okay, figure out what I was doing at the end of yesterday so I can pick up where I left off. The development team I’m working in is in the middle of re-writing the user interface (the bit you see and use) of a large piece of software. I’m currently tasked with re-writing a small part of that large project (like eating an elephant, you need to eat it a small piece at a time).
I check my notes and see that I was in the middle of figuring out the use cases for the software component I’m working on (i.e. writing down all the possible things a user would do with it so I can figure out if the spec is missing anything out). So I fire up the previous version of the application and have a run-through of the existing system (i.e. look at the component I’m re-writing to get myself into the flow).
9.30am Everyone else is in the office now, although it’s pretty quiet, and I’m hungry. So I take a packet of Quaker Oatso Simple and wander down to the kitchen and the awaiting microwave. After two sessions of 1.5 minutes punctuated by stirring, I’m walking back upstairs with hot bowl in hand. Of course, I can’t do any work while eating a hot cereal, but I can quickly read a few weblog articles on the net. Which I do.
9.45am Okay, back to work for real this time! Rather than writing code today I’m really wracking my brain instead. I’m basically taking a specification for a piece of software, making it exist inside my head, and then using it (inside my head) and seeing if it all works according to plan. It’s surprisingly hard to do actually, because it’s too easy to just think “ach, nae bother, it’s all fine, back to the net”. But the trouble is that when I come along and write the code and it doesn’t work, then it’s about 100 times harder to sort it out. The key is to work out all the problems on a piece of paper first – it’s easier to change a piece of paper than 50,000 lines of code.
11.00am A short burst of swearing from behind me alerts me to the fact that two of my colleagues are playing Yahoo! Pool. This breaks my concentration sufficiently for me to go downstairs and make myself a cup of tea. Remembering to put the milk in AFTER the tea bag (27 years before I learned that lesson), I make and proceed to drink an almost perfect cup of tea. Apparently, if you are in “the zone” and someone distracts you out of “the zone” (like by asking “are you in the zone?”), it can take up to 15 minutes to get back into “the zone”. Read more about “the zone” here (scroll down to point 8). Eventually I get back to writing down the fruit of my thinking – a bullet pointed list of tasks users will perform on the software.
12.00pm Lunchtime! After eating my sandwiches (prawn cocktail and ham actually – very nice), I challenge one of the guys to Yahoo! Pool. Naturally I lose both games (potted the black and the cue ball on the first game, just got beaten by better play on the second). Then I play another colleague and luckily manage to win. In the process I keep missing long pots to the corner pockets, so I go on a practice table and proceed to miss 12 identical long pots in a row. I give up, close the game down, and do a bit more news surfing (seen a picture of David Beckham’s ankle bandage – very flashy). I also have a quick conversation on Yahoo! Messenger (do I sound like a Yahoo! salesman or something?) about the bowling game last night (won 2 games out of 4 – I normally come last in almost every game), and how drunk he got, and how hungover he is.
1.00pm Back to the grindstone. I’m playing around with the screenshots of the software I’m away to write, moving buttons around and that sort of thing. Having finished that I’m writing more detailed descriptions of the use cases for the software, really fleshing it out. For that I am periodically calling on the services of my esteemed colleagues for some quick chats. I guess the thing about working in a team of software developers is to work as an individual and just communicate with the team members when it’s required. If you sit 6 developers around a table and try to get them to make a decision, it just won’t happen. Any more than 2 will bicker until long after the cows have come home. I’m also updating the full system source code to pick up changes other developers have made so I’m working with the latest version of the software.
3.00pm I’ve finished writing the list and confirmed it with another couple of guys (it’s impossible for 1 person to see all the angles at once). Peer review – it’s the only way to avoid major cock-ups. Time for another cup of tea.
3.20pm It’s schedule time. Using an Excel spreadsheet, I’m working out how much time each step of the development is going to take. It’s confirmation really as the guy who wrote the spec also wrote a schedule. But it’s suicide to agree to work to someone else’s schedule without even looking at it. A fair bit of the work has been done already so I’m deducting the time that’s been spent.
4.00pm I feel happy about what I’m doing now. I suppose with experience you get to know when you’re ready to stop planning and start writing code and I have an internal fear-sense that makes me worry that I’m getting in over my head. Once that fear disappears (by figuring out what I need to do) I know I’m ready to go. And I’ll start delving into the code and actually writing some tomorrow morning. I’m just writing my to-do list to order the main pieces of work I’ll need to do over the next month or so and inserting little things that are too small to go in the main schedule but will need to be done. If I don’t write it down I’ll have forgotten in 24 hours and it’ll never happen.
4.30pm The end of the day. Just enough time to do some last-minute email checking and news reading before packing up my troubles in my old kit bag and nicking off home.
4.35pm Now I’m driving home, listening to some Teenage Fanclub on the stereo and singing (out of key) along to the lyrics. And very quickly work is out of my head and I turn back into a dithering Scotsman.
5.00pm I’m winding down by doing keepie-ups with a football and kicking it against a wall.
Well, I’m not going to bore you with what I do on my evenings (leaving room for future articles). What? You think that was a pretty boring day and you were right all along about computer nerds? Maybe. And I don’t like your attitude by the way! But it’s fun. A chance to be creative and organised. It’s full of constant challenges and you get the chance to solve a problem in a clever way, patting yourself on the back for being so smart. Although if you do your job right, the users of the software don’t even notice they’re using it. So by being successful you keep a low profile. Strange way to make a living? Maybe. But isn’t all work?