Every aspiring software engineering student should goal towards becoming a great software architect. It involves gaining knowledge of core computer science, real-world project experience, and senior technical leaders’ guidance.
Following core skills are needed to develop architectural thinking.
- Excellent at problem decomposition
- Understands interfaces
- Understands that complexity is the enemy
- Good communicator, a good and prolific writer, and a documenter.
- Good leader and is excellent at gaining the respect of all the technical people they work with.
1. Excellent at Problem Decomposition
The human brain can not do multi-tasking. Without problem decomposition, it is impossible to solve a problem. Unfortunately, problem decomposition is an art. And it is difficult to develop this skill in the respective discipline.
To decompose the problem, first, we understand the problem. As they say, a well-understood problem is half solved. Understanding the problem is a prerequisite to breaking down the problem into executable chunks.
2. Understands interfaces
An architect understands interfaces. There are two aspects to this. One should be able to understand existing interfaces, and the other should be he can design interfaces that others can use. Interface increases the usability of any code written by developers. It is like a structure, flexible enough to fulfill the requirement.
It is often a neglected skill, but it is an essential skill to have in an architect. Using interfaces, we follow the open-close principle of software development. As a result, it makes extending any API’s functionality easier.
Be sure to follow the blog; more on this later.
3. Understands that complexity is the enemy
Do not fall in love with complexity, no matter how much it pleases you. Choosing simple things will open a way for you and others to pitch in as they understand.
If you have two competing ideas to explain the same phenomenon, you should prefer the simpler one.Occam’s Razor
Simplicity is easy to communicate. Look out for the existing solutions to the problem you are trying to solve. There is a high chance somebody might have solved it simpler.
4. Good communicator, a good and prolific writer, and a documenter.
In this dynamic, changing world, it takes time to keep track of things we have done and the solutions we have applied in the past. That’s why it is vital to document the design solutions for the team and for us to look at them later on. Add comments wherever you can.
The ability to write better documents, from the requirement to design to code, will take you a long way. All the stakeholders involved should be able to understand the documents.
5. Good leader and excellent at gaining the respect of all the technical people they work with.
An architect must have a high level of technical and non-technical skills. In technical skills, He needs to be excellent in the basics of computer science. It includes understanding the core of data structures and algorithms to advanced data stores and databases.
In addition, an architect must have the following inverted T shape skill set. The foundation has to be strong as, on top of that, one must have expertise in the respective field. A good architect has to be a great leader, as other people look up to him for answers. A leader is one full of humility and easygoing.
The leader of a people is their servant.Prophet ﷺ
The above statement signifies the humility a leader must have. He is no different than other people in the group. However, his responsibilities are more, and he must have the needed skills to fulfill those requirements.
Reference: Good Software Architect by Gary Wisniewski