Я все еще учусь в университете, и у меня пока нет опыта создания крупномасштабных программных систем, но ...
Первое, что нужно сделать, это выработать то, что хотел. Для меня это обычно спецификация назначения, но в реальном мире это подразумевает разговор с клиентом. Много.
Тогда я разрабатываю, как сделать то, что требуется. Для относительно небольших программ, над которыми я работал, я обычно формирую в своем уме грубое представление о том, как будет выглядеть моя программа (каковы важные части программы и как они взаимодействуют друг с другом). Это может привести к всплескам, если я понятия не имею, как будет работать какая-то часть программы. Я не думаю, что этот подход (сделайте все это на мой взгляд) будет очень хорошо масштабироваться, но вопрос был в том, что мы делаем на самом деле ...
Как только я более или менее знаю, что я пытаюсь сделать, я сажусь и пишу код. Именно здесь я обнаруживаю какие-либо проблемы в том, что я думал.
Я не думаю, что каждый использовал псевдокод для разработки алгоритма. Я думаю, что псевдокод слишком низкий уровень для разработки больших частей программы.
Я использовал блок-схему только один раз, чтобы помочь с разработкой программы - тогда, когда я изучал ассемблер и был довольно новым для программирования (и это было полезно). Мифический человеко-месяц гласит следующее: «Подробная блок-схема последовательности операций, однако, является устаревшей помехой, подходящей только для начинающих в алгоритмическом мышлении ... ... Я никогда не видел опытный программист, который обычно делал подробные блок-схемы перед тем, как писать программы. "