уровень кода = уровень бюджетирования проекта (и как следствие, уровень команды), когда по-быстрому, то не будет ни тестов, ни нормальной архитектуры, скорее всего
Также, многие концепции в Java уменьшают количество шансов выстрелить себе в ногу (но увеличивают время на написание кода)