views:

526

answers:

9

Hello I'm a Java programmer! Recently our work load started to increase more than my team can handle.

I have to program software, but I am also partly responsible for answering help-desk calls. It means I have to answer the phone, to consult with people who made errors using the program, to listen for implementation requests and to suggest implementation solutions.

My colleague and I are thinking about some way of organizing ourselves so that our productivity could increase, but even so, our task list increases and the number of completed tasks decreases.

Do you have any reference, link, or book where could I find some project management information?

+15  A: 

I have one simple suggestion: keep track of what you do. Write it up at the end of the day or the end of the week, and keep a log of it. Categorise what you've done into new work, consultation for feature requests, bug fixes etc.

That way you'll easily be able to see how much effort (roughly) you're putting into each area, and what you're neglecting.

This isn't a fancy methodology with loads of figures and measures behind it, but I find it helps me.

Jon Skeet
If you seem to be doing a lot of help desking these numbers could convince your manager to hire a dedicated help desk person :)
willcodejavaforfood
A: 

And a great program for tracking your time: Klok, on Adobe AIR.

http://klok.mcgraphix.com/klok/index.htm

It's granular, graphical, exportable, portable and free. I swear by it now.

b. e. hollenbeck
Very nice program. I'll user make us of it. Thank you!!
M3rlino
+3  A: 

You should have a boss, that is directly responsible for what you do.

Organize your team work is his duty, even though some bosses just shouts and give you orders and don't quite understand what the problem is. Anyway.

Talk to him and make sure he understand that by providing desk support you won't be able to finish your coding task on time.

Make a list with him and set priorities. May be you have to support production environment and you just have to stop everything else until production is running ok, that will delay some coding activities.

Sometimes users just request some features that are no relevant ( or are not considered ) ie. Why I don't have this information exported to PDF?....

You may do an estimation on how these new activities impact on your performance and after a while there won't be surprises.

At the end, your boss, who again, is responsible for your team performance, should decide whether you spend your time at help desk and misuse your skills. Or hire a new resource for this kind of stuff.

By any means, talk with your boss. Otherwise not only you have to spend more time working, but it may eventually create a problem within the organization.

Communicate!

Hope this helps

OscarRyz
I think you've partly caught the point! I think part of the problem is that "help-desking".Anyway i think that help-desking is not such a bad thing as it could sound. I think that it helps to understand how people think, what are users main highlits of a program.
M3rlino
+10  A: 

The not-so-politically correct answer:

While I very much agree with Jon Skeet's answer on an academic level, but it may not be the most pragmatic. You will find out within a week of having a "look where my time is going, what a waste!!!" chat based on such record keeping.

Some of us work for fools, children, and flat out narcissistic sociopaths with less empathy that Darth Vader that could not logic themselves out of a paper sack. Seriously. No joke. My bet is that talk will change nothing 80% of the time in these master/servant-need/want situations.

So, some 'non-verbal communication' may help. If you are inclined not to just move on (which there is sure to be answers leaning this way), try out some targeted passive-aggressive behavior:

  • Stop answering the phone, or let it ring and ring and ring before picking up. If you are directly confronted, admit nothing and promise to try harder. "Sorry, I was so engrossed in this programming project (which I am so motivated by that I work on it at home, wink, wink) that I did not hear the phone".

  • When you do answer the phone, stop being as effective, polite, and helpful as I suspect you are. Excel at what you want to do there, damn the rest.

  • Be sure to be doing a top-notch job with the coding.

This is a slippery slope that could lead to a bad attitude. Check yourself. But it most certainly is a valid technique to express your desires.

Do have a "Look! We are wasting me expensive time on low-level tasks" chat first, but 'go nuclear' if that does not have results.

Stu Thompson
Which Skeet-recommended chat are you talking about? I think you may be thinking of someone else's answer...
Jon Skeet
I am GUILTY of taking your answer one step farther. My bad. :P And my read is that keeping track of what you do leads to the follow up "look at all this time time I spent doing doing other stuff...I want to do what you hired me for." I've done it, I've seen others do it. Extrapolation. Yea, so. My answer shall be corrected.
Stu Thompson
+3  A: 

Pragmatic solution: Have either your boss answer the phone or make a schedule where either you or your partner answer the phone while the other works as uninterrupted as possible. Each interrupt means you'll need half an hour to be as efficient as you were before the disruption. 10 interrupts per day and you won't get much work done.

The key here is that you can only be effective if you're not ripped out of your train of thought every few minutes. So one of you needs to do the multi-tasking (planning things, answering the phone, writing bug reports, checking feature requests) while the other one only does one thing: Write code.

If you this doesn't work out for any reason, get a student from university and have him/her answer the phone for EUR 10,-/hour. That costs you EUR 80,- per day of full productivity. If you do this, unplug your own phones and lock the door. Make sure that nothing but an earthquake can disturb you.

Aaron Digulla
+1 for the schedule suggestion. "Time Management for System Administrators" calls this the "mutual interruption shield."
Josh Kelley
Good idea! I will apply from monday!
M3rlino
+2  A: 

If you have to program and partly help-desking try the mutual interruption shield.

This technique is described in Time management for system administrators by Tom Limoncelli. Quote from the book:

Suppose you are in an environment with to SAs. You and your coworker can agree to establish a mutual interruption shield. Before lunch, you field all the interruptions so that your coworker can work on projects. After lunch, your coworker fields all the interruptions and lets you work on projects.

The book is one of O'Reillys open books and freely available at http://safaribooksonline.com/

Ludwig Weinzierl
His problem is users, not coworkers. A big pink dolphin (or whatever mutual interruption shield) is not going to solve the problem. Low-level "it doesn't work!!!!!!!!" questions from strangers. A totally different problem than you have answered.
Stu Thompson
A: 

read some of Joel's articles... www.JoelOnSoftware.com... I have found many of his articles useful!

Josh Curren
A: 

It sounds like you need to talk to your boss about getting a dedicated help desk person who can help users figure out what they did wrong or gather enough information to file a bug report, or schedule a telephone appointment with a developer if needed. If that isn't feasible, see if there are any local university students working on IT / CS degrees whom you could train to at least answer the phones and field basic problems.

A: 

Programming and interruption don't go well together.

You need to time-slice your day between yourself and the others sharing help desk responsibilities, so each of you gets a portion of the day where you can concentrate on actual development.

Make that time coincide with the time of day when you do your best coding.

Then, with the boss' approval, publish the times when people should call you, or call someone else. If someone fights the system and calls you during your down time, don't answer. Or answer and transfer them to your coworker before they can spit out their problem and derail your train of thought.

The more jerk-enabled way to do it is to create an issue-tracker / trouble ticket system, and force your users to log all errors there and you'll get back with them when you have a chance. Trust me, the data you'll get from those entry forms will be next to useless, and you'll just piss off the user base (your customers).

richardtallent