July 04, 2006

Software Architect - Skills

Being a Software Architect isn't easy. One might say that the Software Archictect has to have bits and pieces of various roles in a Software Development Team. Why is this so? One might wonder to suggest that the Software Architect is like a Technical Project Manager in some sense. I say that is utter rubbish!

A Project Manager takes care about the timeline and resources of the project in software development. In regards to adding the "Technical" word at the front of the title does not make any difference. A Project Manager must understand the requirements of the project from the technical to resource management and that does not have anything to do with Software Architecture.

So, now since a Software Architect does something different from the Project Manager or a Technical Team Lead, the skills that the Software Architect would be different from both these roles. However, some skills from both these roles are required of the Software Architect.

So, what skills are we talking about? Well, lets have two types of skills,
  • Technical
  • Soft-Skills
Technical Skills
This is definitely very obvious, of course Software Architects need to be technical! Up to date knowledge about software architectures, design patterns and frameworks in current practice is required. Besides that the following list of skills are important as well,

Technical knowledge of programming languages
Technical knowledge of current technologies (trends, practices, etc)
Technical knowledge of vendor tools
Technical knowledge of hardware/platforms
Technical knowledge of software engineering design methology such as RUP, Agile
Technical knowledge of object modeling languages such as UML
Technical knowledge of software quality processes such as CMMI, SOX
Technical knowledge of general software development - design patterns, algorithms, security requirements

This list would grow in time, but generally, an understanding of technical matters relating to the domain knowledge as well as industry software practices should be key items the Software Architect should pick up on.

Soft-Skills
These skills are vital as a Software Architect needs to be able to relate to all parties, from clients, to developers. So, the following skills are vital,

Communication Skills
This does not mean just being able to speak, but the ability to listen as well. Since architects need to liaise with clients and developers, having a good ear and listening without prejudice is very important in dealing with people. Nobody wants to deal with someone who is obnoxious and arrogant, who does not listen and is not open to suggestions.

Basic Project Management Skills
To be able to understand the project landscape, timeline and resources but not manage it entirely. The Project Manager would most likely liaise with the Software Architect in order to determine the project landscape and thus, understanding the basic principles of project management is vital.


Leadership Skills
A Software Architect should have some leadership skills as most of the time, the Software Architect would champion for certain causes through "evangelisation". However, since the Software Architect liaises with the Team Lead as well as the Project Manager, some leadership ability is required. That is because the developers not only take their leadership skills from the Team Lead, but also the Software Architect during the SDLC process.

Mentoring Skills
The ability to mentor someone is important as knowledge shared, means knowledge gained together with the team. No man is an island and thus, no coder in a team ever codes alone. So, by mentoring developers/coders, we can be assured that these developers/coders are aware of the best practices to use during the SDLC process. Besides that, by setting up a mentoring system, the Software Architect may start to groom developers into Software Architects in order to assure a succession for the role, should the Software Architect leave the position one day.

Evangelical Skills
Sometimes, the Software Architect is required to "sell" an idea to a specific audience. Thus, they become the champions of ideas or technologies. This skill, like being a preacher on a pulpit requires that the Software Architect has the conviction and "belief" on the technology or idea they are trying to "sell".

Drive to Learn
The ability to constantly learn something new is highly important for the Software Architect. This is because trends change, technologies change and thus, something which may have worked 2 years back may not be applicable for the current environment or requirements. No self-respecting Software Architect should say, "I have enough of learning, I've done all that during my Uni/College days" as this would mean that the Softare Architect would be stagnant and outdated in their knowledge.

Drive to Succeed (Motivation)
Finally, the Drive to Succeed, a big big soft-skill that the Software Architect should have. Some say that Software Architects play the role of 10 people in a software development team. Thus, they need the extra drive to succeed. They are also the motivators for the team, guiding, coaching and encouraging the team to reach its goal of successfully delivering the project to the client. So, Software Architects need to be highly motivated to succeed.

Anyway, these are just my 2 cents on the matter. This is because I've seen a number of people who try to be a Software Architect but fail miserably because they lack many skills, one of the most important ones being the ability to mentor staff. Some people tend to be very selfish about sharing knowledge and this should the LAST attribute that the Software Architect should possess.

I'm constantly figuring this out as I go along in my career as a Software Architect. I've taken on this role for the last 4 years and the mindset required to be a Software Architect is very different from being a Team Lead or Developer. There are many other attributes that the Software Architect should have but I do not have the time to list it here. Certainly, this role/position is fairly new and so, the roles and skill requirements would change from time to time.

Frankly, I do not think this position is a walk in the park, and it certainly is no glamour job. We sit behind the scenes to make things work.

2 comments:

  1. A Project Manager takes care about the timeline and resources of the project in software development. He have to perform a lot of important task through out the project life cycle. project management software serves as a great tool to complete projects on time. Such software is the simplest tool that helps the project managers plan and manage different tasks that are involved in each project.

    ReplyDelete

Please feel free to add your comments. However, take note that your comments may be edited or deleted as seen fit by the author of this blog.

Take note that the author of this blog may not be held responsible for the comments which may be insensitive, vulgar or controversial.

Related Posts with Thumbnails