¿Cómo puedo estimar cuánto tiempo tomará un proyecto? [duplicar]

7

Estoy trabajando como desarrollador web y quiero poder determinar si soy eficiente.

¿Esto incluye el tiempo que lleva realizar tareas como:

  • Código del lado del servidor para la lógica del sitio con un idioma o múltiples php, asp, asp.net.
  • Código del lado del cliente como javascript con jquery para ajax, menús y otra interactividad
  • Diseño de página, html, css (color, fuentes (¡pero no tengo sentido artístico!))
  • Las necesidades del sitio y cómo funcionará (planificación)

¿Cómo puedo juzgar cuánto tiempo tomará completar un sitio web?

El sitio tiene CMS para agregar y editar noticias, productos, artículos sobre la experiencia de la empresa. Además, pueden editar el trabajo en equipo, agregar actividades recreativas y una galería de logotipos con descarga psd comprimida, y enviar mensajes a cpanel y al correo electrónico.

Estás empezando desde cero, excepto JQuery y PHPmailer.

¿Cómo puedo estimar cuánto tiempo tomará el trabajo y cómo puedo calcular el tiempo requerido para finalizar cualquier proyecto nuevo?

Lo siento por muchas preguntas dispersas, pero estoy en mi primer experimento y quiero aprovechar la gran experiencia de quienes la tienen.

    
pregunta ahmedsafan86 10.02.2011 - 15:26

8 respuestas

10

Hay mucho que decir sobre los requisitos detallados. Todo el mundo odia la creación de documentos de requisitos, pero son un mal muy necesario. Dicho esto, he manejado muchos proyectos de software a lo largo de los años y tengo algunos métodos que he hecho que hacen que sea mucho más fácil de estimar.

Personalmente no puedo decir lo suficiente sobre Microsoft Project. Existen herramientas gratuitas con capacidades similares, pero MS Project es, por lejos, mi favorito. Independientemente de la herramienta de gestión de proyectos que elija, estas metodologías deberían aplicarse aún.

  1. Cree una lista de tareas de alto nivel (CMS, diseño del sitio, codificación personalizada, etc.).
  2. Comience a agregar sub tareas y grupos de sub, sub, sub tareas desde el nivel superior.

En última instancia, lo que buscas aquí es entender todo lo que implica. No obtendrá todo, inevitablemente se perderá algo, etc., pero ese no es el objetivo del ejercicio. A medida que realiza una lista de todas las tareas que deben realizarse (escriba cosas como Research X, Test X, etc.), descubrirá tareas en las que nunca pensó mientras realizaba. Piense en todo lo que debe hacerse, desde la planificación hasta la construcción, la prueba y la migración al cliente.

Una vez que tenga todas las tareas pendientes, puede comenzar a estimar el tiempo necesario para cada elemento. Sus tiempos son una suposición acertada, asegúrese de rellenarlos con un 20-40% (o más) más de lo que cree que tomará. La herramienta de gestión de proyectos que utilice debe tener un concepto de "Predecesores" o similar. Esto le permitirá vincular las tareas e indicar qué tareas requieren que otras tareas se completen primero.

Ahora que tiene tareas, estimaciones de tiempo y predecesores, su plan de proyecto puede "comenzar" para estimar una línea de tiempo para usted.

La gestión de proyectos tiene esencialmente dos conceptos principales. Ya sea A, la fecha límite del proyecto debe dictar la línea de tiempo o B, las tareas del proyecto deben dictar la línea de tiempo. Estoy MUY en el campamento B. Muchos tipos de MBA y "contadores de frijoles" intentarán indicarle cuándo el proyecto está "Vencido". También analizarán su plan y dirán "si ponemos a 5 desarrolladores en la tarea X, se hará en 1/5 del tiempo". Estas teorías son completamente inutilizables en un mundo de desarrollo de software. Si bien en algunos casos se puede emplear un concepto similar, generalmente es una receta para el desastre. Imagina a 5 personas intentando modificar el mismo archivo simultáneamente. Caminarán uno sobre el otro e incluso las herramientas de administración de código fuente más avanzadas quedarán muy cortas.

Bien, ahora tienes una "estimación". Sí, es difícil, no, no está completo y sí cambiará (retroceda y agregue más tiempo de relleno ahora). Probablemente, también mirando la fecha de finalización y pensando en sí mismo, el cliente / jefe se volverá loco cuando vean cuánto tiempo tomará. Aquí es donde haces una pausa y respiras profundamente. No solo ha pensado detenidamente a través de lo que tomará este proyecto, sino que ahora tiene detalles documentados sobre POR QUÉ llevará este tiempo. Si quieren disputar el tiempo, tienen que ir tarea por tarea para "recortar" el tiempo. He encontrado en el 95% de los casos que no tendrán ningún interés en hacer esto. También comprenderá (en sus mentes) claramente lo que se debe hacer y se lo considerará un "experto" al hacerlo, ya que tiene un plan detallado que muestra lo que se necesitará.

Notas: Asegúrese de realizar tareas con estimaciones en horas en las que pueda. Es difícil disputar que algo llevará 8 o 10 horas. Si pones 1 día empiezan a tratar de negociar. Habrá tareas que tomarán semanas y meses, solo póngalas como tales y esté preparado para explicar por qué. Si puede, divida esa tarea en sub tareas más pequeñas en horas / días.

Espero que ayude! Daniel .....

    
respondido por el Daniel Knoodle 10.02.2011 - 17:39
14
  

¿Cómo puedo juzgar cuánto tiempo tomará completar un sitio web?

     

¿Cómo puedo estimar cuánto tiempo tomará el trabajo y cómo puedo calcular el tiempo requerido para finalizar cualquier proyecto nuevo?

No puedes.

Invente un horario con el que se sienta cómodo.

Lo mejor que puedes hacer es hacer pequeños entregables (semanalmente, cada dos semanas) y tratar de adivinar cuántos de ellos.

    
respondido por el S.Lott 10.02.2011 - 16:49
3

Creo que las prácticas de estimación ágil son las más precisas. La razón por la que tiene éxito es porque se basa en estimar características en una complejidad relativa, y luego combina eso con la capacidad medida real.

Una buena introducción es esta presentación en dos partes de Mike Cohn: Parte1 Parte2 . Son aproximadamente las 1:30.

    
respondido por el Pete 10.02.2011 - 18:06
3

Joel sobre la programación basada en la evidencia

  

Durante el último año, más o menos, en Fog Creek hemos estado desarrollando un sistema que es tan fácil que incluso nuestros desarrolladores más gruñones están dispuestos a aceptar. Y por lo que podemos decir, produce horarios extremadamente confiables. Se llama programación basada en evidencia, o EBS. Recopila evidencias , principalmente de datos históricos de la hoja de tiempo, que retroalimenta en sus programaciones. Lo que obtiene no es solo una fecha de envío: se obtiene una curva de distribución de confianza, que muestra la probabilidad de que se enviará en cualquier fecha. Se parece a esto:

     

     

Cuanto más pronunciada sea la curva, más confiado está de que la fecha de envío es real.

     

Así es como lo haces ...

    
respondido por el k3b 10.02.2011 - 18:26
1

Probablemente no pueda hacer esto de manera racional, especialmente para un proyecto completamente nuevo.

Consulte: Grandes límites para la estimación de software Material de apoyo: Límites matemáticos para la estimación de software

En esencia, la estimación se reduce a la experiencia. Va a estimar con mayor precisión para el nuevo trabajo en una base de software ya existente. Va a estimar con menos precisión para el nuevo software. De vez en cuando, subestimará o sobreestimará en gran medida.

    
respondido por el Bruce Ediger 10.02.2011 - 17:05
1

Recuerde, ellos llaman a las estimaciones por una razón. Define tareas y comienza a seguir tu trabajo. Probar y desarrollar algún tipo de línea de base. Luego practica hacer estimaciones y prueba la precisión.

No está seguro de cómo puede compararse con otros, pero al menos puede intentar mejorar su tiempo de desarrollo y capacidad de estimación.

    
respondido por el JeffO 10.02.2011 - 19:07
0

Necesita requisitos que estén más al horno para dar una estimación precisa. Usted o un licenciado deben ubicarse con el cliente para determinar lo que desean al elaborar los puntos que ha enumerado anteriormente. Siéntese y piense en una lista de preguntas para cada uno de los anteriores para que pueda entrevistar al cliente. Basándose en sus respuestas, debe comenzar con un diseño aproximado y desglosar sus tareas al nivel más bajo posible de granularidad. Hasta que pueda desglosar cada tarea a 16 horas o menos, debe asegurarse de que el cliente entienda que su nivel de confianza en las estimaciones es del x%, lo más probable es que el 70% comience, pero esto vendrá con la experiencia.

Una vez que haya dividido sus tareas a las mágicas 16 horas o menos que mencioné anteriormente, debería poder dar una estimación precisa. Tenga en cuenta que cuando comience, apestará al estimar. Debe realizar un seguimiento de lo que estimó en cada uno de sus proyectos para que pueda continuar mejorando. Si se olvidó de una parte importante de la funcionalidad en una estimación, entonces debe recordar eso cuando esté reuniendo estimaciones futuras.

El desarrollo web ofrece un nivel de incertidumbre, los clientes tendrán sus propias preferencias personales en cuanto al estilo de la página y conseguirlo puede resultar difícil. Debe tener eso en cuenta, cuando revisen su trabajo, debe estar listo para decirles qué se necesita para lograr los cambios que han solicitado. La estimación de un solo proyecto debe ser un proceso interactivo en el que su confianza aumente con cada iteración.

    
respondido por el Shane-o 10.02.2011 - 17:13
0

La práctica ayudará. Las primeras veces que lo hagas, lo harás realmente mal, pero si intentas entender lo que hiciste mal cada vez y aprendes de ello después de un tiempo, lo harás bien. (O cerrar el negocio porque sigues cobrando menos a la gente)

    
respondido por el Zachary K 10.02.2011 - 18:11

Lea otras preguntas en las etiquetas