Soy relativamente nuevo en el desarrollo web y todavía no he tenido que proporcionar estimaciones para muchos proyectos grandes (mi último gran proyecto fue pagado por horas sin un plazo o presupuesto estricto).
Un cliente me pide que proporcione una estimación de costo y tiempo para proporcionar una miríada de cambios a otro código de desarrollador para un sitio web (backend php / mysql).
¿Alguien puede proporcionar algún consejo o enlaces sobre cómo analizar y estimar esto? El código es horrible (el sitio web se subcontrató originalmente a la India hace años y años) y es difícil saber si voy a golpear obstáculos repentinamente y eliminar mis estimaciones del agua.
fuente
ask for 50% downpayment to begin work
... hm, ¿no es eso un poco alto? Prefiero decir 20%Solicite una tarifa por hora. No permita que se acumulen muchas horas antes de facturar.
fuente
¡Vaya ágil! No estimes un montón, especialmente si no tienes mucha experiencia en tu haber.
Recuerde, la estimación por su definición siempre es incorrecta, de lo contrario se llamaría un número ¡Es muy importante que su cliente también entienda esto!
Debes hacer una entrega incremental. Dígale al cliente que priorice las historias de los usuarios y seleccione las que se entregarán en la primera iteración. Cada iteración debe durar 2 semanas o menos, ¡pero no más de 3 semanas! Cuando termine una historia de usuario (todas sus subtareas están cerradas), notifique al cliente y pídale que la verifique mientras trabaja en la próxima historia de usuario.
No tiene que cobrar por adelantado, puede hacerlo después de cada iteración.
¡Feliz codificación!
fuente
Dado que usted es nuevo en la tecnología relevante y no está familiarizado con la base de código existente de baja calidad en la que deberá trabajar, es probable que la estimación pueda variar en cierta medida en ambas direcciones. Pero informe al cliente sobre la última razón :-P
Primero, enumere la miríada de cambios / características que su cliente ha solicitado. Para cada requisito, haga una pequeña revisión del código e investigue sobre cómo implementarlo y probarlo. Debe invertir este tiempo sin retorno antes de dar una estimación.
Segundo, haga 3 columnas para la estimación: el mejor caso (25% de probabilidad), el caso promedio (50%), el peor de los casos (75%). Por las 2 razones mencionadas en el primer párrafo, puede elegir la peor estimación de caso. Luego puede agregar incluso un 20% de tiempo de búfer. Por ejemplo, para un requisito particular, su mejor estimación de caso es de 2 días, el caso promedio es de 4 días y el peor de los casos es de 5 días. Agregando un 20% de tiempo de amortiguación, su estimación es de 6 días.
Tercero, no dé un punto fijo de estimación, sino un rango. Para el ejemplo anterior, puede decirle al cliente que la estimación es de 4 a 6 días. Su cliente puede insistir en la estimación de toda la lista de cambios. En ese caso, puede sumar los mínimos y máximos de los rangos para todos los requisitos. Luego proporcione una estimación final en rango, digamos de 5 a 6.5 meses. Esto tiene la siguiente ventaja: puede exceder la estimación para un requisito, pero puede finalizar otro requisito antes. En total, se cancelan entre sí y la estimación final se mantiene.
Cuarto, a medida que finaliza cada requisito de usuario y entrega de forma incremental, revise sus estimaciones anteriores para cada requisito. Este es un proceso continuo y debe ajustar / refinar la estimación a medida que avanza con el proyecto y su experiencia crece. Si ve que la diferencia entre su estimación refinada y su estimación inicial está fuera de control, siéntese con su cliente de inmediato y discuta el asunto.
Aprendí estas cosas del libro "Estimación de software: desmitificar el arte negro" de Steve McConnell. Le estoy agradecido
fuente
Puede cotizar un total basado en las horas estimadas de trabajo, aclarando sus suposiciones y el hecho de que se agregará cualquier tiempo adicional requerido. De esta manera, si caes (poco probable), saldrás adelante.
Asegúrese de que la calidad del código existente sea clara para el cliente. Si son razonables, deben adaptarse a la flexibilidad; de lo contrario, prepárese para alejarse.
Estaba en esta situación cuando comencé y desafortunadamente Stack Exchange no existía en ese momento. Cité un precio fijo y tuve que abandonar el acuerdo dos meses después. Perdí el dinero y quemé un puente porque no podía entregarlo.
fuente
Mira cómo lo hacen industrias similares. Un arquitecto no daría una estimación precisa de una extensión de garaje sin haber visto primero la propiedad.
Cobrarles una tarifa de investigación por su tiempo inicial. Explique que el código está en un estado en el que no puede darles una estimación precisa sin profundizar en la situación actual. Asegúrese de que obtengan algo al final, como una señal de fe, alguna documentación que podrían dar a otro desarrollador si así lo desean, para evitar que tengan que hacer el mismo trabajo.
Y luego, si es importante para usted obtener el trabajo de desarrollo real, dígales que si acuden a usted para el trabajo de desarrollo real, eliminará el 50% o incluso el 100% de ese cargo de la factura final. No se puede perder y a la gente le gusta obtener algo gratis.
fuente