Хардкорный вариант вникания в лучшие практики программирования (это как раз что касается паттернов и архитектуры) — это начать разбираться с каким-нибудь популярным опен сорс софтом. Там в большинстве случаев все хорошо спроектировано, поэтому будет на чем поучится… но это довольно трудный путь)