Required Skill Sets Of A Software Architect
The question has been asked as to what is the required skill sets of a software architect. The answer to this is that it truly depends. When I state that it depend, it depends on the organization, industry, and skill sets available on the open market and internally within a company. With open ended skill sets even Napoleon Dynamite could be an architect.
Napoleon Dynamite’s Skills
Pedro: Have you asked anybody yet?
Napoleon Dynamite: No, but who would? I don't even have any good skills.
Pedro: What do you mean?
Napoleon Dynamite: You know, like nunchuck skills, bow hunting skills, computer hacking skills... Girls only want boyfriends who have great skills.
Pedro: Aren't you pretty good at drawing, like animals and warriors and stuff?
This example might be a little off base but it does illustrate a point. What are the real required skills of a software architect? In my opinion, an architect needs to demonstrate the knowledge of the following three main skill set categories so that they are successful.
General Skill Sets of an Architect
Basic Engineering Skills
Organizational Skills
Interpersonal Skills
Basic Engineering Skills are a very large part of what a software architect deal with on a daily bases when designing or updating systems. Think about it, how good would a lead mechanic be if they did not know how to fix or repair cars? They would not be, and that is my point that architects need to have at least some basic skills regarding engineering. The skills listed below are generic in nature because they change from job to job, so in this discussion I am trying to focus more on generalities so that anyone can apply this information to their individual situation.
Common Basic Engineering Skills
Data Modeling
Code Creation
Configuration
Testing
Deployment/Publishing
System and Environment Knowledge
Organizational Skills
If an Architect works for or with an origination then they will need strong organization skills to survive. An architect is no use to a project if the project is missed managed. Additionally, budgets and timelines can really affect a company and their products when established deadlines are repeated not meet. By not meeting these timelines a company is forced to cancel the project and waste all the money and time spent or spend more money until it is completed, if it is ever completed.
Common Organizational Skills
Project Management
Estimation (Cost and Time)
Creation and Maintenance of Accepted Standards
Interpersonal Skills
For me personally Interpersonal skill ranks above the other types of skill sets because an architect can quickly pick up the other two skill sets by communicating with other team/project members so that they are quickly up to speed on a project. Additionally, in order for an architect to manage a project or even derive rough estimates they will more than likely have to consult with others actually working on the code (Programmers/Software Engineers) to get there estimates since they will be the ones actually working on the changes to be implemented.
Common Interpersonal Skills
Good Communicator
Focus on projects success over personal
Honors roles within a team
Reference:
Taylor, R. N., Medvidovic, N., & Dashofy, E. M. (2009). Software architecture: Foundations, theory, and practice Hoboken, NJ: John Wiley & Sons