1

I have been asked to help estimate the time it would take to develop a web application. I will not be involved in the actual programming, but I am participating as an "experienced" programmer. The actual work will probably be handed over to a consulting company, but the client (a university department) wants to have an estimate to have an idea of how much time and money will be needed.

We will try to break down the features to implement and then try to create some kind of grand total estimate (even though Joel Spolsky says this will not work), but I thought that these kinds of web applications have been done hundreds of times and that there must be lots of experience to draw from on one or another of the stackexchange sites.

Is it possible to answer this question:

How many hours/weeks does it generally take for an experienced programmer, using their language and framework of choice (be it Java, Ruby on Rails, or some other fairly big technology), to create a web application, given that:

  • It is fairly standard, meaning that there is a database, an administration interface and a presentation layer for the general public.
  • It is written from scratch, but there are old systems to draw experiences from.
  • The administrators (think they) know fairly well what they want.

I know this is very vague, but I am looking for your experiences:

(made up examples follow)

"We have bought these kinds of systems several times, and they generally take twenty staff-months to complete."

"Using Python and Django, I'd say most web apps are up and running in 6 staff-months, top."

Edit:

Some clarification:

  • I my question most information about this project is missing. The client has written a detailed specification draft on the system and there is also a requirement analysis based on user feedback on the old system.
  • I want to state, again, that I am looking for your experiences (see my example answers), not a quote for this system.

Thanks for all the insightful answers, though!

6
  • I just want to confirm - the client is asking you to make an estimate for software to be built by someone else, and you will not be leading the team that is actually building the software?
    – Thomas Owens
    Jun 9, 2011 at 12:01
  • Exactly. One point to be made though, is that the client has produced an initial estimate "from the air" and any estimate by any programmer will be better than that :) Jun 9, 2011 at 12:04
  • You need to get quotes from the consulting company that you will be using. I suggest you get more then one. We cannot tell you how long a project will take based on the fact, we have no idea what it will be using, different systems require different amounts of time to implement. Since this is a university project you need to get quotes anyways.
    – Ramhound
    Jun 9, 2011 at 12:41
  • @Ramhound: since this is a government founded university department (in Sweden), some regulations have to be followed, and among them is one that makes it necessary to get quotes from quite a few companies. Jun 10, 2011 at 8:50
  • @Ramhound, sorry about restating what you already wrote in your comment. I read it too quickly. Jun 10, 2011 at 9:12

5 Answers 5

5

This is almost impossible to get an accurate cost on. Outsourcing makes this even more difficult.

Just because it's fairly standard doesn't make the task of quoting any easier. For example: you mentioned there is an Administration Interface. This can be as simple as a login and password for each user or complex with users who have multiple roles and a superuser that can oversee all admin tasks. If this becomes a role based admin then the coding time has just increased exponentially.

If you are outsourcing to a foreign country I'd pad the total time and cost by 20% to account for interpretation of questions and answers between customer and coder.

As a ballpark for database driven admins we would estimate 4 hours for each base table. This allowed for table creation, insert routines, update routines, delete routines and the associated admin web pages. This also included a simple listing display page and a detail display page. If search filter queries were required then we'd add 2 more hours for that table.

We did have a lot of code we could borrow from. We also wrote some utility stored procs that helped us speed up the coding by spitting out source code. It wasn't perfect code but it saved us many hours of raw coding. We also would undercut the price if this was a widget we could turn around and resell to other clients. It doesn't sound like you can resell this to anyone else so the price they pay should be a premium.

Is there a similar Commercial Off The Shelf (COTS) system already built that you can buy? Have you even entertained the Build or Buy question?

Custom software is expensive. As long as you make the customer aware of this fact up front and they still want a custom solution, they will pay the premium price. Every time you say, "Oh yeah, we can do that" and don't say it will cost more, the customer will expect it for free.

3
  • 1
    +1 On Custom Software is EXPENSIVE! 1) It requires a LOT of man hours. 2) This is SKILLED labor making it more expensive. 3) It is knowledge based work so it is difficult to estimate. In this case the consulting company generally pads for the unknown making it even more expensive.
    – maple_shaft
    Jun 9, 2011 at 13:02
  • and @maple_shaft: +1 for mentioning the problems with custom software. In this case a COTS system has already been bought and tried. It didn't work out very well, as far as I understand. Also thanks to @Cape Cod Gunny for providing some experience (with numbers that I know I can not use just like that :) ). Jun 10, 2011 at 9:01
  • about the administration interface: yes, it will probably be role based. Thanks for the heads up on the increased coding time. Jun 10, 2011 at 9:11
5

You are not the person to be estimating and frankly, you don't even sound like you know what the project scope is. Everybody wants their cake and to eat it too, yeah I don't want to be specific about exactly what needs to occur on the project but at the same time I want to ballpark the costs to derive this hazy undefined idea.

What should be happening if costs are important is they should get at LEAST two or three quotes from different companies and make sure before you do you VERY CLEARLY lay out the project scope. Sometimes the consulting companies can help you with this. They should have the PM skills to take your scope and derive a WBS (Work Breakdown Structure) that gives a rough timeline assuming they will have all the necessary resources when they need them. Only then can they give you an estimate and a quote with any degree of certainty.

Any consulting company worth doing business with would not give you an "in the air" estimate unless they were trying to bilk you for all the money you are worth. That is an excuse for an open invitation to never quite getting done. Trust me, this has happened to friends of mine.

5
  • 1
    I see from your answer, and some of the others, that I (again) have been too unclear in my question. The scope actually seems to be pretty well defined, I just didn't share a fraction of all the details with you. I did that because I wasn't asking for an estimation of this project, but for some thoughts on how it has worked out for other clients or programmers. Jun 10, 2011 at 8:54
  • And to clarify, it was the client that provided the first "in the air" estimate, knowing well enough how off it would be. Jun 10, 2011 at 8:56
  • I am confused... unless I misunderstood your question I thought your university was the client, not the other way around. If this is the case and you have CLEARY DEFINED SCOPE then you should NOT go with a consulting company that will give you an estimate with low confidence. There is absolutely NO REASON that they can't derive a project plan or in the very least a work breakdown structure with a list of tasks and effort assigned to all tasks. Even if they are unsure of resource availability (thus affecting actual delivery date) they should tell you with confidence the effort.
    – maple_shaft
    Jun 10, 2011 at 11:04
  • Maybe I shouldn't have used the word "client" since that might imply that I am at the other end of the relation. The client is a (project manager working at a) university department. A consulting company (not chosen yet) will do the work. I am called in to help doing a time estimation to help fund the project. Before I was called in the project manager just guessed how much time this would take, but a better number is needed. Sorry about the confusion. Jun 10, 2011 at 11:37
  • 1
    @Peter - Why don't you discuss this with a professor from the Computer Science department. It sounds like this would be a perfect "real world" example that could be developed as a class project instead of some make believe real world project. Jun 10, 2011 at 12:37
5

How many eggs does it take to make a really big omelette?

Well, it depends on how big an omelette you want, doesn't it? And because I don't know that, I can't tell how many eggs you need. And the same applies to your question.

And even if I did know the details of this web application, I would still be very, very, very careful. Scope creep is chomping at the bit at every corner. Users discover needs they weren't even aware of they had. And the list goes on...

EDIT There is another possible approach to the dilemma, and in fact the correct agile approach. Ask the future owners what this application will be worth to them. That's your starting budget. And then you promise them that for every single dollar/pound/euro in that starting budget they are going to get delivered the next most important thing on the list of possible features. When the money is spent,they will have maximised their investment, and they can then make a decision to stop or to go on.

5
  • 3
    It also depends on the size of the eggs and the average ratio of bad to good eggs. Jun 9, 2011 at 12:45
  • wolfgangsz: Yes, of course you are very right, but my question was more along the lines of "how long did it take for you?", not "how long will it take for us?". But that doesn't necessarily make it easier, I know. And it would take about 20 eggs to make a really big omelette for me :) Jun 10, 2011 at 8:53
  • OK, have a look at latrix.sourceforge.net, that's a web application I wrote a while ago for me previous company (but as a private GPL project). I was on my own, no outside help at all, and in total I took me probably about 6 man-months solid work to build. Does that help you in your situation?
    – wolfgangsz
    Jun 10, 2011 at 9:22
  • Yes, thanks! (latrix.org.uk is dead, though.) Jun 13, 2011 at 10:34
  • Yes, I know. The server died, and I haven't had time yet to rebuild that site.
    – wolfgangsz
    Jun 13, 2011 at 10:36
4

My friend - you have a Dilbert cartoon in the making. You (Dilbert) have been told to estimate something that has no defined scope and, from how it sounds, really no business owner except some IT folks who say they know what they want.

Your pointy hair boss has given you directions of simply "Go" and you really have no where to turn. You need to call someone better than the Dogbert consulting company - someone who will sit down and help gather requirements and put some sort of framework around this big lump of goo that you've been handed.

OK...I've intentionally made it sound rediculous, but frankly, you've been set up to fail - probably even with good intentions. There is a lot of good advice above - follow it! Get some good quotes from reputable consulting or project managment firms, or at the very least INSIST on a good chunk of time to gather requirements and put some definition around this thing. Only then can you get somewhere in the ballpark - THEN use good estimating techniques and definitely include contingencies.

Good luck!!

2
  • It is frightening how similar this is to a Dilbert comic O_o
    – maple_shaft
    Jun 9, 2011 at 13:27
  • Haha! +1 for the laugh. -1 to me for not being clear enough. I have much more information about this project than I have provided here, but that is because I am not asking for your estimate on my project. I'd like some subjective sharing of experiences, if that is possible. :) Jun 10, 2011 at 9:03
1

I'm going to go as far as saying that it would be unethical for you to give any kind of estimate in this situation.

A number of factors play a role in the estimate: the process used, the tools and technologies used, the development team, the scope and requirements of the project...the list goes on. Because you aren't leading (or even on) the team developing this software, you have no knowledge of any of these factors, aside from perhaps the initial requirements. Unless you have all of the facts, you'll just be pulling numbers out of thin air.

Another thing to remember is the Cone of Uncertainty. Not having all the information is bad enough, but even with the initial information, an initial estimate will be between 25% and 400% of the actual cost. Anything that any estimator says so early in the project will have huge variances that can only be refined as the project goes on, requirements become more concrete, and decisions are made.

Depending on the project, the Project Management Triangle also plays a role. The three constraints on a project are cost, scope, and schedule. A client can, at most, control two of them. It's not possible to set all three - choose the two that are most important and control them.


The correct course of action in this instance is for the organization that wants the software to begin working on their requirements to present to the organizations that will be constructing the software. The organizations can assess these requirements, ask questions and get more details, and use their internal tools, techniques, and processes to build an estimate of cost and schedule of building this system. It becomes a back-and-forth on the Project Management Triangle to get the software that is needed at an appropriate cost within the best timeframe.

0

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.