Ну, а вы сами не можете определить, где архитектура спроектирована грамотно, а где - безграмотно?
Зачем вообще нужна грамотно спроектированная архитектура? Прежде всего - для повторного использования кода (re-use), особенно посторонними программистами.
Вот и попробуйте по-re-use-ать код разных проектов. Идеально подходят библиотеки - которые как бы для этого и предназначены, чтобы можно было быстро, удобно их заюзать. Но и само приложение тоже легко так проверить, достаточно попробовать внести в него какие-то изменения и вообще разобраться в нем, и сравнить, сколько сил и времени будет затрачено в разных случаях.
В идеале тестировать нужно не на одном человеке, а на нескольких разных, предпочитающих разные языки и разные подходы.
Или вы просто не видите, что удобно, а что неудобно? Ну тогда пару слов о том, что такое - неудобное:
1) Избыточное.
Когда слишком много слоев абстракции.
Когда слишком много обязательных аргументов некой функции (не аргументов вообще, а именно обязательных).
Когда слишком много.
2) Длинное.
btnCloseAllApplicationsAndRebootMyComputer.
Без комментариев.
3) Короткое.
btn.
Без комментариев.
4) Нестандартное.
dAtETIMEPICKEr_______1.
textbox2.
BUTTON3.
Или когда в классе C# имя какого-либо публичного члена пишут с маленькой буквы.
Без комментариев.
4.1) Несоответствие парадигме ООП, хотя на данном языке возможно соответствие.
Когда так:
FormHeightSetter.Set(form1, 500);
Вместо:
form1.Height = 500;
Список можно продолжать. Но, видимо, и эти 4 пункта уже невыносимо сложны, коль скоро они нарушаются этак в 99,(9)% всех приложений.