Whenever I discuss Information Technology roles and I mention the software architect role I get some quizzical looks. Someone will occasionally ask, “Do they design buildings?” The title will confuse many people even some in the Information Technology area. So I thought I would take some time today and clear up a few things about this interesting position.
In great demand
According to this article in CNNMoney the Software Architect is in high demand. The median salary is $119,000 per year and over the ten year span is expected to grow by 24.6%. And this article rates the Software Architect position as the number 3 job overall, that is pretty high!
What is a software architect?
Software architects generally are your more experienced developers who understand how to design a new system or modify an existing system. Depending on the size of the company the role can be clearly defined and structured or it can be an additional role of a developer in a smaller company. The software architect must have a big picture understanding of all the systems involved.
The approach is more of a holistic view of the applications in the enterprise. Where most developers think in the code the architect must go up a few levels and look at the big picture. It takes more than just experience to become a software architect. Since the role responsibilities are varied at different companies it does require many different qualities.
The Technical Consultant
A software architect understands the technical struggles you will encounter and knows how technologies should be leveraged. Many junior developers understand a few technologies at basic level. The architect will come in and show where to use the best tool and work well with in the overall picture. Managing the functional requirements is an important aspect of this role.
The first architect first decision is to decide if a new system is needed or we can use an existing system and modify it. The next important decision is to look at the technology footprint of the company and see if any existing technologies can yield a result or if you need to add new technologies. When we add new technologies to the stack companies will need to train developers and/or possible bring in consultants.
Evaluate and Collaborate
The architect must next evaluate alternatives if they will meet all the functional and non-functional requirements. This evaluation process must entail the previous points about weighing new and currently in use technologies. Then the collaboration process begins by working with the stakeholders and getting a good understanding of the business needs. The architect must review these alongside any technical limitations that may be pertinent.
Software can become complex quickly so there are a few tools to help visualize this. One of the tools software architects use is UML documents that display how applications in the enterprise can interact and how new systems will fit in. The complexity continuum is measure many systems need to be evaluated on, if left unfettered software developers can design some overly complex systems.
The software architect needs a good understanding of the business to realize the parameters that will be placed on the design model. The firm business background coupled with the deep technical experience can give businesses a true resource to call upon. Having these two qualities can help the business envision the right solution and deliver results.
Soft Skills for Architects
As a professional trainer I help companies develop their technical staff with a program called, “Success Skills for IT Professionals.” A good software architect understands the importance of these soft skills. They will be called upon to explain technical issues to high level executives and to potential customers. They develop their communication skills to be ready for these opportunities.
Technical Leadership is another part of the Success Skills needed for project completion and leading initiatives. Far too often the realm of technical leadership is ignored by corporations and organizations. The graveyard of failed technical projects is littered with poor technical leadership. A great software architect has strong technical skills and soft skills to influence change in the organization.