Лучший способ думать — думать руками. Думать руками — значит, думать в процессе воплощения идеи. Не держать всё решение в голове, а постепенно и постоянно выкладывать его на бумагу, код, прототип. При таком подходе появляются и тут же чинятся все огрехи, вызванные переходом от идеи до реализации, потому что переход минимизирован. Куй железо, пока горячо, все дела.
Я обожаю думать руками. Обожаю, когда озарение приходит из-под клавиш, из-под пера (шариковой ручки, окей), складывается, как детали Лего.
Кстати, о Лего. Думанье руками началось, когда делали роботов: мы собирали сразу на чистовую, делая кабель-менеджмент частью дизайна (товарищ сейчас ухмыльнётся, ага, мол, дизайн). Только потом делали цифровой макет и программу поведения.
Потом были олимпиады и большое количество решённых экономико-математических задач. Когда каждая твоя закорючка, каждое лишнее вычисление позволяет выбить у судей лишние полбалла, то вычисляешь всё подряд. Перестаёшь просчитывать решение наперёд, а вычисляешь, пока вычисляется и делаешь выводы на каждом шагу.
Сейчас, когда пишу код, то прежде всего накидаю интерфейс или заголовочный файл, напишу переменные, простенькое взаимодействие между функциями. Схема появится потом, только если взаимодействие действительное сложное или будет сложное. И то, схема будет скорее комментарием, а не ТЗ.
Когда пишу текст — пост, курсач, сообщение — то напишу одну мысль, потом довод, потом главы. Содержание появится потом, только если мысль сложная и нужно проводить читателя от тейка до пруфов, ю ноу.
Если появляется какая-то идея, что можно попробовать, то делается прототип, семпл, запихивается в редактор и тут же проверяется. По-моему, так лучше работается и учится. @awdee, вот, согласны.