8

I have this simple question: sometimes I am ahead of schedule on the task (software development) that has been given to me. For example, I am supposed to accomplish a task in one month, but I finish it in about a week. So this leaves me with about three weeks of downtime... I also work in an open space.

I should stress that I am not a genius or something. The people planning the task simply overestimated its complexity (it seems to happen a lot in companies that are externalizing tasks and this leaves them without the very basic technical competence to be able to say how long a given task will take).

I do not like doing nothing, but I cannot tell the customer that I already accomplished my work and ask for more. I cannot tell them because I work as a contractor, not full-time staff, and there is a contract between my employer and the customer. If I tell the customer that I already did the job, he will put an end to the contract in order to save money (payments are made for each day) and this will make my employer angry. So the trade-off would be to stay at the office, waiting for the deadline to come and making sure my employer is paid by the customer for my presence.

How should I proceed? What should I do in the meantime?

Edit: Thank you for your answers, I accepted one. I should stress out that the employer is basically lending me, without really knowing what tasks the customer will ask me to perform. I work on customer's site, still the sole contracts are between me and the employer, and between the employer and the customer. While legally, all my work should go through the employer towards the customer and assignment should go the other way around, in practice the customer talks to me directly, the agreement of my employer being presumed (this is kinda/almost illegal, because is unlawful/hidden employment; but it goes like that and it is widely accepted in the field). The customer initiates successive tasks through kick-of meetings, when rights to access the code are granted to me for a certain time. I am not authorized to modify the code beyond the scope of the change request - as any modification has to be validated downstream/upstream by safety teams. Still, I am authorized to make propositions, and this is what I intend to do, maybe even testing an preparing an alternative implementation, and provide it along with the official one, if it works better.

Please consider the question answered.

  • Is there a product backlog, and do you have visibility into it? You could always start on the next task in the queue. Or what about testing the work, and creating automated unit/integration/regression tests against it? Or telling your employer so that they can direct your "extra" capacity to other customers/projects? – aroth Apr 4 '14 at 14:11
  • Is this the only task for which they hired you? Are you working in a team? Did you discuss this with your manager? (the one at your employer) – Onno Apr 4 '14 at 14:15
  • @aroth: I went through that experience once and thus, I am reluctant to repeat it (I finished a task three days before the schedule and they really considered ending the contract). I have no visibility over the backlog, as every task starts with a kick-off meeting where they give me the items required for my work. I could only do only generic learning whithout such a guidance. – user18441 Apr 4 '14 at 14:19
  • @onno: yes, I discussed (the previous time) with my manager, but he was concerned to not lose the contract. – user18441 Apr 4 '14 at 14:20
  • @user18441 - If you have written everything you are responsible for. Inform the proper people of your status. You better be sure it has nothing you could have avoided though. If you save the company money they are likely to find additional work instead of thinking you don't have the capabiltiies to do so. – Ramhound Apr 4 '14 at 15:21
20

While it's true that while the task might be "done", that it can always be done better (by adding lots of automated tests of edge cases, improving the documentation, etc), if you're finishing in 1/4 of the allotted time, then your company has seriously over quoted for the job.

Firstly, you should not contact the customer directly. It's actually none of your business.

Bring the matter up with your manager and suggest that your company contact the customer and just say they over quoted. The customer will be really happy and come back with more work more often.

If your company doesn't reduce the quote, the customer may go elsewhere next time to a competitor who quotes more realistically and you'll lose the customer forever.

If your company doesn't want to address this, spend the time learning how to do your job better (learn new tools, languages, whatever). Technically, you're still "on task", albeit at a meta level.

  • I wish this manager would be more honest with his clients. He sounds penny-wise and pound foolish. – user8365 Apr 4 '14 at 15:02
  • I think it is the best thing to do. – user18441 Apr 4 '14 at 17:18
  • BTW, just to add, I work on the customer's site, among its employees. This makes the situation a bit awkward. Still, my sole legal and contractual obligations (except security and safety measures) are with the employer, not with the customer. Basically, the customer asked for: "give me somebody able to solve a task in 4 weeks". So I am there for 4 weeks. – user18441 Apr 4 '14 at 17:20
  • If you are placed on site, why not tell the customer you're finished and ask the customer if there's something else they would like done. No need to tell your company - you're just doing the ethically right thing. You'll feel good. The customer will feel good. Your company will feel the same (presumably good). – Bohemian Apr 5 '14 at 22:05
14

Take a break from the code (a day?) and review it. Seriously, you missed something. It happens.

Take the time to test. Create automated tests if you haven't already. Focus on error handling. Maybe someone with the client can try it out?

Code Review. See if someone else on another project would review your code and do the same for him/her.

Performance Test. Try something new and compare.

Document some more. Sorry, you didn't do enough.

I know many of these things were not asked by the client, but you'd be surprised that they think it's done automatically. I know you don't have control of the over-billing, but you can do everything possible in the time given to produce better code.

  • Even though we can't get a good grip on the scope of the assignment, I would say that, given what is being portrayed in the question, this would not stretch the time spent past a couple of days at best. – Onno Apr 4 '14 at 14:22
  • Thank you. This is, indeed, what I would have to do, but this will rise the question at the end "why did you do all this unnecessary stuff instead of finishing faster?". As for the code itself, I do not joke that was only changing 10 LOCs (porting some firmware from older processor&OS to newer ones). While I agree your suggestions are more than right, doing things that I won't be able to even show does not sound really appealing to me. – user18441 Apr 4 '14 at 14:25
  • 1
    @user18441 - Who is going to know you did any of this? Since when is testing, documenting and improving performance unnecessary? I'll bet the client doesn't thin so. Your question indicates you are not expected to finish faster because the client is paying for 4 weeks. If you can finish in one week and only bill the client for one week, what is the problem? Does your boss want to double bill your hours and have you work on another project but get paid for this one? Very unscrupulous if that is the case. – user8365 Apr 4 '14 at 14:56
  • 2
    @Onno - This company has a philosophy of cutting corners and not being honest with clients. I think the code is probably suffering as a result (almost as much as the clients.). Too often devs complain about not getting enough time. Take advantage of it in this rare case and produce something to be proud of. – user8365 Apr 4 '14 at 14:59
  • 1
    FWIW, if you continue to work for an ethically dodgy company you will get screwed sooner or later. – Amy Blankenship Apr 4 '14 at 17:26
3

1 - Tell your boss/customer

Don't assume that you (or this forum) are going to have the best answer for the next priority at your company. This is a radical difference in estimate, so having someone walk through expectations, adjust the time schedule, and plan out the work that you can now do is necessary.

Also - verify with your boss, and/or the team what your checklist for "done" should be. When a task takes over 50% less time than expected, I get worried that there was a disconnect between the assignee and the work planner, where more work was assumed on the planner's part than was executed on the assignee's part.

2 - Finding other things to do

If your boss can't find something for you to do in a week, then something weird is going on. But while you're waiting for new work - look for things in the office that make you a better performer (like learning a new skill), helps others, or improves the tools and process.

-2

From my personal experience, the "extra" time should always be used to increase quality. I've encountered so much "finished" code that was full of bugs so I can't recommend this strongly enough. A lot of programmers severely overestimate the quality of their own work and underestimate the necessity of rewriting their crappy code or testing it.

  1. If the code needs a refactoring, what better time than now?
  2. You can never do too much unit testing. Test the parts of your code, test the integration, do some black box testing, do some automated testing, do some performance testing, etc. Really don't trust your coding skills to be perfect. No matter how good a job did there are still bugs hiding there. Find them and fix them while you have the time.
  3. Go over the requirements again and make sure you didn't miss anything.
  4. Sit with someone from QA and help them work up a test plan. They likely don't have any idea how your code works. Help them understand so they can intelligently test your code.
  5. If you're really completely idle, write games, phone apps, play around with a library you've been meaning to explore. You'll look completely busy and you'll learn stuff and build your skills while having a good time.
  • This answer adds nothing significant to the already posted answers. Please remember to not repeat others, especially when you are resurrecting a question which is two and a half years old. – David K Oct 6 '16 at 12:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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