The more you do – the more you do?

She's doing more...I am working on three projects at the same time. One of them is my paying job – a large bespoke development using JEE, Seam framework, Hibernate and a structured waterfall process that has gone all over the place as we’re nearing delivery to a fixed schedule (that, truth be told, was postponed for a few weeks…) The team is not huge – there are six developers and two testers, together with a DBA, an architect, a web designer, a BA and two project managers. Yes. Two.

The other two projects are my home-grown babies… two CakePHP applications, where the team is much smaller. It is only the two of us – and we both architect, analyse, do the DBA work, develop, test, and handle everything else.

You’d think my home projects would get all my attention, right? Well, I’d think so too…

However, I find myself dividing my time more or less equally between the day job and the pet-projects. I don’t mean dividing my time in the strict way. I don’t spend 08:00 to 17:00 doing Java and pound away with Cake until I go to bed. The actual times are a bit fluid, and I find myself slicing the entire day between all three projects.

Initially I was concerned (when I accepted the high-pressues day job project) that my projects would overlap and over-demand, leading to a disaster on all three fronts, and keep me on 4-hour nights for weeks on end. I thought it was either that, or abandon one or both of my babies for a few months.

Boy was I wrong.

What actually happened is that instead of dividing 100% productivity into three, leaving each project with about a third of my attention (add context-switches to the mix and you get really poor results here) – I raised productivity to about 350%. Yes.. apparently I had huge reserves to tap into. The more work I have to do across the projects – the more I do.

How is this possible?

Law of diminishing returns aside, there are contributing factors here:

Similar challenges

The projects are all web applications. Even though they use different stacks. Still, things I learn working on one project – I can immediately apply to the other two, before actual problems arise.
CSS and Javascript problems I solve with my babies at night – I implement the next morning on the enterprise Java application (saving time and money by ways of freeing up the web designer as well). Lessons from penetration testing I perform on the enterprise application are applied to the CakePHP apps after dinner, etc. etc. ad infi.

Flexible time management

While my daytime project is very tight on schedule and budget, it is very delivery-focused as well. This means that as long as I deliver on time, and ensure my team fixes the defects returned from testers – I won’t get in trouble even if I spend some work-hours on PHP.

Minimising the effects of context-switching

Context switches are expensive. However, if managed correctly – they can be beneficial. I found that I play around with the time slices. I use each project as a “break time” from the other two. So – if I’m stuck on one – I switch to another. The only side-effect I’ve had so far is that every time I switch to Java, the first String literal I code uses single quotes instead of double quotes, and Eclipse cries foul. If Java could use single quotes as well as double to denote String literals – I wouldn’t lose even that…

Different delivery methods

The Java project is structured, process-oriented delivery. We have signed-off specifications, design meetings, system and user acceptance testing – the lot. My babies are agile-ish – we think of functionality and we develop it. We don’t fight scope creep, we don’t have analysis documentation, and we don’t have a test team.
Sometimes I wish the Java project was more like the Cake projects. Sometimes it’s the other way around.
I found that when I’ve had enough of the structure and process, I float:left towards my babies for a time-slice. When I wish we had more regression testing on the agile-ish projects – I float:right to the comfort of structure and documents. This, I think, leaves less time to wallow in frustration over delivery, and makes me focus more – regardless of what I am working on.

More time in the zone

When you’re in the zone – it’s autopilot. Everything you’ll do will be ok. I find that for me, the most productive times are when all three projects need to meet a milestone. I then fix defects like the fairy godmother, develop like a locust and design as if there’s not tomorrow. The zone does that to you. Everything falls into place, and you just produce code.

It seems like the more work there is – the longer I manage to stay in the zone. This does not usually happen when there’s only one project, and I wonder if this can catch on as a management style :)

Popularity: 5% [?]

About the Author