Life of the Programmer

Read what kasia writes in Programming – it’s an adventure! on how she spents her typical workday.

A good start to any programming day is to drink coffee (lots of coffee) and make realistic and plausible goals for the days accomplishments. Say, fixing the few outstanding issues in the current project and feeling good about yourself and your productivity at the end of the day.

This sounds still quite easy-going, but read the whole article. I guess I am not on this job long enough. I am still spending time actually developing a new project, instead of describing only one day, I’d better describe a complete week. Oh yes and I am actually working (only) 8 hour days most of the time.

Monday I am late because it’s monday, not that it matters because everybody else is coming to work even later. Monday is spent trying to get back into the problem I was working on the week before. I make myself a huge pot of tea and start deciphering my code. By lunchtime (which I skip in favor of reading web-comics and blogs) , I have remembered what it was that bugged me about that piece of code. So next I try to fix the problem with a good solution, no with the best solution: with the best I can come up with. Of course this doesn’t simply work, I encounter errors, forgotten things, exceptions and sheer stupidity. By dinner-time, I have “a” solution in place that works. Now. I remember that I really wanted to be home right now and hurry out of the office before some phone call or other can get me.

Tuesday Since I got home late on Monday, I got to bed later and since I am so tired, I need more tea. Tuesdays are productive days, I usually manage to get ahead with the project. The morning hours are spent mostly on creating some classes according to my vague idea of a design: I am long past the requirements of the original specification. As always in this phase there is at least one major change to the original specification and I am trying to fit my original code towards the new goal.

Boss: “You know I had this idea we could have the thing run as daemon instead of a cronjob so …”
Me: “Yeah remember I mentionned that possibility when we made the spec for this! You said it was not feasible.”
Boss: “But now it is. I think it’s the better solution. Make it so!”
(and this is the good boss, the one who is a programmer himself, not the evil management boss)

Tuesday afternoon I decide for an update on my system. While looking through the packages to be updated I miss that the “x-window-system” package will be updated. After the update I just work a bit on those classes until they seem to be doing what they should. (The update will haunt me weeks later after some vacation when I reboot the computer and X won’t run and since I don’t remember it was update I have no idea where the error comes from.)

Wednesday The boss is home sick. So what. I got enough work to do and when he’s not there, he cannot make changes to the spec. So I make myself some more tea and start working where I left of day before. After half an hour I get a nice email from our bugzilla that one of my old projects has a major bug and since I didn’t fix it for so long, it will be published in some kind of statistics. My boss also emails me from home, that I should really fix this bug. Ohmygod, it’s a major bug? I didn’t notice because what it really is, is some tiny little thing that happens all the time. I have two options: start discussing the severity issue with the “customer care” people or fix it. I decide to fix it which as always takes longer (see kasia). In the late afternoon I finally find some time to work on the project, which crashes on me because the ‘solution’ I implemented Monday clashes with my classes implemented to the ‘vague idea of a design’ of Tuesday. I go home frustrated because nothing seems to work.

Thursday Thursday morning I start out reading news and blogs for a bit because my motivation is low. The only thing accomplished so far this week was that I fixed that major bug. No I made some classes. I spend the morning after that refactoring those. Then I spend at least one hour writing output routines that are supposed to help me debug some recursive (no don’t!) stuff I’ve stupidly included and which of course is not behaving as it should. See for the daemon I don’t need to re-init everything just a reset. The reset routines aren’t working. Thursdays is our team meeting day, right after lunchtime. Since I don’t go to lunch, I spend the extra time frantically working on the code, so that I’ll be able to present something in the meeting. But usually we skip the meeting 2 out of 3 times. Today the boss is still sick, last week there was some (real) major bug the boss was working on, the week before we had a meeting, the week before boss was on vacation, the …. So there’s no meeting today I guess. The afternoon is spent on adding some new stuff to the previous version of the current project. The current project is only being implemented because the first version of the project didn’t have the requirement of “scalablility”

Boss: “Scalability? Naaa we don’t need that, we just need something quickly. Yes Perl is good. Do it in Perl. We won’t be adding new fields to the database anyway.”

Can you hear my mad laughter? I have been adding so many fields to the stupid thing that there are now twice as many as before. Just before I want to got home, some management type comes by hands me a cd-rom, here’s the database-update for project fnord. I start hitting my head on the wall remembering that this was work I wanted somebody else to do and never finished handing it over.

Friday I am late again because Thursdays is our roleplaying night. I hate myself for sleeping in because when everybody can go home, I will have to stay. Friday morning I get some actual work done, I program some more classes. Just when I want to start testing the boss comes in: “I have an idea for a new feature … blabla … will you think about it?” Around lunchtime the boss and the boss’s boss start frolicking (yes exactly that) in a friday-like manner in the hall between the offices. My concentration wanes. When I test what I just programmed, nothing seems to work the way it is supposed. One after another of my colleagues goes home, and at some point I decide, that I will solve the problem on monday.

Goto Monday