Как проектировать большие программы?
Читайте Макконнелла - Совершенный код (Code complete). Почитайте про тестирование. Рефакторниг. Почитайте код других программ.
Хочется чтобы процесс разработки был простым и линейным? Не будет такого никогда. Он всегда нелинеен и несколько хаотичен. Станет легче когда опыт накопится. А пока плаваем, возвращаемся по сто раз назад и копим опыт.