Depende de la complejidad del software. Es posible crear un software que haga algo interesante en sólo uno o dos días. Ludum Dare es una competición en la que la gente crea un juego original desde cero en sólo un fin de semana, y las propuestas ganadoras consiguen ser jugables y divertidas a pesar de esas limitaciones de tiempo. Sin embargo, el software comercial suele tardar más en el rango de "meses a años" antes de que alguien sienta que vale la pena su dinero.
Si se intenta estimar con antelación cuánto durará un determinado proyecto de software, entonces muy a menudo la respuesta será "más de lo esperado", ya que los proyectos de software son conocidos por no estar hechos a menudo en el tiempo que se planeó para ellos. La razón es que una parte importante del tiempo que se tarda en crear un software se dedica a cosas inesperadas: errores, dificultades técnicas, requisitos que cambian repentinamente a mitad de camino, etc.
El primer 90% del código representa el primer 90% del tiempo de desarrollo. El 10 por ciento restante del código representa el otro 90 por ciento del tiempo de desarrollo.
- Tom Cargill (atribuido)
Pero este problema de no saber cuánto tiempo se tardará en construir el software puede evitarse no teniendo una fecha de finalización del proyecto en absoluto. Recientemente, gracias a la capacidad de transmitir actualizaciones de software a través de Internet, la entrega continua se ha hecho popular. En lugar de crear una pieza única y pulida de software y grabarla en un CD-ROM, se pueden priorizar las características deseadas del software para crear un producto lo más pequeño posible que siga siendo lo suficientemente bueno para ser lanzado como primera versión. En cuanto se completan estas características, el software se lanza, tras lo cual se actualiza automáticamente cada pocas semanas con una nueva versión que contiene nuevas características y correcciones de errores. ¿Significa esto que este tipo de software tarda unos meses en construirse (para la primera versión) o varias décadas (si ese es el tiempo que el equipo que trabaja en el software acabará lanzando nuevas versiones)? Tú decides