This is a common lament in the #Noestimates community
We've never done this before, so how can we possibly estimate how long it will take?
Well the first question is has it actually never been done before, or is the real question is have YOU never done it before? If the work has truly never been done before by anyone, anywhere on the planet, then it's probably going to be hard to estimate. But if the solution has been done before, this brings up the big question for those paying to have the development done, why would they hire someone that has no prior experience providing solutions in the problem domain?
Let's assume you have prior experience in the problem domain, but the solution is not readily at hand. This means the solution actually has to be engineered. This is the role of the well developed process of producing the engineering basis of estimate.
Let's start with the notion of Reference Classes. Here's some databases of projects that can used as Reference Classes used to frame the boundaries of the estimating processes for what you may consider new and never before seen work, but in fact has been done by someone else.
-
Nederlandse Software Metrieken Association - www.nesma.org
-
International Software Benchmarking Standards Group - www.isbsg.org
-
Common Software Measurement International Consortium - www.cosmicon.com
Next is the notion that every graduate student in almost any discipline - mine was Physics - is taught in the first year of grad school. When you have an idea, go first and check that some one hasn't already solved the problem. This starts with a literature search. This is a simple problem to solve in 2016. It's called Google. In 1975 it required weeks is long days in the library looking through journals and books in the Physics Library UC Irvine. But before anyone says This is a new and innovative problem and I can't possibly estimate how long it will take. Do your homework and go see if that is actually the case.
When we hear - how can I possibly estimate what I haven't done before? There are more steps to go before answering I can't
- Have you developed a process architecture for what you want done from this software? Is this process architecture in the form of some swim lane diagram?
- Have the system elements been partitioned and their interfaces defined at the data and process level. This definition can be high level to assess coupling and cohesion issues that will drive up cost?
- Have Use Case's been developed for the system functions? Have the common actors, processes, and data been identified?
This list goes on for awhile. But when I hear I can't possibly estimate something that I haven't done before, it begs the question ...
Do you know what Done looks like in units of measure meaningful to the decision makers?
No? then no wonder you can't put upper and lower bounds on any estimate of effort - you don't even know what the customer wants and most importantly you don't know what the units of measure are for what done looks like.
Go find those answers and them you'll have a clearer idea of what the problem is and possibly how to solve it.