Click here to Skip to main content
15,889,200 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Please I have this problem that I need help. When there is a software project that I want to start, I realize that several features come to mind. And sometimes some of those features take more time to implement. before I realize, time is wasted and sometimes customers say I was late so they contracted someone else to do it. My question is 1. what should I do to meet the set time frame right from start to end (before coding starts and ends) 2.Most users don't know there may be huge code at the back of a button so they say "this is just a matter of doing this or that ..." So how do I convince customers to understand the complexity of the project. thanks in advance.
Posted

Being able to estimate the necessary time to complete a project is an acquired (learned) skill. It involves several "intelligences" (I use that word in the context of Daniel Goleman's work in psychology looking at "intelligence" as having several discrete components ... which, of course, "overlap" in any individual):

1. your technical intelligence: your own technical knowledge and mastery of the tools you use.

1.a. your pragmatic technical intelligence: the wisdom (yes, I call it "wisdom") you have acquired based on direct experience coding and in implementing solutions that may be similar to a given client's requirements.

2. your emotional intelligence: your ability to negotiate effectively with a client. your abilities to detect subtle cues in communication which lead you to form an accurate, or useful, sense of who the client is, and the extent they "know what they really want."

2.a. your social communication intelligence: to accurately engage to produce a clearly understandable working specification and milestones for development.

3. your analytic intelligence: this might include:

3.a. your ability to do "due diligence" in researching all the background factors that might come into play which could delay, or impede, or prevent, completion of a project.

3.b. your ability to recognize (or predict) hitting bottle-necks in the project which might cause delays, or to accurately inform the client ... a discovered ... where the time to complete cannot be estimated without further experimentation.

Of course, there are many more factors that can, could, and do, come into play here. Mistakes will be made by both you, and client. Misunderstandings will occur. Unpredicatble technical issues may arise because you are using a new OS, or new dev tools.

The client's irrationality (or greed) may come into play here, as well as your own.

imho, the better strategy is to "nail" the spec in the beginning, and get the client to sign-off on a series of milestones for steps in development.

If you can't predict project completion until you do some prototyping, the client needs to understand that.

The issue of (the client saying): "couldn't you just add this feature: ..." is always going to arise :)
 
Share this answer
 
Comments
George Jonsson 17-Nov-15 19:58pm    
Good points.
I think "nailing" the spec is one of the most important things.
As you have already got plenty of good advice I will just emphasize on one thing; The Specification.
Having a solid specification that both you and your client has agreed upon will help you in several ways.
A spec will help you to:
1. estimate the time it will take (which you then multiply by PI to have a buffer)
2. force you to think about all the little details that will come back in bite you in the ...
3. avoid discussions about extra features that the client thought should be in there.

And if the client wants another feature added you can update the spec and it will be easier to say that "Oh my, this means a lot of extra work"

Here is a good article series about how and why to write a specification.
Read it :-)
Painless Functional Specifications[^]
 
Share this answer
 
v2
Comments
Patrice T 17-Nov-15 20:41pm    
+5
George Jonsson 17-Nov-15 21:19pm    
Thanks
Accurately estimating time needed to make a program is a skill you will acquire with experience.

In between a few things can help you

I use this software ToDoList 7.0.8 - An effective and flexible way to keep on top of your tasks[^], it is a hierarchical ToDoList, it means you can cut a task in as many subtasks as you need and on as many levels as you need.
The forum is very active if you need help.

Principle:
Make a main task for your project
make a sub-task per functionality (from the user point of view)
on next level enumerate the internal features you need to create that functionality.
assign estimates when the subtask is clear enough or subdivide again if you need.
All your estimates will be collected to the main task, it is your estimate for the project.
As the project advance, you check the subtasks advancement and report real time spend.
 
Share this answer
 
Comments
Matt T Heffron 17-Nov-15 19:29pm    
Sounds like a "personal scrum backlog" ;-)
I don't know what kind of answer you're looking for, really. I mean, what can anyone say that isn't obvious? I guess it comes with experience, but when taking on a job you must have a realistic idea of how long you will need, and make sure the client understands this. If they want it done sooner, turn the job down and it's their problem to find someone else.
But, to borrow a phrase from carpentry: measure twice, cut once. In other words, before committing to anything, you and the client must both be quite sure what the job is. Often, clients don't really know what they want. "We want a website", they might say, for example, but haven't really thought through what they want from it. It is up to you to help them - you and they must meet as often as is necessary in order for you both to know exactly what is wanted. And during these discussions, as things become clearer, you'll be able to form an idea in your mind about timescales, or what you can realistically do in the timescale they want. You may be able to negotiate leaving certain features out for a "Phase 2" at a later date, if you think they'll be too time-consuming. Likewise, if the job spec is clear from the start, then if they later want another feature added you are in a position to negotiate more time to complete it, or more pay (if it means working extra hours.)
So, the short answer to your question is: be clear from the start. Take time before you start to understand the job thoroughly, and ensure the client understands it too. After that, you just have to get down to it - if you've underestimated the work, tough - work harder, and learn your lesson. I've found that while there is truth in Parkinson's Law - "work expands so as to fill the time available for its completion" - you can read this too to mean that you can do the same job in a short time if you really have to!
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900