Hiring a Software Architect: Main Concepts, Requirements, Interview Techniques, and More
What a software architect (SA) does is shrouded in mystery. Many of us, including some people who call themselves SAs, have very little idea of what the job entails and how to hire a software architect. Some even consider architects useless since they don’t code and thus bring no tangible value. But as soon as you compare a software architect with a construction architect, it all makes sense.
Experienced construction workers can build a house without an architect since they know the tools, materials, and processes required. But chances are their house won’t last. A talented construction architect, however, looks beyond boards, bricks, and cement. They consider external factors, the availability of materials and tools, the client’s personal needs, budgetary constraints, and more.
Looking at the full picture helps them design a sustainable, safe, and functional construction within the budget so that the client won’t need to spend money to repair or replace a badly built house.
The role of a software architect is very similar.
As Acropolium’s CEO Oleksii Glib puts it, “A software architect can only be successful when the person is well rounded and versed in various technologies, tools, and, most importantly, industries. This is what allows them to design carefully considered architectures for specific business cases”
Continue reading to discover when you need a software architect, is it better to hire one in-house or outsource the service, and what to ask a person who is being interviewed for the software architect position.
What exactly does a software architect do?
So, what is a software architect? We decided to cover the basics before getting down to details.
Software (IT) architect is a software development expert who addresses business issues with technical solutions. They make high-level design decisions, such as software product’s architecture with its main components and interactions between them, and supervise the software development process to ensure the system’s compliance with technical standards.
A review of various software architect job descriptions makes it clear that there’s no universal list of what an SA does. Their core duties boil down to the following during the different stages of a software project:
- During planning: collecting requirements from the project’s stakeholders, collaborating with designers and business analysts, managing the process of writing the software requirements specifications (SRSs) document to ensure the software’s feasibility.
- During development: controlling the development process to ensure the code’s stability, performance, consistency, and conformance to technical standards, helping a team solve issues as they arise during the process, etc.
- At the release stages: ensuring the quality (stability, consistency, performance, scalability, etc.) of the end product.
Software architects don’t necessarily build products from scratch, and their value to your project does not depend on them doing so. They often work with existing solutions, for example, by integrating several components into a single customized system or conducting system audits.
Either way, the main task of a software architect is to ensure that your system is consistent, scalable, highly performant, and safe. And that this system, unlike the hypothetical house in the introduction, will last.
When you need a software architect, and when you don’t
Though it might seem that no development team can go without a software architect, that’s a misconception.
Hiring a software architect is more common than not an effort to avoid the major changes to the project, or the need for continual bug fixes, either of which could be more costly than hiring a software architect in the first place.
At the same time, in the IT industry, things are not always so clear-cut, and the benefits of a software architect for your project depend very much on your team’s composition and mindset. If your engineers are used to being involved in software architecture and design, an SA’s engagement may not be critical, even for large projects.
At Acropolium, we don’t always think it’s necessary to engage an architect when building something that won’t enter the market, such as a Proof-of-Concept (PoC) or a minimum viable product (MVP) built solely to attract investors. Other projects, especially large-scale solutions, generally benefit from an architect’s involvement.
It should be noted, though, that rewriting Uber’s distributed payment systems, shipping Skype on Xbox One, and Uber’s mobile architecture framework were all implemented without architects. In those cases, an architect’s responsibilities were shared between all team members, from experienced engineers to junior developers. Using this approach, they managed to create systems that function without a glitch despite being used by millions of people daily.
Still, the described cases are the exception rather than the norm. In most projects, the non-involvement of an architect results in significant ongoing changes and continuous bug fixing that require more expenses than hiring a software architect.
Hire in-house or use dedicated software architecture services
Perhaps the simplest approach is to promote an experienced software engineer from your existing team rather than choose between the two options mentioned in the title. This may be especially useful when you need to hire a software system/infrastructure designer or an enterprise software architect responsible for your internal IT infrastructure. After working years for your company, the person has acquired considerable knowledge about your organization’s technical systems, enabling them to make better decisions. That’s why many organizations prefer this option.
But unfortunately, it might not be available to you. For example, you don’t have an engineer ready to take over an architect’s responsibilities (you’ll learn why in the section below). Or you might have only one project that requires such expertise. Cases in which you’re unable to promote someone from your existing team are not uncommon.
Many companies face the choice of an in-house software architect or an outsourced expert. Let’s consider the pros and cons of either option.
In-house software architect
- Efficient communication. Shared working hours and the same office (if the team is not distributed worldwide) make communications clearer and more efficient. Even if your team is spread over a large geographic area, using communication tools and protocols that everyone is already familiar with saves time and reduces team members’ effort.
- Faster processes. Because the communication in-house is often more efficient than in other settings, making project changes is faster. Also, using someone already familiar with all of your tools and operations saves the time that would otherwise be required to bring a team up to speed.
- Trust. When you work closely with a person, you know what you can expect from them. Besides, you can assume a current employee is motivated to add value to your company.
- Cultural fit. A permanent team member will already understand your organization’s beliefs, values, and expectations, while an outsourced specialist will need some adaptation time.
- Onboarding. The discussed above do not apply to a newly-hired architect; they come with time.
- High cost. Hiring an in-house expert is generally more expensive than outsourcing one. Taxes, rent, hardware, software, recruitment, onboarding, and training expenses, make many companies opt out of an in-house software architect. In addition, many architects avoid in-house positions and prefer working with different cases, domains, and team compositions. Their rich background makes them good architects, but hiring such an expert for a long-term role is either too expensive or impossible.
- Lack of available talent. Even if budget is not an issue for you, it can be very challenging to find a good architect who happens to be looking for an in-house position exactly when you need them.
- Prolonged hiring process. Because of the lack of available talent and the high salary expectations of those who fit your needs, the hiring process might take months, delaying the start of your project.
- Fast turnover. In-house employees, particularly those who are in demand, may be inclined to change their workplace. As a result, you might suddenly and inconveniently find yourself without an in-house architect for an upcoming project.
Outsourced software architect
- Cost-efficiency. With a fixed-price model, you pay only for the necessary services. Also, you don’t have to manage unrealistic salary expectations or demands. You can also be selective about your expert’s level of participation and do not necessarily have to hire one to drive your project from ideation to product release. Instead, you can choose to outsource any aspect of the software architect’s responsibilities.
- Larger talent pool. Top development vendors provide access to architects with varying levels of expertise and proven experience in different domains, so you can choose one based on your project needs.
- Better expertise. The architects available through development vendors often have many successful projects under their belt, making them utility players, able to address any need your project may have.
- Faster time-to-market. Since you don’t spend time recruiting, onboarding, and training, your time-to-market is accelerated.
- Fresh perspective. An expert who hasn’t worked with your team before often brings a new point of view, which can be extremely valuable in the software architecture realm.
- Security risks. During your work with an outside software architect, you share a lot of sensitive information with your expert. Hiring a dishonest or careless “specialist” can put your business at risk.
- Communication issues. Outsourcing allows you to hire an architect from anywhere, but if you and your vendor fail to communicate successfully, you can end up with missed deadlines, misunderstandings, mixed messages, and a project that suffers as a result.
Outsourcing offers an opportunity for better results at a lower price, but how to deal with the cons of outsourcing software architecture? The answer lies in hiring a reliable vendor with a proven reputation.
Software architect requirements, or what makes a good SA
Software architects should be developers (in fact, most of them were developers), but not all developers or engineers are good software architects. Why? And what makes a good SA? Below are some key traits and skills you should look for if you want to find a software solution architect who will fulfill their responsibilities with excellence.
Sure thing, an architect should have broad technical expertise relevant to your project. Usually, this means being equally proficient in several technologies — and that’s the first thing that differentiates architects from developers, who are typically limited to a particular tech stack.
But the most important thing is that their knowledge should be current. It is no secret that the software development industry evolves extremely quickly. It can feel like new frameworks, languages, architectural patterns, and development approaches are popping up almost daily. The very best architects stay current with these changes and can incorporate them on the fly.
Although, in theory, the role doesn’t require coding, a good SA should be comfortable doing so and do it with proficiency and in line with the current software development trends. It is an excellent sign when an SA does some coding from time to time, even just for fun. A software architect that hasn’t been coding for a long time becomes a theorist whose designs may not be readily implemented.
At the same time, a good SA shouldn’t be invested in or focused on a particular technology (while a developer should be). The ability to see beyond the code and understand how different system elements interact with each other is what sets a talented SA apart from a developer or a software engineer.
A software architect’s task is to listen to your requirements and design and develop a solution based on them. This requires the ability to successfully interact with lots of people across many business sectors daily, including project stakeholders, business analysts, designers, developers, and software engineers. An architect can’t excel without superior communication skills.
The SA should be able to explain complex things to non-technical stakeholders in a simple way, communicate the client’s requirements to the rest of the team in accurate technical language, and explain to a client what is possible and not possible to implement.
Creative, independent thinking
The software architect is a leadership role. Unlike developers and engineers that generally follow guidelines established by others, an SA makes important project decisions.
Good software architects like to figure things out for themselves and cannot be overly concerned if their opinion differs from the rest of the team. They have to be very confident about their work and their decisions, and that confidence has to be “contagious.” A talented architect can convince team members that their idea is a great one and pull everyone together. And their ideas work.
Some consider an SA to be a “robot,” handing down instructions on technology stacks to engineers and ensuring that all the guidelines are met no matter what. As a result, the tech stack defines the product, not the other way around. This limits creativity and innovation.
A proficient architect is a good listener (yes, in addition to being confident about their solutions). They are always ready to modify their plan to align with new circumstances as a project moves forward.
A great architect stays up to date on the latest tech and maintains a professional curiosity. When a unique system enters the market, they try to figure out what the system consists of and how its elements interact.
Running a software architect interview
This may be the trickiest part of hiring a software architect. How do you assess a professional that, from the technical point of view, is more proficient than you? What should you do if your area of expertise is entirely different? No worries, you can handle it; you just need to be strategic.
To check their hard skills, ask someone whose technical expertise you trust to help you with the software architect interview questions. Just remember that solid technical skills alone don’t make an SA a good choice. Questions like “what would you do if…” don’t help much since a candidate might just seem to be a perfect fit without really being one.
So, how can you identify a stand-out knack for software architecture? A tested technique will help you (and your company):
- Ask a candidate to tell you about a project they are proud of. Ask them to draw it up for you.
- Pay attention to their body language and emotional responses. Sketching out, explaining, and discussing something on the whiteboard is what “fuels” the best architects. If you see they are passionate about their project, and you start feeling their energy and enthusiasm, chances are you found a rare talent.
- Listen attentively to how they describe a solution. If you can easily understand what your candidate says (no matter how complex the system is), that’s a good sign. The ability to explain complex subjects easily suggests they will be able to create simple designs to address complex needs. It also indicates great communication skills.
- Challenge them by asking something like, “Why did you decide to use this or that technology?”, or say “I’ve seen companies solving similar problems with a smaller budget.” A good expert will readily answer your questions and respond to your suggestions. You can also challenge their solution with an alternative — if they haven’t considered it already and find it reasonable, they will easily incorporate it into their system. This is a sign that the candidate is not just flexible but also a good project partner.
Using this approach improves your chance to recruit a software architect that won’t disappoint you down the line.
As you can see, hiring a proficient software architect who is well-suited to your project is not as easy as it might seem. Partly because of the preconceived notions surrounding this job. Partly because the role requires broad expertise as well as soft skills that not every developer or software engineer possesses. Our recommendations can help you find a perfect fit for your project. And these tips are not the only thing we can help you with.
We are a software development company that covers all aspects of designing and building custom technical solutions. One of these aspects is software architecture consulting services.
We can assist you at every stage of the software architecture lifecycle, from ideation and writing an SRS document, through consulting your in-house team when the project is in full swing, to testing your solution for possible issues and making recommendations for improvements.
Just contact us — we can’t wait to start working with you!