¿Cómo estimar el esfuerzo de desarrollo al proporcionar el documento de arquitectura de la solución?

Cada vez que un nuevo cliente potencial nos contacta con una idea de una aplicación móvil o un proyecto de aplicación web en la mano, ya es un pequeño éxito. Sin embargo, está lejos de ser una victoria, ya que tomará mucho más que simplemente comunicarse y responder para que el producto funcione. Todo el valioso tiempo dedicado al esfuerzo genuino para desglosar la idea del producto y estimar los términos y el costo podría desperdiciarse a menos que la presentación estimada sea acertada.

Los clientes generalmente confían en que cualquier equipo suficiente es capaz de construir su producto digital y todo lo que se necesita es la química correcta, la comprensión mutua y los precios asequibles cuando, de hecho, no todos los proyectos son los correctos y no todos los equipos son perfectos para ello. .

En la era de las interacciones instantáneas, tiene mucho sentido que un cliente y su empresa lleguen a un acuerdo rápido: le dicen lo que quieren, usted les dice cuánto costará y está listo para un gran comienzo. Aquí es donde surge el primer desafío crucial para el proyecto.

Si no descifra el alcance del proyecto correctamente, terminará dando una estimación erróneamente baja. Por el contrario, si juegas de manera segura y obtienes un presupuesto extravagante, te arriesgarás a que un cliente se aleje de ti.

Lo único que puede molestar al propietario de una startup desde el principio es el escepticismo de los demás de que nunca funcionará o costará un billón . Un emprendedor digital experimentado suele ser realista al respecto, pero para otros, es importante iniciar la conversación con algunos dígitos. Es por eso que tratamos de hacer una estimación visual lo antes posible. Es importante ser honesto con un cliente y conocer sus capacidades también.

Capacitamos específicamente a nuestros gerentes de proyecto para que tengan olfato para el arrastre de características y la selección de la metodología de desarrollo en el punto en función de los pequeños fragmentos de información que obtienen de un cliente potencial de inmediato. Esto nos permite dar estimaciones aproximadas que resultan ser correctas 9 de cada 10 veces. Si la aplicación parece un proyecto de $ 10K, decimos que es un gran proyecto de 10, pero necesitamos más detalles y un poco de tiempo para armar el precio final. Y sin embargo, este no es el veredicto. También podemos ofrecer un programa de inversión de código, una copropiedad o (rara vez) incluso tenemos un acuerdo de caballeros y un pago retrasado.

La estimación aproximada con cifras de estadio ya es un alimento tangible para el pensamiento. Los números y las opciones ponen en marcha al cliente y, en este punto, puede saber si se toma en serio su proyecto y podemos seguir trabajando con esas opciones.

Para que el proyecto tenga un buen comienzo, a ambas partes les debe gustar genuinamente y confiar en ser la elección perfecta el uno para el otro. Una buena manera de llegar allí es evaluar la información y las habilidades y elaborar una declaración del proyecto.

Para esto, se deben abordar los siguientes puntos importantes:

  • Cuánto quiere / puede / gastará el cliente en el producto en su estado final.
  • Cuáles son los objetivos mínimos y máximos del producto.
  • Lo que quieren que sus clientes logren usando el producto.

Con esta información, puede decidir si vale la pena asumir el proyecto y si tiene lo que se necesita para construirlo. Según nuestra propia experiencia, muchos clientes se acercan a un equipo de desarrollo con poca o ninguna experiencia técnica y es importante presentarles la tecnología de la manera más fluida. Evaluar las características de sus productos digitales haciendo referencia a las tecnologías utilizadas para implementarlos es una excelente manera de enseñar las cuerdas.

Cuando el cliente acepta la estimación aproximada y es positivo trabajar con nosotros, la rutina comienza para nosotros. En este punto, tenemos que llegar a una estimación característica por característica y hacerla para que no permita mucha fluctuación. Dar una estimación detallada requiere una comprensión sólida de la filosofía del producto, la mentalidad y las aspiraciones. Cuanto más profundice el producto en este punto, más espacio reservará para el desarrollo en el futuro. Además de eso, si demuestra la verdadera comprensión de las características y elementos del producto, el cliente tendrá más confianza en usted y una mejor oportunidad para supervisar el proyecto. Si el precio sube más que la estimación inicial, será más fácil para un cliente soportar ese número si sabe qué y por qué se le cobra.

Como prerrequisito viene el conocimiento profundo de la experiencia y la dinámica de la carga de trabajo de sus equipos de diseño y tecnología.

Sin embargo, enumerar características no es suficiente. Cada uno de ellos detallado en términos técnicos es solo otra línea en el presupuesto para un cliente. Para darles sentido, debe resaltar los beneficios detrás de cada característica y qué hacen exactamente para su negocio. Este es un enfoque transparente que dará como resultado una mejor evaluación y priorización y el proyecto no terminará con un montón de características interesantes implementadas en lugar de las correctas.

Una aplicación web o una aplicación móvil solo se inicia una vez que se hace. Entonces, no es la aplicación en sí la que es el producto final. Es la capacidad de la aplicación para generar ingresos que tiene que estar dirigida a cada paso del ciclo de desarrollo del producto.

Todos estos aspectos son imposibles de cubrir en una cita de una oración que la mayoría de los clientes potenciales quieren de inmediato. Podemos dar una cotización de alto nivel con un número aproximado, pero para que una estimación sea representativa de nuestro enfoque, recomendamos encarecidamente a nuestros clientes que esperen hasta que presentemos una Propuesta de Proyecto.

Una propuesta de proyecto es un animal diferente. Lo hacemos en forma narrativa, demostrando la profundidad de nuestra comprensión del proyecto y con la mayor transparencia posible de nuestro proceso. Esto no es una factura, es una secuencia de comandos con costos de tiempo y dinero presentados junto con los resultados que buscamos lograr.

Este formato permite que cada tipo de cliente encuentre la información exacta que necesita sobre la estimación. Los interesados ​​generalmente en números obtendrán sus números. Aquellos que son nuevos en el juego, necesitan un recorrido confiable de su desarrollo de productos y también lo encontrarán.

Estamos realmente interesados ​​en que nuestros productos funcionen de maravilla después del lanzamiento, por eso nunca aceptamos los proyectos de los que no sentimos que podamos tener un éxito del 100%.

Al mismo tiempo, confiamos en nuestros clientes en su capacidad para crear una gran idea y necesitamos la misma confianza en nuestra capacidad para implementarla. Una buena estimación ayudará a establecer este tipo de relación. ¡Apúntanos con tu idea de aplicación web o móvil y veamos hasta dónde podemos llegar!

Hay muchísimos métodos. Sin embargo, voy a ser controvertido y decir que no al menos no a ese nivel 🙂

El problema no es tanto la idea de la estimación. Para algunos que dicen esto, se trata más de cómo la gente lo toma por ellos, pero para mí, es más que lo grande será significativamente más inexacto que lo pequeño. Este es un problema conocido, ya que la desviación estándar de las tareas más grandes siempre es mayor que las más grandes.

Aquí hay un gráfico de algunos datos que grabé en 2013 que tuve en segundo plano durante un par de años. Esta primera iteración se basa en la cantidad de historias entregadas por equipos (en rojo) que también normalicé (en azul).

Lo primero a tener en cuenta es que la forma de los gráficos. Esta curtosis significa que el R cuadrado es muy bajo, lo que significa que lo que sea que calcule, incluso teniendo en cuenta un conjunto de datos distribuido normalmente, no será necesariamente preciso.

La segunda cosa a tener en cuenta es el “ancho” de la curva azul en relación con la media (donde la posición del pico cruza el eje X horizontalmente). Las tareas más grandes tienen desviaciones estándar mucho más amplias en relación con sus medios. Divida esa desviación estándar por sus medios y obtendrá lo que se conoce como el coeficiente de variación (CV). Las cosas más grandes tienen un CV más grande que las cosas más pequeñas, lo que básicamente significa que las cosas más grandes saldrán por mucho más. Por lo tanto, siempre segmente el trabajo a lo largo de las verticales y manténgalo pequeño.

¡Los humanos no pueden estimar!

Hay un juego que juego con el público cuando di charlas sobre la incertidumbre de domesticación. Todo lo que la gente tiene que hacer es contar los puntos rojos que puse en el proyector con un temporizador durante un período de tiempo fijo. Los puntos varían en número y disposición. Lo que ves cada vez es que números más pequeños o arreglos familiares de puntos las personas cuentan muy fácilmente. Grupos más grandes e irregulares no lo hacen. Siempre están mucho más lejos con grupos más grandes que en grupos más pequeños.

Sin embargo, eso es solo la mitad de la historia. La otra mitad es que si simplemente cuenta el número de personas en la audiencia que están fuera cada vez, obtendrá la misma forma de gráfico, pero por supuesto con diferente magnitud. Las correlaciones son ciertamente lo suficientemente fuertes como para que sean tratadas tan bien como lo mismo. De hecho, si ya ha estudiado temas de ingeniería difíciles, esto no será nuevo, ya que incluso los sofás, aspiradoras, resistencias, dispositivos electrónicos, etc., tienen un tiempo medio de falla.

Por ejemplo, los discos duros tienen un tiempo medio de falla de más de 1 millón de horas. Sin embargo, 1 millón de horas son alrededor de 114 años, momento en el cual supongo que la unidad podría estar un poco obsoleta 🙂 Los fabricantes de unidades ejecutan muchas unidades, digamos 5,000 unidades continuamente durante un período fijo de tiempo, digamos 3 meses. Simplemente cuentan el número que falló en ese tiempo y determinan los porcentajes de falla en el conjunto en ese tiempo fijo para obtener el tiempo para que falle una unidad.

Las estadísticas, el tema matemático apropiado, son terriblemente buenas de esa manera 😉 Aquí es donde creo que la brigada #NoEstimates debería enfocar su esfuerzo. Desafortunadamente, después de haber seguido y participado mucho en esas conversaciones en los últimos años, siempre están demasiado ocupados enfocándose en algo absolutamente incorrecto. Sin embargo, la estimación no es mejor si la planificación de los buscadores permite que las personas hablen a otras personas de sus estimaciones, ¡ya que eso es una manipulación directa de los datos sin procesar! La gente siente que es un tamaño relativo por una razón. ¡No lo estropees, pero tampoco olvides que es una estimación y, debido a la variación, mantén sh * t pequeño! 🙂

Hay varias formas de estimar los requisitos en los proyectos. La forma ideal de estimar los requisitos sería una que sea:

  • 100% correcto (es decir, el esfuerzo estimado y efectivo está muy cerca)
  • Realizado en un tiempo razonable
  • No varía debido a la experiencia / experiencia personal del desarrollador.

Existen varias técnicas como Delphi, Planning Poker, Análisis de casos de uso o Estimación de estructura de desglose de trabajo. Todas estas técnicas tienen fortalezas y debilidades.

La decisión de cuál tomar debe tomarse en función de la situación del proyecto individual. Mira, si solo tienes un desarrollador, entonces el método Delphi no tiene sentido, porque requiere un grupo de expertos.

More Interesting

¿Cuáles son todos los tipos de datos básicos en Swift?

¿Los datos se están volviendo más valiosos que un software?

¿Cómo se vería el algoritmo para la combinación óptima de 3 valores en Python?

¿Qué cosas 'específicamente Java' debería revisar para prepararme para una entrevista de puesto de desarrollador de software (centrada en Java)?

¿Se recomienda algún software de diagrama de flujo para Linux?

¿He demostrado que he entregado software de alta calidad si le dije a mi cliente a través de pruebas unitarias y pruebas de extremo a extremo?

¿Cuáles fueron los ingenieros que redactaron el pensamiento HTTP?

¿Cuál es el punto de obtener un título en informática hoy en día?

Necesito diferentes componentes de hardware para mi inicio de hardware. Componentes como GSM, GPS, sensores de movimiento cuestan mucho. ¿Es seguro comprarlos en Alibaba en cantidades de 1000 unidades?

¿Qué hiciste para mejorar tu carrera de software?

Como profesional en la industria del software, ¿qué tan efectivo cree usted que son los cursos completos en línea? ¿Los empleadores los toman en serio?

¿Cómo es la Universidad Carnegie Mellon de Silicon Valley, California para el curso y las perspectivas laborales? ¿Puede alguien sin antecedentes de CS en pregrado solicitar MS en Ingeniería de Software sin carta de recomendación (pero con puntajes decentes GRE / TOEFL / CGPA) y ser aceptado?

¿Cuánto tiempo le tomaría a la persona promedio aprender lo suficiente sobre el desarrollo de software para ser empleable?

¿Apple tiene una guía para desarrolladores de Apple Pay?

¿Quiénes son algunos de los mejores desarrolladores de código abierto hasta la fecha que han contribuido significativamente y, si están vivos, cuáles son sus posiciones actuales?