Para aquellos que no han leído Code Complete 2, el Proceso de Programación de Pseudocódigo es básicamente una forma de diseñar una rutina describiéndola en inglés simple, luego, gradualmente, la revisa a un pseudocódigo más detallado, y finalmente al código. El principal beneficio de esto es ayudarlo a mantenerse en el nivel correcto de abstracción construyendo sistemas de arriba hacia abajo en lugar de hacia abajo, desarrollando así una API limpia en distintas capas. Encuentro que el TDD es menos efectivo en esto, porque se enfoca demasiado en hacer lo mínimo para hacer pasar una prueba y alienta un pequeño diseño inicial. También considero que tener que mantener un conjunto de pruebas unitarias para código inestable (código que se está refactorizando constantemente) es bastante difícil, porque generalmente ocurre que tiene una docena de pruebas unitarias para una rutina que solo se necesita una o dos veces. Cuando realizas la refactorización, por ejemplo, cambias la firma de un método, la mayor parte del trabajo que realizas es para actualizar las pruebas en lugar del código prod. Prefiero agregar pruebas unitarias después de que el código de un componente se haya estabilizado un poco.
Mi pregunta es: de aquellos que han probado ambos enfoques, ¿cuál prefieres?













