Casi todos los desarrolladores tienen que responder preguntas del lado comercial como:
¿Por qué tomará 2 días agregar este sencillo formulario de contacto?
Cuando un desarrollador estima esta tarea, puede dividirla en pasos:
- hacer algunos cambios a la base de datos
- optimizar los cambios de DB para la velocidad
- agregar HTML frontal
- escribir código del lado del servidor
- agregar validación
- agregar javascript del lado del cliente
- usar pruebas unitarias
- asegúrese de que la configuración de SEO esté funcionando
- implementar confirmación por correo electrónico
- refactorizar y optimizar el código para la velocidad
- ...
Esto puede ser difícil de explicar a una persona no técnica, que básicamente ve toda la tarea como reunir HTML y crear una tabla para almacenar los datos. Para ellos podrían ser 2 horas como máximo.
Entonces, ¿hay una mejor manera de explicar por qué la estimación es alta para un no desarrollador?
communication
estimation
Mag20
fuente
fuente
Respuestas:
Lo acabas de hacer en tu pregunta.
Divida la tarea en pasos individuales y proporcione estimaciones para cada uno. Esto mostrará que ha considerado todas las opciones y (con suerte) ha cubierto todas las eventualidades.
Si las escalas de tiempo son demasiado grandes, puede discutir qué partes (por ejemplo, confirmación por correo electrónico) no son necesarias en este caso con datos concretos en lugar de simplemente tratar de meter un cuarto de galón en una olla de cerveza.
Haga esto con la suficiente frecuencia y con suerte les enseñará que, por lo general, hay más en un desarrollo que a simple vista.
fuente
Enumerar las tareas es casi perfecto, pero tenga en cuenta que las tareas que tienen mucho sentido para un ingeniero tienen muy poco sentido para una persona no técnica. Por ejemplo, en la lista anterior, sé que "optimizar los cambios de la base de datos para la velocidad" puede ser una o varias tareas que consumen mucho tiempo que incluyen la creación de perfiles del código, ejecutarlo y buscar puntos lentos, revisarlo con expertos o lanzarlo a través de un conjunto de pruebas predefinidas específicas para el producto. Y luego probablemente tenga varias horas, si no días, de golpear su cabeza sobre su escritorio mientras intenta encontrar una manera de arreglar las áreas que son demasiado lentas.
Pero es posible que haya perdido la gestión de su proyecto en la palabra "DB" si no es la palabra "optimizar".
En general, expreso estas cosas a la gerencia del proyecto en términos de GRANDES pasos con palabras que describen el riesgo en términos del negocio. Tomando su lista, la resumiría de esta manera si estuviera hablando con la administración de mi proyecto:
Evitaría cualquier estimación que sea menos de medio día. Tendrán que confiar, en algún nivel, en que sabes de lo que estás hablando. Y si realmente piensan que solo serán 2 horas, invítelos a sentarse con usted durante 2 horas mientras los explica exactamente cómo se ven las 2 horas en la vida de un desarrollador de SW, luego realice una clase de codificación 101 para aproximadamente 2 horas, para mostrar exactamente lo que se debe tener en cuenta para comenzar a resolver el problema.
Lo más importante es lo siguiente:
fuente
Hay un dicho, "No puedes meter diez libras de (basura) en una bolsa de cinco libras". Su trabajo es demostrar que la tarea es diez libras y están pidiendo tenerla en un plazo de cinco libras.
Lo único que falta son las estimaciones de tiempo. Ponga una estimación de tiempo en cada tarea y muestre cómo todas estas cosas se suman a la estimación que proporciona. No permita que ningún cálculo sea superior a 4 horas. Si tiene alguna tarea en la que dice "un día" o "10 horas", divídala en subtareas más pequeñas.
Ahora tiene una factura detallada de los costos. En total, eso suma hasta 27 horas de trabajo.
Ahora puede mostrar esto a su cliente y decir "Estas son las cosas que deben hacerse, con el costo de cada una". Use la palabra "costo", porque el tiempo ES un costo, y la gerencia entiende los costos. Explique que posiblemente podría eliminar las dos tareas de optimización al final, pero que tendrán un efecto negativo en el futuro, y son solo el 15% de la estimación total.
También asegúrese de explicar de manera realista cuáles son sus horas / día. Por ejemplo, si se le pide que brinde soporte técnico, o mantenga bases de datos, o lo que sea, calcule eso en su estimación. No diga "Bueno, puedo hacer 7,5 horas al día de buena codificación" porque probablemente no pueda. Probablemente sea más como 5 o 6.
Luego, lo más importante, rastrea tu progreso. Digamos que puedes hacer 5 horas por día de codificación. Entonces deberías poder eliminar las dos primeras tareas (en mi ejemplo) el lunes, terminar la tercera y comenzar la cuarta el martes, y así sucesivamente. Haga una lista de verificación que muestre esto, para que pueda mostrárselos el miércoles cuando vengan y diga "¿Cómo va todo para el final del viernes?"
Vea mis diapositivas para mi charla Prevención de crisis: estimación de proyectos y seguimiento que funciona que di en OSCON hace unos años. Mire la diapositiva 21, "Planificación de la semana". También hay un gráfico de velocidad de muestra .
fuente
Pregúntales:
¿Como lo harias? ¿Qué módulos cambiarías? ¿Cuántas líneas de código? ¿Cuáles son las implicaciones de seguridad? ¿Algún cambio en el esquema de la base de datos? Si realiza algún cambio en la base de datos, ¿cuántos archivos están afectados? ¿Cuánto tiempo llevó agregar el último formulario? ¿Cuál es el promedio (media aritmética) para agregar un formulario? ¿Cuál fue el más largo? Calculo que tomará un minuto menos que el más largo. Si no sabe cuánto tiempo tomó agregar las últimas N formas, entonces esta estimación solo se garantiza que sea precisa en un orden de magnitud.
fuente
Podría decirle que les explique que su software es como una máquina de 100 toneladas con 10,000 partes diferentes, muchas de las cuales están conectadas de manera complicada. Instalar una pieza de 1 pulgada en esta máquina requiere algo de ingeniería, para que no se rompa la máquina, PERO la mejor respuesta es:
Si tuviera una mejor arquitectura de código, ¿facilitaría tareas como esta? Y la respuesta es que la mayoría de los equipos de software no son buenos arquitectos (porque simplemente no han acumulado toneladas de plantillas genéricas y arquitectónicas o no son maestros del dominio del problema lo suficiente como para anticipar cada problema) y no siempre son buenos ingenieros , por lo que no se sienten seguros al hacer estimaciones o hacer promesas.
Al igual que le tomó al siglo XX acumular una buena arquitectura y la ingeniería para construir grandes edificios, las herramientas para la ingeniería de software simplemente no han llegado a la corriente principal. Se están desarrollando: se necesita una nueva mentalidad. Vea el Código Zen en wiki.hackerspaces.org/Hacking_with_the_Tao.
fuente