Tuesday, January 18, 2011

Where Did That Two Weeks Go?

“For the past few weeks I’ve been working with a fellow developer on a project that required an all-out programming effort. It’s done now, so we’re back to a regular schedule, but when people hear about the crazy hours they often say they’re sorry. They really shouldn’t be. I would never do this often, or for long periods, or without proper compensation if done for an employer, but the truth is that these programming blitzkriegs are some of my favorite periods in life. Under the right conditions, writing software is so intensely pleasurable it should be illegal.”  - Gustavo Duartes

codemonkey One of the best blogs I have ever encountered is written by a software engineer named Gustavo Duartes. Gustavo has a wonderful writing style. He has a talent for describing complicated engineering topics with clarity and conciseness. Beyond the technical aspects of his blog, though, the real jewels are his observations about the software engineering profession.

The above passage is from a brilliant piece entitled Lucky to Be a Programmer. Recently, my time available for blogging has been drastically reduced due to my own little intense period of programming. Duartes’ piece is so spot on that it feels like he has written it explicitly for me and my life over the last 14 days.

At our first scrum meeting upon returning from holiday on January 4, I was given sole ownership of a story that I previously thought I would be working on in a supporting capacity. The story had a very aggressive sizing and target delivery date and was part of what the PTB were calling Extended Content in our next release – these are functions that weren’t in the original release content plan, but added due to demand (both externally from customer or internally from other parts of the company such as Sales and Services). The Extended Content is viewed as high priority and high-risk, so it gets a lot of attention and focus from release management.

This work item (just call it Load Common Data Model from Deployer’s Workbench) needed to be in our Test Team’s hands by January 17. Deployer’s Workbench is the component that I blogged about here – it was solely developed and maintained by my colleague Pierre.

Over the last 4 months or so, I had been working part-time on DW with Pierre to support my manager bug-feature Brian’s “What Will Happen to DW If Pierre Gets Run Over by a Bus?” challenge. I had been getting up to speed pretty quickly on the code, fixing some bugs (best way to learn existing code)  and Pierre liked the work that I was doing. But this was a whole other deal – a major enhancement that I would own and the delivery for which I would be solely responsible.

I had mixed emotions on that. On the one hand, it was cool that Pierre had the confidence in me. But there were some significant technical challenges in this item around the scale of the data to be loaded and the integration of the enhancement into the rest of the product ecosystem.

I stewed over all of this on January 4th and then committed to the assignment at the end of the day. I was all in. This was going to require (best case) some pretty significant overtime, but it would also be challenging and fun. I would need to bring a strong game though – Pierre and I share a lot of the same values as engineers. He has high expectations on the quality of the software that gets incorporated into DW.

“Few things are better than spending time in a creative haze, consumed by ideas, watching your work come to life, going to bed eager to wake up quickly and go try things out. I am not suggesting that excessive hours are needed or even advisable; a sane schedule is a must except for occasional binges. The point is that programming is an intense creative pleasure, a perfect mixture of puzzles, writing, and craftsmanship.” – Gustavo Duartes

So this little deal has been pretty much all that I have been up to for the last two weeks – everyday including weekends. Major parts of the last 2 weeks are blurry (my own little creative haze). For example, on Saturday the 8th after working from about 8:00 AM until 2:00 PM, I took my car to get an oil change and went grocery shopping. That was the last time that I left my development until Thursday morning, January 13th. During that time, I was holed up in my bedroom arranging the 0s and the 1s. One of my favorite managers in IBM used to tell his geeks that “Programming is just a bunch of 0s and 1s – and I’ll give you the 0s! – you fill in the 1s.”

Hermit crab In my case, work and weather conspired to make me a hermit. You see we had a major ice storm that was planned for the area. It was predicted to start Monday afternoon. Sunday was occupied with work and NFL playoffs, so I didn’t venture out of the house. I just worked from home on Monday because you really don’t want to be on the road around here when snow or freezing rain hits. (One inch of snow at rush hour almost brought Raleigh down in 2006). The ice did hit us overnight on Monday night and the development was really icy on Tuesday and Wednesday, so I again worked from home. On Thursday, I finally returned to the office for a 7:30 AM to 11:30 PM day.

I do want to stress that,like Gustavo, I am not looking for sympathy. There are many folks hurting now that would kill to have a job such as mine. I am incredibly fortunate to be able to have a good job that I truly enjoy, Once a programming assignment reels you in though, it really can be very addictive and before you know it, 2 weeks have gone by. It is very difficult to explain to folks not in the club, but Duartes nails it about as perfectly as one can.