Primero, enumere las características . ¿Qué necesita hacer? Si cualquier cosa individual que necesita hacer es muy compleja, desglose como Chris sugiere. ¿Qué características dependen de cuáles otras? ¿Cuáles son de alta, media o baja prioridad? Especialmente, ¿cuáles deben estar absolutamente en el producto mínimo viable? Para facilitar el reordenamiento, no use papel, ingréselos directamente en un rastreador de problemas. (Tenerlo allí te ayudará más tarde).
Ahora, ¿qué es “demasiado complejo”? Cuando describo una característica, trato de describirla de tres maneras:
- Un título breve, como “Buscar dentro de los widgets de una empresa”.
- Una ” razón “, en el formato estándar como desee, como “Como comprador de widgets, quiero buscar dentro de los widgets de una empresa, para ver si tienen el tipo de widgets que necesito”.
- Una prueba de “camino feliz primario”, que describe lo que debería suceder si todo sale bien en el caso de uso típico. Escribo esto en el formato estándar dado cuando entonces, como: “Dado que la Compañía X tiene grandes widgets verdes, y grandes widgets azules, y pequeños widgets azules, y pequeños widgets verdes, cuando busco en los widgets de la Compañía X solo pequeños widgets verdes , entonces veo todos sus pequeños widgets verdes, y no hay widgets azules, ni widgets grandes, ni widgets de ninguna otra compañía “. La longitud de este puede llevarme a dividir la función en tres funciones separadas: buscar por empresa, buscar por tamaño y buscar por color. También puedo agregar algunas pruebas de ruta feliz * alternativas * (si hay varias formas en que se puede usar una función), y algunas pruebas de ruta triste (formas en que la función puede fallar). En este caso, una ruta alternativa feliz podría ser si la búsqueda también admite “o” en lugar de “y” (así que busco sus pequeños * o * widgets verdes, por lo que veo todos sus pequeños * o * verdes pero no grandes azules), y un camino triste podría ser si no tienen pequeños widgets verdes.
Al comenzar el trabajo, tome los tickets del rastreador de problemas en orden de prioridad . Si no está seguro de la prioridad, realice un triaje simple, recurriendo al lote de mayor prioridad si es necesario. Tenga en cuenta que todo lo que depende de la función X tiene mayor prioridad que la función X, incluso si el cliente enumera explícitamente la función X como una prioridad alta y la otra figura como inferior, o no aparece en absoluto. Algunos rastreadores de problemas pueden permitirle expresar tal dependencia y permitirle ver solo tickets no bloqueados.
Al implementar, asegúrese de que la prueba de características falla. (De lo contrario, no está probando lo que crees que está probando, y es peor que inútil.) Trabaja hasta que la prueba de características pase , TDDing algo no trivial que encuentres en el camino. Trabajar en pequeños incrementos . Haga lo más simple que resuelva el problema inmediato, pero hágalo limpiamente. Comprometerse temprano, comprometerse a menudo. Lo que, por supuesto, implica, utiliza el control de fuente, con ramas de características, a la Git Flow o Github Flow. Refactorizador No rompa la construcción de la rama maestra. Obtenga retroalimentación : si no tiene colegas para inspeccionar sus solicitudes de extracción (e incluso si lo hace), use herramientas como hedor, flagelo, flay, guardafrenos, bala, prácticas de railsbest, etc. La integración continua también puede ayudar.
- Soy un laico con respecto al desarrollo web. ¿Cuáles son las cosas que debo aprender antes de comenzar el desarrollo web?
- Acabo de comenzar un análisis real, y sé que no es correcto pensar en dy / dx como una relación de diferenciales. Entiendo la definición de derivada como un límite, pero cuando los diferenciales participan en ella y en integrales indefinidas, me pierdo. ¿Cómo trato con ellos como principiante, correctamente?
- Estoy enfrentando problemas en el aprendizaje de algoritmos y estructuras de datos. Aunque me encanta programar. ¿Debería rendirme? Si no, ¿cuál debería ser mi motivación?
- Lidero un equipo, hago 100k y escribo activamente código en los idiomas modernos de cliente y servidor. Quiero más. ¿Se pueden alcanzar 140-180k y cómo llego allí?
- Si tengo suficientes transfusiones de sangre de otra persona, ¿puede alterar un análisis de sangre de ADN?
(Tenga en cuenta que estoy omitiendo por completo los problemas de estimación, programación, etc.)