Software Development or Software Architecture Consulting? How to choose?
In these 24 years of experience in the technology market, we have noticed that many of the clients who come to SoftDesign in search of Software Development actually need Software Architecture Consulting. The difference between one service and the other is related to factors such as the stage of the digital product or service in question, the effective demand of the business, and the existence of previous issues.
So, in this article, we will clarify which occasions require Software Development and which require Software Architecture Consulting. To start, let us clarify who the professionals involved in these services are.
What is the difference between a senior developer and a software architect?
Many people believe that software architect is synonymous with senior software developer. The architect is indeed a developer, but his vision has become broader through the experience he has gained, so he has a complete sense of how solutions work at different levels.
This means that both the developer and the architect master certain programming languages (according to their specialty), but the architect understands more deeply, for example, about how that language interacts with the computer’s memory or how it will behave when using multiple server instances, among other cases. That is, the developer is a user of technology while the architect also understands the mechanism and its inner workings.
It is worth noting that software architects are not all the same. Like developers, they trace their own paths that provide them with knowledge about certain technologies or areas, which makes them experts. From these areas, they understand the deep criteria of functioning, for example: some architects are specialized in cloud services and microservices, others are more knowledgeable about databases, and there are also those specialized in security.
What are functional requirements and non-functional requirements?
One way to distinguish Software Development and Software Architecture Consulting services is to bring them closer to the requirements incumbent on them. Requirements are descriptions of what a particular system must perform – they reflect the client’s need for that specific digital product. There are functional requirements and non-functional requirements.
- Functional requirements: are about what functions the software should have, how it should react to specific inputs, how it will behave in certain situations, and even establishing what the system should not do. An example would be to say that the software must be able to issue bills or that it should allow the user to subscribe to a service. The construction of functional requirements is the responsibility of software developers and, therefore, they are met by the Development service.
- Non-functional requirements: are related to specific qualities and restrictions that the software must meet. There are product requirements such as reliability, efficiency, portability, usability and performance; organizational requirements such as delivery, implementation, and standards; and external requirements such as interoperability, ethics, security, privacy, and legislation. An example of a non-functional requirement is when we say that the software must have an Uptime (availability time) of 99%, or that it must be able to support up to 10,000 concurrent users, or that it must ensure that sensitive data is encrypted to prevent its disclosure. When there is a challenging non-functional requirement that needs planning to be done, then we need Architecture Consulting.
May startups and established companies need both services?
The differences between the professionals of these services and the requirements with which they work show us that Software Development is suitable for new digital products or services for companies and startups, and also for expanding existing software (which need new features to be developed) in controlled environments. This service has specific methods to help refine functional requirements, define them from a user experience perspective, and quickly deliver the new functions desired.
However, when the problem involves a bottleneck or point of failure in an existing software, or even a major technical challenge at the beginning of a new product, before development it is necessary to analyze and strategically think about the ideal set of technologies and tools for this situation. In this case, Software Architecture Consulting is responsible for providing the answer.
This means that this service will rarely be offered to an early stage startup, as in these cases the innovation is usually not in technology, but in a business model. Now, when the startup starts to grow and is not prepared for this – which sometimes happens exponentially and quickly – it may need Consulting to evolve its technology, increase the capacity for new users, new transactions, to absorb peak usage moments or even to reduce costs caused by vertical scaling.
Examples of real cases
Therefore, the Software Architecture Consulting client, in most cases, already has a digital product in operation, but it needs more than just evolve the functions of that product; it also needs to correct flaws and bottlenecks that already exist or will exist in the future.
Flaws that already exist may be related, for example, to technology gaps. In one of our recent clients, we were called on to help understand why the internal management web system frequently crashes, shutting down the operation and generating losses. The problem was in the database that became incompatible with the updates of the operating system, causing pool connections to crash and, consequently, the whole system crashing. The incompatibility was low-level and difficult to diagnose: it had to do with how the database used the server’s processor. To solve the issue, our team of architects presented some options and guided the client’s team in executing the fix.
Regarding bottlenecks that will exist in the future, these are usually linked to the business growth forecast. We served a client of a financial institution who knew that its number of digital transactions would increase and the software it owned would not support it. Our architects suggested a new stack (set of technologies), including not only the exchange of the programming language, but also of the entire architecture – migrating from monolith to microservice, and with a phased roadmap for the inclusion of API Gateway, Load Balancing, Tracing, Logging and Queues solutions. Each one of these solutions becomes necessary as the company continues to grow, and in this case, our development team was called upon to apply these changes.
Specific teams for each service
It is also worth emphasizing how different the teams in these two services are. At SoftDesign, the Software Development team is composed of developers, designers, testers, product owners and scrum masters, who build software and improve digital products and services using agile methods. In Software Architecture Consulting, the client has a dedicated project architect who makes a diagnostic chart, identifying solutions and planning execution. This can be the responsibility of the SoftDesign team or the client’s own team.
The architect who is working in Consulting also holds frequent meetings with our other architects to explore the issue and exchange knowledge. In other words, the client has access to our entire pool of architects, each with their specific experiences, who can contribute in different ways to the solution of the issue.
Now that you know the best service for your needs, just fill out the form to request a contact from a consultant. If you still want to see other cases of Software Development or Software Architecture Consulting, just click on the buttons below.
Ideas or feedback? Get in touch with firstname.lastname@example.org.