Primero determine si realmente es un problema en sus circunstancias.
Mi experiencia ha sido todo lo contrario de la mayoría de los encuestados hasta ahora: paso mucho tiempo en diseño, pero debido a eso, la implementación generalmente se realiza muy rápido, y rara vez tengo que volver a visitar mi código.
Creo que mucho depende del tipo de código que estés escribiendo. Los programas para el consumo general generalmente pueden soportar el estilo de desarrollo de iteración rápida, o algo similar que no requiere demasiado tiempo de diseño por adelantado. También es bastante inevitable si solo tienes una vaga apariencia de requisitos al principio.
- Cómo paralelizar un método recursivo en Java
- ¿Existe un algoritmo ML para verificar qué tan bien coinciden 3 objetos de diferentes tipos?
- ¿Cuál es la ecuación general para calcular la probabilidad de encontrar una cadena de longitud N en una cadena M más larga de caracteres aleatorios, cada uno elegido de {AZ}?
- ¿Qué es el mapa de bits? ¿Dónde lo usamos?
- ¿Qué es el algoritmo de YouTube?
Solía hacerlo yo mismo, pero en la última década, hice la transición al software de integración para control industrial. Para este y otro software similar, “hacerlo bien la primera vez” es prácticamente obligatorio, y cada iteración cuesta una cantidad cuantiosamente grande de dinero en tiempo de inactividad y otros estados que no son de producción; incluso acceder a las máquinas en las que se está ejecutando su software puede no ser trivial (salas blancas, esperando que la producción alcance un hito antes de detenerse, etc.). Doble ídem para software de control automotriz, médico, etc., donde los errores pueden costar vidas.
En esos entornos, no solo vale la pena hacer Big Design Up Front, sino también no hacerlo solo . Eso es lo que mi socio comercial y yo hacemos a menudo durante todo el día, discutiendo con los clientes sobre cuál es exactamente su problema (he escrito sobre cómo hacer esto antes), y luego discutiendo entre nosotros sobre cómo solucionarlo. Después de muchos diagramas y acalorados debates (somos grandes admiradores del proceso de confrontación), hemos reducido el alcance del problema a un tamaño adecuado, sin perder tiempo implementando cosas agradables que solo entran en contacto con el cliente. mucho más tarde cuando las circunstancias cambien.