All the advice above is good, but if I were you, I'd take a look at functional languages and the architecture they yield as well.
I'm saying this because functional programming has the potential to simplify software architecture in some cases and make you a better developer or architect. Learning a new paradigm makes you question current practices more and that is a good thing imho. Recently I've been looking into Racket and I'd probably never do production stuff on it but it's been a real eye opener to me. I also like F#. There are a lot of resources out there, one of them is Scott Wlaschin, look him up on youtube.