I trust anyone reading this post title most probably is expecting to see something like UML Design, OOP Design, writing code, etc. I would not consider these in required skills list, these are I would say, mandatory skills for a Software Architect. In my opinion, the most important skills for Software Architects are the communication skills.
The importance of communication skills
In Microsoft .NET – Architecting Applications for the Enterprise (2nd Edition) book, the role of the software architect is defined as a person who ties together the requirements and specifications, and one of the most important responsibilities of the software architect is mentioned to be the acknowledgment of requirements.
This requires a lot of communication with people of different profiles and various knowledge of technical jargon (project managers, business analysts, potential users, etc.), and it is a natural expectation that Software Architect should speak the language of business rather than the other way around.
Speaking the language of business is one part of the communication. Next comes communicating that business knowledge and requirements to development team. In my experience, I have seen several situations that developers and business people were speaking about the very same solution, but the language terminology they used made everybody think that they are speaking about two different solutions.
It is the technical skills of planning, designing, development, and implementation of a software solution that qualifies one for the position of Software Architect, but in my opinion it is the soft skill of communication that is the most important skill for software architects and the skill that makes one an appropriate choice to be in that middle point of the team. As my boss says, we must talk talk talk.
What can you do to improve your communication skills?
Of course there is no silver bullet to this problem. We humans tend to be unique in our behavior and skills, and as such the recommendations can not easily be generalized. However, I have three points which I can recommend to anyone:
- Seek for sincere advice from people around you, be it your family, your friends, or your colleagues. Generally, it is not easy to get someone to sincerely tell you what they think. People sometimes don’t like to tell what they think and sometimes they are afraid of being percepted as criticizing others, so they don’t tell you exactly how you are being percepted unless they get this freedom from you. Try to make people feel comfortable saying what they think about your communication skills and appreciate sincerely their comments.
- Spend some time with yourself thinking about your communication with others. What did you say, what was your intention to communicate and how was it percepted? This could be very helpful to find your weak points, on which you should focus to improve.
- Read the book How to win friends and influence people by Dale Carnegie. This is one of the best books I have read and I can confidently recommend this book to anyone. It has an immense set of advices which are very useful for improving one’s communication skills.
You can find plenty of advice from different resources on internet, from books, and from people around you about how to improve your communication skills. Pay attention to the input you get especially from people, you will appreciate it at the end.