Todavía estoy en la universidad y aún no tengo experiencia en la creación de sistemas de software a gran escala, pero ...
Lo primero que hay que hacer es encontrar lo que se quiere. Hasta ahora, para mí, esto normalmente es una especificación de asignación, pero en el mundo real implica hablar con el cliente. Mucho.
Luego averiguo cómo hacer lo que se requiere. Para los programas relativamente pequeños en los que he estado trabajando, normalmente tengo en mi mente una idea aproximada de cómo se verá mi programa (cuáles son las partes importantes del programa y cómo interactúan entre sí). Esto puede involucrar picos si no tengo idea de cómo funcionará alguna parte del programa. No creo que este enfoque (lo haga todo en mi mente) se escalará muy bien, pero la pregunta era preguntar qué hacemos realmente ...
Una vez que sé más o menos lo que estoy tratando de hacer, me siento y escribo el código. Es aquí donde descubro cualquier problema en lo que estaba pensando.
No creo que haya utilizado todos los pseudocódigos para diseñar un algoritmo. Creo que el pseudocódigo es de un nivel demasiado bajo para diseñar grandes fragmentos del programa.
Solo he usado un diagrama de flujo en una ocasión para ayudar con el diseño de un programa, cuando estaba aprendiendo ensamblaje y era bastante nuevo en programación (y fue útil). The Mythical Man-Month dice lo siguiente: "El detallado diagrama de flujo de golpe por golpe, sin embargo, es una molestia obsoleta, adecuada solo para iniciar a los principiantes en el pensamiento algorítmico ... Nunca he visto a un programador experimentado que hiciera rutinariamente detalles diagramas de flujo antes de comenzar a escribir programas ".