Hire the top 3% of freelance software architects.

Toptal is a marketplace for top software architects. Top companies and start-ups choose Toptal Software Architect freelancers for their mission-critical software projects.

We've been blown away by the level of talent we've been able to hire through Toptal.

Brad Rozran, Optimizely

Trusted by leading brands and startups

Our Exclusive Network of Software Architects

James Cahall

Software Architect

James is a results-driven, can-do, and entrepreneurial engineer with eight years of C-level experience (15+ years of professional engineering)—consistently... delivering successful bleeding-edge products to support business goals. He's an architect in innovative tech initiatives that add to and accelerate business revenue streams. He's also the CTO and lead developer of Toon Goggles—an SVOD/AVOD kids' entertainment service with 8 million users. 

Hire James

Chris Gunawardena

Software Architect

Chris is a developer/solutions architect with over 12 years of experience working for Accenture, Cricket Australia, RMIT University, and Sportsbet. He is a... full-stack developer capable of DevOps and automated testing as well as creating cutting-edge web applications. 

Hire Chris

Frederick Fisher

Software Architect

Fred is a versatile full-stack lead developer, technical architect, and entrepreneur with a proven track record delivering wide-ranging solutions from big d...ata systems to websites, mobile apps, and UX design. He is an expert in databases, Python, and JavaScript. He is also strong at data analysis, UX design, and communication.  

Hire Frederick

Barak Chamo

Software Architect

Barak is an experienced full-stack web developer based in London. He's worked mainly with startups building large-scale, data-driven web applications. Barak... loves working on new and challenging projects that push him to stretch his skills and learn constantly. 

Hire Barak

Dmitry Matrosov

Software Architect

Dmitry is a highly experienced full-stack programmer and architect. His primary area of expertise is back-end development. This includes creating the overal...l design, choosing a proper technology stack, coding, writing tests, creating deployment schemes, and more. He prefers using a Linux environment and open-source tools. 

Hire Dmitry

Piotr Gaczkowski

Software Architect

Piotr is the type of guy who likes to make his skills useful, whether it is through coding or organizing cultural events; he is satisfied when he sees other...s appreciate his work. His ideal projects include those that make a difference in ordinary people's lives by changing them for the better. 

Hire Piotr

Denis Glazachev

Software Architect

Denis is primarily a C++ programmer on high-load oriented, low latency, and distributed systems. However, he is also familiar and interested in various oper...ating systems and different programming languages and environments. Denis communicates extremely well and also has a strong computer networking background. 

Hire Denis

Stevan Popov

Software Architect

Stevan is Solution Architect with proven experience in delivering performant applications mainly focused on reporting, business intelligence, and Rest APIs... on high volume of data. He is experienced in database design, data modeling as well as distributed data storages including NoSQL and BigData technologies. Steven is able to communicate and work with team members in several time zones. 

Hire Stevan

Hire Software Architects Seamlessly with Toptal

1
Talk to One of Our Industry Experts
A Toptal director of engineering will work you to understand your goals, technical needs, and team dynamics.
2
Work With Hand-Selected Talent
Within days, we'll introduce you to the right software architect for your project. Average time to match is under 24 hours.
3
The Right Fit, Guaranteed
Work with your new software architect for a trial period (pay only if satisfied), ensuring they're the right fit before starting the engagement.

Tap Into World-Class Talent

  • Trusted Experts Only

    Trusted Experts Only

    All of our talent are seasoned experts who ramp up quickly, readily contribute as core team members, and work with you to minimize onboarding time.

  • The Right Fit

    The Right Fit

    We have a knack for matching you with the right fit. Start working with your new hire on a no-risk trial period, paying only if satisfied.

  • Scale as Needed

    Scale as Needed

    Hire in under 2 weeks and scale your team up or down as needed, no strings attached.

  • Seamless Hiring

    Seamless Hiring

    We handle all aspects of billing, payments, and NDA’s. Let us take care of the overhead while you focus on building great products.

  • Flexible Engagements

    Flexible Engagements

    Choose the engagement type that suits your needs — hourly, part-time, or full-time — with the ability to change anytime.

  • Expert Talent Matching

    Expert Talent Matching

    Focus on your project and enjoy support from your dedicated account executive and expert talent matcher.

  • 3

    SHARES

8 Traits of a Great Software Architect

You can see a business need developing. Maybe it’s a startup with a new product that the company depends on, or an enterprise business releasing a new product or feature to the mass public. Whatever the case, developing an application that serves said business need in an optimal way while maintaining quality code—this is no simple task. But who is responsible for designing the development plan or the project roadmap that will serve the business needs? Who is qualified to make such decisions?

These questions both have the same answer: a software architect.

But what exactly is a software architect?

A software architect is usually a developer with extensive end-to-end product experience, in addition to knowledge and skills in some non-technical areas that we’ll get into below. The software architect role is not even necessarily a full-fledged position: Instead, it’s more of a title that is given to a developer who has what it takes to take a business idea and turn it into a complete product.

Thus the software architect’s role is a blend of a senior developer, a team lead, and a CTO—but the proportions vary wildly throughout the industry. Let’s dive into what they typically have in common.

1. Software Architects Have an Eye for the Type of Client

A great software architect has an eye for the type of client they are working with. Some clients don’t have a clear vision of what is possible. They have no long-term plan for their product, constantly changing requirements and structure.

It’s the software architect’s job to have an accurate view of such approaches. This means presenting possible future plans and designs that could serve the development team to prevent breaking changes.

Or the early introduction of some features that may require heavy refactoring in the codebase or even data migrations if presented late. For example, a migration from a NoSQL database to an SQL database might take weeks or even months to prepare for. The scripts and procedures to maintain consistency of the data and a rewrite of the back-end functionality to work with the new database is not an easy task.

The other type of client is the one who knows exactly what he/she wants. They have a clear roadmap for the product and a clear vision. They still fall short on some things, and business usually forces the roadmap to change sooner or later. But at least they have a plan. This type makes the life of a software architect much easier, but it introduces some challenges. Firstly, the software architect needs to make sure that the roadmap actually has a reasonable timeframe (discussed below). Secondly, sometimes it introduces constraints like the integration with a badly documented API just because it’s cheaper for the business to use that service for example.

2. Software Architects Understand Business Requirements

A top software architect is able to communicate effectively with the business owner, the CEO, or the client. They are able to tease out exactly what the client has in mind for the output while keeping the technical difficulties and challenges in the back of their mind.

Software architects are able to effectively:

  • Discuss requirements and challenges with technical and non-technical clients alike
  • Simplify and draw a conclusion to the client’s requirements

And on the development side, they are able to:

  • Draw a sketch of the relevant data models and how they are connected to one another
  • Understand the best language(s), database(s), and tools that best serve the project’s requirements
  • Dig deep into the requirements and extract the tiniest details to explain and discuss with the development team

Without these skills, a software architect will be building the wrong product from the beginning—an expensive strategy, to be sure!

3. Software Architects Excel at Time Management

A great software architect is also able to manage their time effectively. A software architect doesn’t have to be a team lead: They could be the sole developer of a product or a member of a team of developers.

That said, a software architect acting as a team lead will know how to quickly learn the capabilities of the team they’re leading. They’ll be able to reasonably estimate the time needed for the development of the product, taking into account emergencies, delays, or other problems that may arise. In other words, they’ll be able to give a best-case- and worst-case-scenario estimate for the time needed.

As for software architects working as team members, they are responsible for listening carefully to the estimated time proposed by the team lead and the requirements to be delivered and setting a personal timeline for delivery. They are also responsible for pointing out to the team lead any points they might have missed and/or anything unclear in the requirements given.

4. Software Architects Are Usually Polyglots

Software architects understand that there is no tool that does everything right. Nothing suits everything perfectly. The same concept applies to programming languages, frameworks, libraries, and databases.

Although most popular programming languages can get the job done, they’re not always the best choice for developing the product at hand. Take Node.js as an example: Certainly, it’s a great tool for almost all applications, but it’s not always rainbows.

Having to deal with things like the event loop and blocking code might sometimes slow execution if used in the wrong way, harming the resulting user experience. So while Node.js may be an architect’s personal favorite to develop with, they might put it aside in favor of a Golang-based approach when concurrency is involved. Likewise, they might recommend a Ruby on Rails back end when the client is in a hurry and doesn’t need fine-tuning: Rails’ copious use of magic means it serves as a very effective rapid development framework.

Not only is it a matter of choosing the right programming language, but also about deciding which database to use. Software architects’ first decision is whether to go with an SQL database or a NoSQL database. That depends on multiple variables that are set during the software design phase.

Even after that choice is made, another choice has to be made: Which exact database will be used? Should you go for PostgreSQL or MySQL, if you’re using an SQL database? Should you go for MongoDB or CouchDB, if you’re comparing NoSQL databases?

This is just a simple example that can sometimes be solved by personal preference or the comfort of the development team. But sometimes it will depend on other, non-trivial factors. For example, if you need to store time-series entries you would better off using a database that is optimized for that, such as InfluxDB. It’s no longer a preference, but instead a need: for the sake of performance, scalability, and future-proofing.

The bottom line is that software architects don’t confine themselves to a certain programming language or paradigm and use it everywhere for everything they do. They understand that every tool is suitable for a certain job and instead of being repulsed by change, they embrace it.

5. Software Architects Know the Development Community

Software architects are aware of their wider developer community and its adoption of new trends. They don’t follow trends blindly but instead keep an eye out for potential solutions that can disturb the industry. They may even become an early adopter of a certain technology, in some cases: Flutter was adopted by some companies to develop cross-platform mobile applications before the release of its first stable version.

This isn’t only about new trends, but also about awareness of current technologies. Sometimes a technology gets overtaken by a competitor that serves the same purpose but delivers better features or experiences. For example, Docker Swarm was in a tight race with Google’s Kubernetes for a few years, until it was obvious that the community was more interested in Kubernetes.

A great software architect is aware of such changes in the community. They know it would be pointless to look for developers or DevOps engineers with experience in Docker Swarm when it’s clear that Kubernetes is taking over and sticking to the current technology might be more harmful to the company and the product more than the good it is delivering.

6. Software Architects Know When to Break Code

Sometimes a product is already built, and in many cases, its existing functionality needs to change. This could be a management decision, a decision made for security reasons, or a number of other reasons.

Other times the code might be good, but the app’s popularity is growing really fast and there is an increased demand on the features to be delivered.

These are some scenarios that a software architect might be challenged with. And their solution might be summarized by one word: “breaking.”

Breaking the code can have two definitions.

The first type is the introduction of solutions that change how the application behaves. It could be for the sake of code readability, the ability to debug faster, or for the performance and/or stability of the app itself.

For example, Stripe used to support cryptocurrencies. An app using Stripe had to have a chunk of code written in its back end to handle transactions with such currencies. When they decided to end support for cryptocurrency payments in 2018, they broke their codebase. They also started a race-the-clock situation for all clients that had implemented the cryptocurrency API—they suddenly faced a deadline either to stop accepting such cryptocurrency payments or migrate to a different payment gateway, at least when handling that kind of payment.

The second type of code-breaking is related to splitting up the codebase. Sometimes applications get so big that they become slow, or too incoherent and dependant to work with. Other times it’s simply the fact that one feature of an application is used more than another.

Facebook, for example, has separate back-end applications for chat, news feed, games, and other features. Imagine that Facebook had a surge in usage for their chat application. If they had to scale everything related to Facebook just to serve the demand for the chat feature, that would be a really expensive scale. This is why each large feature of an application is usually supported by its own set of back-end services. These microservices can scale fast with a low initialization footprint.

7. Software Architects Know How to Be Cost-Effective

A software architect can also be responsible for making decisions about your app’s deployment. If you’re a startup and you still have a small number of users, it doesn’t make sense to start deploying your application on six different servers distributed in three different regions with three replicas of your database. It’s also illogical to deploy your application, database, and user-uploaded files all on the same five-dollar server with no backup.

Both approaches are wrong. The first is overkill and the second is far too risky. Software architects can predict the size of hardware needed to run your application and use it in a safe manner, without spending too much money on idle servers.

But being cost-effective is not just about deployment and servers. It can also be about the development team that is going to work on the product. We’ve seen it happen where a team of four junior developers was hired, estimated some work would take two months, and delivered the product in eight. Meanwhile, the quality was low and the code was undocumented—a burden for the team that would end up maintaining it.

Great software architects know that it’s better to hire two seniors who will develop the application in a clean, structured way in three months. Sure, everyone has to start somewhere, but the point is, a software architect team lead should have the ability to know when and where to invest the client’s money and resources, and when it’s simply a waste.

8. Software Architects Have an Eye for User Experience (UX)

A software architect is not simply a coder, but instead, they are able to put themselves in the end user’s shoes. They have an accurate idea of how the user will behave. Software architects are also able to gauge how easy is it to deal with the system. Although the main responsibility for that point lies in the hands of the UI/UX designer, it’s still coupled with how the system works in the background.

The development team always knows their way around the app they’ve built, which sometimes makes them forget that new users will need to adapt to new icons, UI flows, or features added to the app. The challenge is to make this adaptation as smooth and short-lived as possible. This happens by following market trends in design. After all, what’s considered “intuitive” is an ever-changing target, complicated by expectations created by other apps the user interacts with.

But even within that, there’s room to make things as simple and consistent as possible. For example, we’ve seen an app in production where the user’s name acted as a link to open the user’s profile, but the user’s picture was left with no action when pressed.

The default behavior that people are used to is that when you press on a user’s picture or the name, you open the profile or a summary of the profile. This is the current standard since it makes it easy to access relevant profile info. But in the example above, on a relatively small screen, it was hard to press on the name and sometimes required multiple presses to get it right. Such a design might even suggest to users that there is no way to navigate to a profile through this context.

Another UX snafoo we’ve seen in production is attaching the functionality of the navigation drawer button to the floating action button (FAB). This is just counterintuitive. A great software architect will catch such issues in the design stage.

In terms of UX, a software architect basically follows one rule: Make it as simple as possible.

The Software Architect in a Nutshell

Software architect is not a title that just any developer can hold, and now you’ve seen the criteria that sets one apart. Software architects have a huge responsibility for what is delivered to the client, and also for making everyone’s lives easier. Choosing a great software architect for your next project is a key ingredient in delivering a successful product—so choose wisely.

Top Software Architects are in high demand.

Get Started