Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've been working on this contracted project for over a year now and I'm the only developer (as a contractor delivering the product) on a mis-planned project with unrealistic deadlines. I've pointed those out at the very beginning but since I need the money I took the project. I don't care that much if I'm earning less due to this deadline overdue-ness...

Anyway. Since I've been working many many late (as well as early) hours I became really fed up by this project and my productivity has fallen below 50% (approximation).

How do I fight this to boost productivity?

I can't take time off, because I'm the sole developer on this and because project is already too late.

Some more info

I got this project over another intermediary company (in other words: with connections). I'm mostly communicating with the end client and they are aware that things can only go as fast as they do. They have the know-how, we keep meetings every other week to check progress and talk about outstanding things, processes etc. They seem content and satisfied with my work. But this intermediary of course want their stake (25%) and are saying things are going too slow.

That's why I say that I don't care that much about being late, because I know I'm delivering a very good as well as useful product that will be used heavily. And hopefully sold to other clients afterwards as well.

I also have a strong wish to finish it and get some rewards myself as well. I've been working on fumes for the last year. Until I deliver the first phase (out of three) I see no money. Last two phases will be shorter. Especially the second one.

share|improve this question

closed as too broad by gnat, Ixrec, Snowman, MichaelT, GlenH7 Apr 20 at 17:51

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs. If this question can be reworded to fit the rules in the help center, please edit the question.

Can you clarify....are you a full-time employee or a contractor/consultant who took this project? –  Rob P. May 24 '11 at 16:48
Sounds to me like you ain't gonna get a good employee evaluation this year, so why stay? –  Job May 24 '11 at 18:22
Take time off anyway. You are burned out. You need the time off to work productively. –  HLGEM May 24 '11 at 19:04
@Job: I don't care about evaluation really. I am the one person company. I'm my own boss, my own employee and my own genitor. :) One size fits all roles kinda person... –  Robert Koritnik May 24 '11 at 20:27
Voted to close - I really don't see how this is different from any other productivity poll. Sure, it provides a lot of context, but the context is mostly irrelevant, and the essential question is still just "how do I improve my productivity / manage my time effectively" and the answers confirm it. –  Aaronaught May 24 '11 at 23:34

12 Answers 12

up vote 16 down vote accepted

A problem likely to be familiar to a great number of us out there, unfortunately.

My personal attempt (and sometimes, failure - it's hard and takes discipline) at solving this issue uses the techniques outlined below.

Get yourself organized

  • Break everything down to small sub-tasks if possible
  • Define a very strict time-table to get you moving from sub-task to sub-task, planning each hour (if not half-hour of your day). Use something like Google Calendar, Outlook or anything than can smack you in the face to keep you on track, or be muted to let you focus on the current task if you really need to
    • Personally, I use Google Calendar with different calendars and with SMS notifications and a morning e-mail of my whole agenda)
    • If you're an emacs person, org-mode is your friends
    • Checklists, and TODOs of any kind, really
  • Update and maintain this time-table overtime
  • (Avoid procrastinating by spending more time on the breakdown than on actual work!)

Isolate yourself and remove distractions

  • Close your e-mail program
  • Unplug the network cable
  • Sit in front of your computer and really tell yourself "right, I've got to do task X now" and get on with it
  • Buy good earphones and geek out on your task for a while

Additional answers

That's for the "kicking myself in the butt"-part.

Now to make things more enjoyable:

Discuss your options and alternatives with the clients

  • What can you do to make your coding more enjoyable?
  • What features can you prioritize that make you more enthused about the whole thing?
  • What frameworks and technologies are you at liberty of using, and for what part, where that would give you a competitive edge and give you the opportunity to scratch an itch?

Get your mind off of it

  • If nothing works, I recommend you download Crack Attack and start playing for 5-10 minutes, then get back to your task :) (another game or pastime would do, as long as it requires you to focus on it and really takes your mind off of your job)
  • If Crack Attack doesn't help , then do what I'm doing now: answer interesting questions on StackOverflow or Programmers.SE. Not productive, but keeps me happier for a little while.
share|improve this answer
Enjoyable things? It's so beautifully sunny outside and my bike is yearning for a >60km ride... As well as my legs. –  Robert Koritnik May 24 '11 at 16:04
@Robert Koritnik: take your bike and a laptop (a cheap one...) packed with most of the things you need for small sub-tasks that won't require too much connectivity. Find a sunny spot. You solve the issue of having distractions (news, social networks, IM, e-mail...) by being disconnected, you get the mood boost of the sunny afternoon, and you are healthier. Perfect. Just don't spend too much time looking at birds and stuff, and watch our for cars on your way to your working spot :) –  haylem May 24 '11 at 16:14
I have the benefit of working at home and working outside already while I can't imagine myself on a road bike in speed suit and carying laptop. But it's a nice idea even though. –  Robert Koritnik May 24 '11 at 16:17
@Robert: well, I meant to just drive with the laptop in a backpack or case or something until you reach a destination, and then only start coding, otherwise that gets really difficult... :) –  haylem May 24 '11 at 16:50

If your productivity is reduced due to the amount of hours you are working then cut back your hours.

12 hours a day at 50% productivity is 6 hours of work. If you went to 8 hours at 75% productivity that is still 6 hours of work. But leaves you time to do more important things in life.

share|improve this answer
Yes yes a milllion times yes –  HLGEM May 24 '11 at 19:03

Been there done that, I must say it really sucks to be in that position. Allow me to say that the project being late is not probably your fault. (doing some empathy here, a project owner, unrealistic deadlines, single developer, already late... I really really had the same experience)

Everyone should know that you working overtime under stress won't bring out a successful product in the end. You need your sleep, you need your time off and everything. No excuse here.

Anyways, if you want to increase your own productivity, here are some clues that worked for me:

  • Definitely use a bug/feature tracker. You'll feel better by closing tickets and you'll feel the progress.
  • Enter refactor. Earn more time by maintaining redundant code, simplify things.
  • Try to think more and code less, don't try to implement a feature immediately. (Features invented fast corrupt your code fast)
  • Give your input if a deadline is set wrong/impossible. They may not agree, but they will hear you.

And maybe you could ask for;

  • Some other developer to help you out
  • Some time off (even 2-3 days would be refreshing)
share|improve this answer
I always though that late projects are everyone's fault. Everyone that're involved in it. Including developers. I don't just blame others. I know it's my fault as well. Hence this question. I would like to improve on my fault to make it better. –  Robert Koritnik May 24 '11 at 21:11
AD increased productivity: it's true I don't use bug tracking, because there's no systematic testing being done here. End client users are the ones that report bugs. But they are just those that are of very high importance/priority. I try to write as good code as possible to not slip in any stupid bugs and especially not those that get in because things were written in a hurry. I refactor all the time and have very clean code so I find my own code very maintainable (proven on multi dev projects as well). –  Robert Koritnik May 24 '11 at 21:15
All parties are aware of invalid deadlines from day one when I took the project. I informed them at the beginning when I took the project. But even I thought it would go faster. Which is not. The product way more complex than initially thought. And it has to be to be useful Otherwise it just won't be. –  Robert Koritnik May 24 '11 at 21:16
Well yes and no. I consider a developer as a tool (lol), a function that delivers results. Thus, we are all depending on who leads us, who shapes our projects. Worse part is usually developers (developer in your case) aren't considered as a part of the big picture, and faulty deadlines are thrown away just to push the development. Horrible scenarios, worse that can happen. If you're an excellent lightbulb but you're being used under the sun, you're a waste of resource. –  detay May 25 '11 at 1:36
And yes ofcourse, you should be trying to find ways to function better as a developer, but in your case your development skills or the way you work is not the "slowing" factor. your nerves and your patience defines the limits of this work. You've asked how you could make things "bareable", and well... I already told what I thought about it. Anything else? Well try steroids (just kidding, don't do that.) –  detay May 25 '11 at 1:40

The single most important part is to take a few days time off. Even if you "can't". You probably need it. Go camping near a lakeside or wherever other suitable countryside if your finances are low. But go out a bit.

Once you've relaxed a bit, locate a nearby place with an outdoor terrace with reasonable shade. (Ideally seek one with a wifi access and a hot waitress; neither are not absolutely needed, but they're convenient and enjoyable.)

Then, consider whether you might be able to work in that place for a few weeks, and enjoy the sunshine instead of your indoor office. (You couldn't resist bringing that laptop, couldn't you?) If so, stay there for an entire month. You'll find that battery life considerations will force you to work 5-8 hours per day instead of whatever you're currently pulling off, and you'll probably get more done.

Lastly, look into hiring someone. There are plenty of coders out there who won't cost you an arm and a leg, and who can cater to some of the things that you find less fun.

share|improve this answer
What kind of batteries are you using? Mine last for 1.5 to 2 hours tops. Heavy duty notebook. :) –  Robert Koritnik May 24 '11 at 20:55
A good old MacBook. I see battery life as their primary value. :-) –  Denis de Bernardy May 25 '11 at 6:42

You should evaluate why you do this, how you do this and what will be the net result. Are you gonna get the reward of your life if you finish this project on time? Else just reset the time expectations, plan your work around 8 hrs a day - or quit.

Sometimes paying back the money is the best deal. Why do it 6 months later if you can do it now?

share|improve this answer
OP said he had no choice because of the money but yes if that wasn't a factor sometimes you just have to walk away. –  Ominus May 25 '11 at 15:32
  1. Organize your own work. Other people's stuff might be a mess, but you should have a good grasp of what you need to get done, and what needs to get done today. If you don't do this, your work becomes overwhelming and you don't get home until late.

  2. Sleep/eat well. Nothing will rob you of productivity like a lack of sleep. If you sleep well, your able to accomplish what you need to do and go home on time.

  3. Be a realist. Understand what you can get done and what people what you to do. Sometimes a compromise needs to be made. You may need to project as a scaled down version of what is being expected, if the goal is unrealistic.

  4. Get in the groove and listen to some music so you are not listening to the clock tick. (it helps me!)

share|improve this answer

Like most people here, I've been there and done that.

You need to sit down and re-evaluate the project purpose, funding and goals with project sponsors. I don't know specifics of the project, but some general rules apply (I suppose).

Since you are the only dev, and have significant know-how, they'll surely listen when you tell them that you need more time/additional devs/more funding/all of this/etc. If they won't listen to you, then just quit working with them ASAP.

It'll do good to you, even if you are losing financially.

share|improve this answer
Hmmm. I'm not too sure about increased funds since this project was tendered and is for government agency. If funds should be re-evaluated they should go through the whole tender process again since others may be evaluated higher. –  Robert Koritnik May 24 '11 at 21:08
Like I said - I cannot talk about the specifics, just obviously they need to make some concessions to you, if the project is to go forward. –  Jas May 24 '11 at 21:12
Thanks for the answer. I appreciate your idea you gave me. Let's see if I can materialize it. –  Robert Koritnik May 24 '11 at 21:22
+1 on Jas. You need an exit strategy, not that you'd immediately quit but you'll feel more comfortable knowing all your options. –  detay May 25 '11 at 1:32

You took this contract because you needed money, you haven't been paid for a year, and you don't expect to get paid for another 6-9 months? Of course you have motivation problems! Any sane person would!

I've been in the same position, and can tell you from experience: if you want the project to succeed, somebody needs to pay you some money soon. Otherwise, no matter how you try to boost your productivity, you will become more and more depressed, and get less and less done, and eventually the end client or the intermediary will cancel the project, and all the effort and money everybody's put into it will be wasted.

Fortunately, it sounds like you have a great relationship with the end client and they're happy with your work, so I suggest you informally discuss the situation with them. Explain that you're happy to keep working with them, but because the schedule has slipped due to circumstances beyond your control, you're having cash flow problems and you can't continue working without at least partial payment. Once you and they are agreed on how you should be paid, bring the intermediary into the discussion.

Also speaking from experience, if you can't come to an agreement to get you paid very soon, you should quit the project immediately. Quitting is a decision that will leave you feeling in control of yourself and your future. If you wait for someone to cancel it, you'll feel like a failure.

share|improve this answer
I expect to get paid the first third of the whole sum in the next month or more likely in the second. –  Robert Koritnik May 25 '11 at 7:30
If you wait for someone to cancel it, you'll feel like a failure: this sounds similar to dumping a girlfriend before she does. :) Hence I can't disagree with this statement. ;) –  Robert Koritnik May 25 '11 at 7:33

By taking control of the project and doing what is right for the project and not what appears to be right for the project.

If the deadlines are unrealistic then set them to be realistic. You are the developer, you have final say in what the deadlines are with you working a normal work week. Anything else you do without first addressing the deadlines will be addressing the symptom and not the root cause of your problem.

In setting any deadlines the trade-off triangle needs to be taken into account. Basically, the customer gets to chose only two of the three points of the triangle, with those three being: Time, Resources, Scope.

You get to decide the third one ... period.

In addition, suggest to create miniature milestones to start getting some real success under your belt.

From Rapid Development

The miniature Milestones practices is a fine-grain approach to project tracking and ontrol that provides exceptional visibility into a project's status. it produces its rapid-development benefit by virtually eliminating the risk of uncontrolled, undetected schedule slippages.

share|improve this answer
I'm well aware of the triangle. Loooong time ago I studied MSF deeply. The thing is I needed the work I knew it will be late, and I had no control of any triangle corner. None. Everything was set so I knew it will be partially a death march project. But I am an optimist and I still believe it can be done. With less recompensation but the end product may be delivered. –  Robert Koritnik May 24 '11 at 21:20

Tell your boss you are taking the rest of the week off and when you come back you will be working 8 hours a day, 5 days a week until the end of the project. Tired people make mistakes, usually really bad ones, and the development takes longer working 80 hours a week than working 40. Tell him he needs to hire a second person if he needs more hours.

This is the kind of job where doing this is no risk because even if he fired you, you would be relieved and have the time to search for a new job which you would probably find quickly. Further if you talk to your local stateLabor department, you might find that even if he fires you can get unemployemnt due to the unacceptable working conditions. I had a job this bad once and leaving it was the single smartest thing I ever did.

share|improve this answer
I'm my own boss. I can't hire anyone since I get paid per phases and I knew at the beginning deadlines won't be met so I would be going completely flat if I hired another person. Basically I don't find my job bad at all. I love what I do. I have my own company even though I'm the only person in it. I choose my projects. I'm just having a problem with being fed up with this particular project. It's becoming very very complex and requires a lot of thinking and problem solving at this stage so progress is really low. And since problems are complex I often have to rethink stuff the next day. –  Robert Koritnik May 24 '11 at 21:01
Is it complex because you are trying to fix a mess left by someone else? Or are you solely responsible for the complexity? If it's all your own creation, then it sounds like you may not have the expertise needed to complete this. –  kevin cline May 25 '11 at 6:53

Is the end in sight?

If so, plan something positive for right after that end, and work towards that making the project end your deliverable for that positive.

share|improve this answer
That's a good plan if the end was in sight in the next month. Yet it's somewhere in the next 6-9 months. :( I'll but out few more times yet again. –  Robert Koritnik May 24 '11 at 16:01

Excellent answers, @haylem in particular.

You have a manager/boss, right? This is not just your problem, it is his/hers. Present the situation, and suggest some alternative solutions. You will be glad you did.

share|improve this answer
Who should I consider boss? The intermediary company that got me this contract that takes 1/4 off my payment? Or the client that I do this product for? Or myself since I run my own company in which I'm the only person employed? –  Robert Koritnik May 24 '11 at 21:03
@Robert: The intermediary. Every project takes an amount of time unknown in advance, so somebody earns the low-side reward in exchange for the high-side risk. Are you on fixed-price or time and materials? Either way, you need to negotiate the overrun. If the job is bigger than what was estimated, it just is. Sometimes the **** hits the fan, so you and they need to face it, and not delay. IMHO, that's the mark of a pro. –  Mike Dunlavey May 24 '11 at 21:23

Not the answer you're looking for? Browse other questions tagged or ask your own question.