views:

113

answers:

8

I am about to embark on an epic journey of Web development. Epic for myself, that is. The biggest and most difficult one yet. The rough thing about this project is the time involved. My boss wants me to put this project on a schedule, but I just have no Idea how to do this.

So, could someone give me an advice: how should I calculate the time involved in developing a web project? I have the following means thought of:

  • Per code lines. Setting a specific amount of time per code line, and then try to account for the total amount of code needed.
  • Per piece of website. Trying to define pieces of the project that can be put on a concise amount of time
  • Trying to guess the whole amount it would take.

Could someone give me some advice?

A: 

I think you need to break the project into as small tasks as possible, and then estimate each task!

code-zoop
+1  A: 

Here is an over-simplfied version:

  • Gather requirements.

  • Group into Features

  • Break each feature up into tasks. Ideally a task should be no more than 4hrs in estimated length.

  • Add up the hours

Mitch Wheat
Don't forget: Increase timescale by one order of magnitude ;)
_NT
@_NT : shouldn't be necessary, if you identified all features and ensured tasks are small 'enough'
Mitch Wheat
[Hofstadter's Law](http://en.wikipedia.org/wiki/Hofstadter's_law): "It always takes longer than you expect, even when you take into account Hofstadter's Law."
David Murdoch
A: 

What you could do is divide your project into features, based on scenarios of usability, that you need to implement. Then think about how you would implement each of the features. Think about architecture and requirements. It would be nice to put them on the paper. Then think about the time it will take you to implement it. Then think about time required for you to test it - remember about QA requirements. Then think about the time you would need to spend on stabilizing it (fixing critical bugs breaking main scenarios). Then think about the time that you will spend on meetings with your peers/bosses/stakeholders. Then identify the biggest problems and threats that you can forsee and add some time for that. Then add sometime for something that you did not think of would happen. Then take all this and multiply it by 2 and still pray to the gods of good fortune and happines that you will make it on schedule and that your boss will not cut it. :) If he says it will take too long you may suggest cutting some of the features to be implemented in the next release.

Zwirek
+5  A: 

Break your features down into discrete pieces or milestones. Once you have that, each piece will be easier to estimate. Don't forget to take into account integration and system testing. And keep in mind that you'll need to factor in time to debug and fix bugs.

Forget about lines of code. In any case, you won't know how many lines of code you'll need until you are done, among other reasons why this metric won't tell you anything useful.

NinjaCat
A: 

Gather the requirements and ask someone who has done someting similar and let him do the estimation. If you don't have anyone then it's impossible to estimate.

Another thing: Specify some milestones e.g. what will be done when. Like this you will know if your on track or not and be able to warn your bose if you might need some more time or if it won't have all features.

MadMike
If you have to give an estimate for something you haven't done before, first do some prototype coding and figure out exactly how you'll do it, then provide an estimate based on that. Asking someone else to do the estimate is too big of a risk. You may be held to an estimate you didn't make and couldn't verify.
Joeri Sebrechts
+1  A: 

Wow, that's a hard question to answer succinctly... whole books have been written on the subject, and I'd advise you to read one of those -- try Software Estimation by Steve McConnell. That's bound to give you a more solid background than anything that would fit in a SO answer.

Martin B
A: 

Try to find some experienced or involved people and play planning poker. Also available online

K. Claszen
+1  A: 

I think everyone that have answered you is right.

But I would like to be clear, there are methodologies that you can use in order to improve your development, because believe it, you can loose MANY time just trying and trying to make some order without success (...experience...). Between software-design methodologies, I'll recommend you:

TAO: http://www.canonical.org/~kragen/tao-of-programming.html

There are also frameworks for managing agile development, one is SCRUM, and I love it. http://en.wikipedia.org/wiki/Scrum_(development)

We use at work some of the RUP tools (just the basic ones, to make some order), plus a personalised FDD+XP+SCRUM method.

Also please start with a good programming-language framework, like CakePHP, DJango, Ruby On Rails, JQuery etc (There are A-LOT), most of the frameworks are based on MVC (Model-Viewer-Controler) which is a very productive architecture that will help you to work with modules and easy expand the size of the project.

sadasant