Угу. Бывает что и на бумаге рисую, когда клинч в сознании наступает :) Для себя я сделал выводы, что главное разбить программу на логически законченные модули и подготовить под них структуры данных. Потому, что когда начинаешь на ходу добавлять переменные, флаги и т.п., то такая х-ня в конце-концов получается.
Перед написанием какого-либо модуля подумайте, чего вы хотите от него? Какую функцию(ии) он должен выполнять? Что у него в качестве входных и выходных? Нужно ли синхронизировать эти данные с данными каких-то других модулей? Ну и т.д.
А лучше почитайте книжки известных авторов. Я ведь не профессиональный программист, чтобы еще и на эту тему книжки писать ;-)