As a software architect, you’re going to implement some big ideas – but you can’t lose sight of the details.
Software architecture has obvious appeal for the programming elite. Architects no longer spend their time down in the trenches writing code for individual features, but rather take a ten-thousand-foot view, coming up with the structure for a system, laying out the functional requirements, and establishing coding best practices for a team. Every developer who’s struggled to work within a poorly designed system has no doubt dreamed of being the one doing the designing.
But beware. Architects who don’t stay grounded and up-to-date risk creating organizational chaos by designing systems that developers find difficult or impossible to maintain. Software architects truly shine when their work paves the road for developers to thrive, and helps them coordinate with other groups within the company.
The software architect job description
A software architect is responsible for high-level design choices when it comes to creating software – sometimes for a specific product or project, or sometimes for an organization as a whole. They’ll help determine the software, development tools, and platforms that developers will use. They also might set coding standards that others will follow. They use their knowledge of the current state of the art, their industry, and their organization to determine the best path forward for their teams.
This isn’t an entry-level job, but rather one reserved for someone with a lot of deep technical knowledge and, hopefully, the organization and team they’re working for. Architects should be involved in a project from beginning to end, helping gather requirements and doing high-level design for new applications, often using Unified Modeling Languages (UML) or similar tools.
The name “architect” naturally conjures images of someone designing buildings that other people build. But software architect Alan Tai thinks that analogy isn’t quite right. Software applications aren’t static, like buildings, but living, changing things, like cities, making a software architect more like a city planner. Just as a city planner needs to get out of the office and walk the streets in person once in a while, a software architect needs to get into the trenches now and then, understanding how implementation is going and how an application is performing once it’s been rolled out to production.
Roles and responsibilities
That should give you a taste of what a software architect’s job is all about. On a day-to-day basis, a software architect will spend their time:
- Determining what technical standards and tools are best for a project or the organization as a whole. This will involve self-directed research and evaluation.
- Analyzing the goals of a project, breaking it down into discrete areas of functionality that can serve as the basis for applications or microservices, and designing the whole structure using UML. In some cases, an architect may need to consider whether a project deserves internal development resources at all, or if an off-the-shelf equivalent can be used instead.
- Helping software teams understand the business requirements and criteria underlying their current project.
- Assigning specific development tasks to individual developers or groups.
- Performing QA assessments on the project codebase.
- Writing code themselves that will make up part of the project.
Those last two points are important to keep in mind. A software architect is almost inevitably a former software engineer (or holder of a similar programming job) who’s been promoted. Good software architects don’t lose touch with coding. But as many software engineers can testify, not every software architect is a good architect. Some developers view anyone with the title with suspicion, expecting them to happily outline idealized plans that others have to actually execute.
Joel Spolsky, a longtime technology commentator, identified this type of architect twenty years ago and dubbed them “architecture astronauts”, because they’re so far above the ground-level development process, that they’ve lost touch with the reality of building the thing.
Software architect vs software engineer
As should be clear from this description, a software architect is usually someone who’s emerged from the ranks of software engineering, and will typically be above software engineers on the org chart.
They’re taking their software engineering skills and applying them to the big picture. In larger organizations, software architects and lead developers fill complementary roles. The architect focuses on the big picture, thinking ahead to future releases and planning for the whole lifecycle of the current product and its interaction with other products the company is putting out. The lead developers oversee software engineers putting that vision into practice. Some smaller companies may combine the software architect and lead developer role.
Software architect career paths
To become a software architect, you will need a firm grounding in software development. If architecture is something you can see in your future, you might want to stretch yourself and try to gain some experience in multiple types of programming – both frontend and backend, say, or both enterprise and mobile development – because you may find yourself building systems that span across these paradigms.
Once you’ve achieved status as a senior developer, you can start thinking in terms of an architect “track.” As noted, some smaller companies may include architect duties in the lead developer role, which could be a good way to gain experience and acquire some of these responsibilities.
The skills you need
If you decide to pursue a software architect role, you’ll need a well-rounded skill set. Let’s start on the technical side:
- You need to have a solid programming background. You should be well-versed in the languages and tools that your organization will use, and be able to quickly understand the potential in new languages and platforms that emerge, because part of your job will be to assess those for use by your team.
- You should be well-versed in the software practices your organizations use, as well as others that you might be assessing for future use. In practice, that means understanding the importance of process and routes to more effective software delivery. That could mean a background in DevOps, or ideas about what could come next.
- You need to be familiar and comfortable with tools for diagramming complex software architectures. While there are plenty of tools in this area, the gold standard is Unified Modeling Language (UML). The Object Management Group offers various UML certifications that can be a great way to showcase your skills here.
Leadership abilities are also key for architects. You are going to need to get buy-in for your vision from developers who aren’t necessarily your direct reports. That means not just coming up with good ideas, but being able to communicate those plans and convince developers that you’re right.
You’ll also need to be able to balance competing goals from different groups across the company, and ensure that management understands the constraints your team is working with.
As an upper-level member of the team, software architects can expect to be well compensated, though as always you can expect a wide range of salaries depending on experience, industry, and geographic location. Pulling from some publicly available sources, here’s what you can expect in terms of pay as of this writing:
- According to Glassdoor, in the United States, the average compensation for a software architect is around $174,000, with around $132,000 of that being base salary and the rest additional pay in the form of bonuses, stock grants, and so on. That average is part of a typical range that can go from $136,000 on the lower end, to $225,000 on the high end.
- In the United Kingdom, compensation is lower, according to Glassdoor: the median pay is around £87,000, in a band that ranges from £66,000 to £116,000.
- That’s not too far off from what you’d make in Germany: Glassdoor pegs the average there at €90,000, with an expected band ranging from €75,000 to €102,000.
- If you're looking for an architect role down under, the average pay in Australia in this role is A$150,000, according to Glassdoor. That can dip as low as A$122,000 and go up to A$182,000.
- If you’re interested in an engineering management job in India’s burgeoning tech industry, Glassdoor says you can expect an average pay of around ₹3,100,000, but that’s part of a typical range that can run from ₹2,000,000 to ₹4,000,000.
Overall, a software architect can expect to be well-compensated. That’s as you would expect for a role that many would see as a capstone of their career.
The key to excelling in the role is to remember where you came from and forge a path that pushes your organization forwards and helps your colleagues make that vision a reality.