(примечание, язык иногда помещается в щеку.)
Вероятно, одно из самых больших культурных различий заключается в том, что Java часто используется в проектах с большим количеством программистов, во главе с PHB, где проектирование систем высокого уровня выполняется людьми с названием «архитектор программного обеспечения». В подобных проектах люди, играющие роль «архитектора программного обеспечения», часто генерируют большой объем документации (включая UML-отношения и диаграммы состояний) на начальном этапе планирования проекта. Ожидается, что эти и другие артефакты документации будут реализованы полчищами программистов, не являющихся архитекторами.
Ruby, с другой стороны, является новой популярностью и поэтому чаще выбирается людьми, которые хотят программировать в нем. Поскольку «архитектор» является реализатором, меньше необходимости в сложной предварительной документации. Разработчики делают несколько замечаний по общим рекомендациям по проектированию, а затем садятся за программирование, а не зарабатывают заранее, чтобы другие могли программировать.
Это не означает, что вы не найдете несколько разбросанных диаграмм UML здесь или там в проектах, построенных на Ruby или других шикарных языках - например, когда кто-то пытается описать сложную концепцию - но такие вещи просто не нужно так много, если вы делаете работу самостоятельно.