типизация, дженерики, продвинутое ООП, это не круто, а необходимость контроля над ошибками, быстрой навигации, и декомпозирование сложных сущностей, а вобщем более надежная от ошибок разработка сложных систем и более понятная и легкая поддержка кода. Скорее, да, для простых проектов это может быть излишне (дополнительный код), для сложных и больших, наоборот все окупается. Это как экскаватор и лопата, для мелких ям лопата, для больших котлованов экскаватор.