2

All my previous projects expanded to be 300% or 400% more than the original requirements. Somehow I fall in love with the project and try to make it better and better by adding new features and pretty design. Then suddenly I discover that I'm behind deadline and some requirements are still undone. By this the employer expects the same quality in the rest of the project with the same deadline which is impossible.

I feel I become less productive holding 75% requirements done with over-expected quality and 25% totally undone. The result is overwork for long time, a lot of apologies, late delivery with the same salary.

What to do if I find something good to be added to the program? Should I ignore it to keep my deadline or ask for deadline extension or it is fine to ask for extra money and time?

closed as unclear what you're asking by Rhys, jcmeloni, Monica Cellio, jmac, bethlakshmi Mar 17 '14 at 20:43

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    I believe your question belongs to another site (programmers.stackexchange.com). But anyway, as it stands it's unclear what you're asking. To you want to be able to focus on requirements? Do you want to extend deadlines? Or do you want higher salary for the better work done? – superM Mar 5 '14 at 13:20
  • 2
    I agree with @superM, another site might be better suited. Though I think Project Management is what you're looking for. But the question really is pretty unclear. – CMW Mar 5 '14 at 13:33
  • @CMW, I meant to write productivity.stackexchange.com :) – superM Mar 5 '14 at 13:36
  • @superM That might be a fit, too. Don't know what's on topic there – CMW Mar 5 '14 at 13:37
  • 2
    The answer is simple, really... learn to prioritize. – James Adam Mar 5 '14 at 13:53
1

What you seem to be lacking is constant communication with your employer.

Adopt an agile-like approach to development, and iterate often. For each iteration, only focus on what the employer needs. Talk to your employer each time you finish an iteration.

This will ensure that whenever you take an important step forward, the employer is able to tell how the project is doing. If you are not capable of telling yourself what is good enough, have your employer tell you what is. Don't attempt to sway him into sharing your perfectionist point of view. If he thinks what you're showing him is good enough, then it's good enough, and no amount of perfectionism is going to be worth it there.

4

Your project management process is suffering from feature creep and (probably) the planning fallacy.

Things you could be doing:

  • use TDD; That means, define your feature, write a positive test for it, then write code until the test passes (and no more).

  • in your planning, keep two lists: "features" and "out-of-scope features". When you get an idea ("it would be nice if the quux also worked with a blox") place it in the "out-of-scope features". If you have time (first priority), and client agrees that your idea would be a cool feature, you can move ideas, one by one from the out-of-scope to the features list (with extra time budget, agreed by client).

  • formalize your goals; When you create a task list, create a bullet-point list of criteria to match for the task to be done ("definition of DONE"). Criteria Example:

    • task is done when:
    • code is clean
    • there is a positive unit test and it passes
    • there are negative unit tests for invalid inputs and they pass
    • API is documented
    • code is checked in.

    After you formalize your task, work on a single task until it is finished, then move on to the next.

  • 1
    I like the answer, other than the TDD comment doesn't seem to fit. When working on projects I come up with ideas and new features all the time. I used to include some because they were relatively simple and quick. However, as I have gained "business" experience I learned that this was not only costing my company money for the time I was spending implementing the non-required feature but was also losing out on future money that a customer would be willing to pay in order to have us add to the project. Write your ideas down, pitch product enhancements to the customer for an additional fee. – Dunk Mar 5 '14 at 15:03
  • I added TDD here because it limits feature creep in written code: if you have a clear business requirement, you begin with writing a test; if you do not have a clear requirement, and think your "quick extra feature" is a good idea, the fact that you should begin writing it with a test will probably dissuade you from trying (because the quick feature is no longer so quick to write in this case). – utnapistim Mar 5 '14 at 15:38
3

Somehow I fall in love with the project and try to make it better and better by adding new features and pretty design. Then suddenly I discover that I'm behind deadline and some requirements are still undone.

So the obvious solution is - stop doing that!

Instead, focus on the requirements. Keeping the deadline in mind, get the project done so that it meets all the requirements, to the level of quality expected.

Then, and only then, ask your employer if it is okay to add new features, pretty up the design, etc. (Remember, you may not be the only person on the project. If you decide to add non-required features, someone else may need to test them, documentation may need to be changed, marketing may need to redo screenshots, etc. And each of those folks may have run out of project time.)

If your employer now says you can do more - then have fun. But often the trick is getting a system to "good enough", and then moving on to the next revenue-producing project, rather than constantly tweaking an already-complete-enough system.

  • 2
    I personally would fire a dev who added new features that were not in the requirements. THis is a seriously wrong thing to do. Making suggestions for things that might be good to add, great. Adding them without business approval bad. adding them without business approval when the requirements aren't getting completed, extremely bad. It is not your job to determine what the application does. – HLGEM Mar 7 '14 at 14:42
  • I think firing is appropraite considering how much he says he expanded the planned hours for the project. He cost his company a lot of money. – HLGEM Mar 7 '14 at 15:02
  • I really appreciate that point of view but in my case, I'm a freelancer and working for a fixed price so,I'm the only one effected – Tarek Nabil Mar 12 '14 at 0:55
1

From a workplace perspective, what you are doing is entirely unacceptable. You have been given tasks to do, you expend them without authorization to do more than was asked for, you expand the cost of the project by 3-4 times and then you don't deliver all that was asked for on time.

This is a clear performance issue and I would not be surprised at getting fired or getting a poor review, both of which you deserve.

You have to understand that from a business perspective, they are expecting the product they asked for, not the one you decided on your own to change. They are paying for the product, they have the right to decide what they need. Those requirements you are blowing off to make things prettier or to do some cool things are probably important to the bussiness, far more important than what you are spending your time on. It is a matter of priorities.

What you need to do from a workplace persopective is stop making changes without going through an approval process, stop blowing of the boring bits to do do fun stuff and start paying attentino to what the users actually need. YOu need to learn to present your ideas to the business and not to work on them at all (except for the presentation) until you have approval and then you need to elarn to discuss priorities with your supervisor on a daily basis. You should not be allowed to expand a project by 3-4 hundred percent (clearly your boss is not doing his job eaither or he would have reined you in.) THe people paying for the project deserve you to behave perofessionally and not waste their money going off in an unapproved direction.

0

If this is happening to you often (and it sounds like this isn't a one-off) the best thing for you to do is to create your own plan to track your progress through it.

If your plan says that X feature should be complete by week 1 and you're approaching the end of week 1, you know you have to get a move on. That should keep you making expected progress throughout rather than the nasty surprise near the end when you realise it's only half done.

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