В "обывательской психологии" принято делить мозг на полушария: левое отвечает за логику, анализ, рациональное мышление, а правое - за эмоциональное восприятие, интуицию, воображение. И да, везде сразу же после таких объяснений пишут, что у всех людей работают оба полушария, что крайностей не бывает и т.п. Но факт остаётся фактом - кто-то больше склонен к рациональности и анализу, а кто-то - к эмоциям и интуитивному восприятию.
Большинство моих знакомых (причём подавляющее большинство) считают, что я программист. Ну пусть будет так для упрощения. А про программистов в той же самой "обывательской психологии" принято считать, что они математики, исключительно рационально мыслящие люди. И пожалуй да, соглашусь, без умения анализировать, мыслить рационально не написать хорошего кода. Но ведь для того, чтобы родилось хорошее программное обеспечение, не только код должен быть хорошим, хорошей в первую очередь должна быть архитектура системы.
По-хорошему, обычно всё начинается именно с проектирования это самой архитектуры. Её достаточно легко спроектировать, когда есть чёткое понимание того, что должно получиться. Например, хорошо формализованное техзадание. А когда его нету? Когда проект живёт и развивается вместе с разработкой? Если конечные требования совершенно не ясны, а есть лишь наброски, какой-то эскиз описания. Есть представление о том, что необходимо сделать, ровно на данный момент, и есть чёткое осознание, что это представление будет меняться и довольно сильно.