Ok, I am a developer for 6 years now and I came from a hater to an enthusiast about technology.
I am a senior developer, almost all focused in web applications, asp.net, quite experienced and very, very focused in develop myself.
I come to a crossroads in my area, I want to become an Architect, not an analyst or a project manager. I like to get my hands dirty, to actually do things, and I, well,… have to admit it, that I am a little lost about what I should’ve already known, and what i should be studying, in order to enter in that field.
So here comes the question:
What an Architect should be proficient in?
I agree with both SLott and JB King; I’d also like to add a couple:
Negotiation: working out trade-offs is one thing, justifying it (politically) can be quite another. Similar to leadership in someways, but definitely a skill in it’s own right.
Communication is the other one that goes hand-in-hand with that, leadership, etc.
Breadth: depending on the context of where you work, having a broad range of knowledge is useful even if you don’t know the detail – as long as you know it’s there and can refer to it when you need it.
Design Patterns: Interestingly, a lot of design patterns that you’d use at the code / class / method level also translate to higher levels of system design as well. Martin Fowler’s Patterns of Enterprise Architecture is a good place to start – but there are many other good books and resources as well.
Reference Architectures and Frameworks: I found TOGAF helpful; even though it’s aimed at the Enterprise Architecture level it has a lot which translates well down into the solution level. Knowing some relevant reference architectures is also a really good idea.
Other Architecture domains: get a feel for what some other specific architectural domain do,such as: data architecture and business architecture. Having a good grasp of these is helpful when your transitioning into solution architecture.