We are currently in the process of recruiting a technical architect for one of our large team. In my opinion the Architect Role in Software is not a well-defined one and I do not think it’s a much matured profession today (at least in India).
There are two kinds of Architect you can see in the market.
1. Non-Technical Architects
2. Technical Architects
I am sure we all know about the 1st one, so no need to talk about that. I am sure you would have seen the expectations from a technical architect from various sources.
My version looks something like this
As a manager, I will have some expectations on this role and following is a summary of my expectations. Ofcourse my expectations are high, because I had the privilege to work with some real architects (Guys like Sendhil, Mike Knight).
1. A Technical Architect needs to be Hands-on. He should be able to code (better than the stars in the team). Why?
Let’s say you are building a house and you have approached an Architect. Architect speaks well, shows you design from a catalogue. So you decide to go with him. You ask him to give you a proposal. Whatever he mentioned in your initial meeting, if you don’t see the same quality, will you have any respect for him? Or he comes to you and says, I can only give you a blue print (design) but construction is not my job, will you go with him? I will never go with that person.
If it’s true for the construction industry, how will this be different to Software?
If your architect only speaks and doesn’t code, he is never going to get any respect from any of the team members. Assume, he reviews somebody’s code and gives his comment, if the team feels the architect cannot code better than this, and then they are not going to listen to him.
2. An Architect should have a very good understanding of all the technologies that you are currently working. Should be able to stay on Top of the Latest Trends.
Example: if you are in a .NET world, Architect should know how to code on the following
OOP, ASP.NET 3.5, ASP.NET MVC, Silverlight, SaaS, PaaS, IaaS, SOA, WPF, WF, WCF, ASMX + WSE, ASP.NET Mobile Development, NHibernate or Entity Framework, Office based application development, Test Automation (Unit and Functional), Continuous Integration & Delivery, UI Patterns, GOF and other EA Patterns.
You can ask me, are you expecting a superman?
In my opinion, the architect position should have both depth and breadth of technology so that he can contribute to the solutions. An architect must be able to take a step back and look at a higher level, which is difficult for developers and projects managers as they are often too focused on the current project and immediate needs. Unless, the person can have a bigger picture it will be very difficult.
I will definitely expect my architect to convince my clients on why to use a particular technology? Say for example: if we are proposing Silverlight and client is asking why not HTML 5, I would expect my architect to try on why we proposed Silverlight (Not just accept whatever is told).
I cannot definitely listen from an Architect that we will use WPF for Web.
What this means is as an architect, one need to learn continuously. When looking for an architect, you should make sure whether he has the ability to learn continuously.
Earlier, I used to think that an architect should know multiple platforms (Java, Microsoft). But with the current trend, there is a quite bit in Microsoft Stack itself and if an architect can do well in Microsoft stack, it will suffice.
3. An architect should help the team achieve more with less. Now, it may look like a Manager talk. Let me explain what I mean here.
Assume you are working on a team where you do builds once in 3 days. Every time there is a build, there are lot of manual operations to build and deploy which is creating lot of frustrations. Now if you are an architect, you should be able to at least get the basic build operation automated and hand it over to the team so that the team can take it forward from there.
I have seen people talking about doing POCs. In my experience, teams will take things forward only if they see the benefit and POCs will not give them the benefits. Some basic work has to go in to convince team members.
4. I would expect the architect to be more involved with the team, so that the team can work with him and learn.
5. An architect should be able to Multi-task. He is the technical guru in the unit/company and everyone will look at him for help. Hence, multi-tasking becomes a key.
6. I would expect a technical architect to design, develop and test the application throughout the development. I normally hear this from people saying I have been coding for years and I want to only design. IMHO, if you do not code, you cannot design or architect. Unless whatever defined in boxes are translated to code and it works all it remains is boxes. An architect should be able to implement what he has designed.
7. Finally, should be able to help in proposals. Technology is important, but to implement technology we need money and it comes only through business.