How to Build Modern Software Systems
What is a Modern Software System?
Successful business leaders that rely heavily on technology are constantly faced with the challenges of developing modern software systems and modernizing existing applications to keep their organizations at the forefront of innovation.
The role of a modern software system is to increase efficiency, enable innovation and provide outstanding customer experiences. It's important to understand that the software exists to support the business and is a combination of business logic, data and the relationships between the two.
Clear Definitions
In order to really define a modern software system it's important to clarify and define how the pieces that make up the system support the business. With so much jargon going around not everything means the same thing to everyone.
For example, backend means different things to different people in a development team.
Asking three different developers "What is a backend" can illicit three different answers.
A Node.js developer might say, "Well, the backend is the Node.js piece that is talking to the APIs for something else."
But a DevOps engineer would have a different viewpoint, "Well, the backend is the infrastructure that enables Node.js to talk to the APIs for something else."
And a full-stack developer might say, "Well, the backend is the piece of software that exposes the API that Node.js is talking to."
It's all about perspective. Clearly defining what a backend is in the context of the project ensures that the right people are focusing on the right things and that the structure of the project is clearly defined.
Poorly defined architectures give a less comprehensive view of a product and make optimization and innovation more difficult.
Clear Strategy
“"If developers don't understand the strategy of why they're doing something, they're going to be spending all their time in the code area, but forgetting that the code is there to support a business capability."Shaun Anderson, Field CTO, NearForm”
Develop a strategy that incorporates the organization's core technical strengths and where each part of the project is clearly defined as to how it contributes to business objectives.
Over the past 5 years the emergence of cloud computing , Site Reliability Engineering (SRE) , distributed services, regionalization and disruptive technologies such as React , React Native , GraphQL , among others have seen a renewed push for organizations to build more modern applications and software systems that take advantage of these technologies.
But in order to determine which technologies are going to support the business objectives there are some important questions that need to be answered.
- What are the business objectives the software will be supporting?
- What are the core skills already existing in the organization?
- What does each part of the existing system already do?
- Which issues is the current software experiencing that the new modern system needs to solve?
These are the types of questions excellent software consultants should be asking before any planning on a new system can begin.
Without full understanding and clear definitions, companies can make costly decisions about new technologies that will need to be fixed in the future.
How a lack of strategy and clarity can cause more problems than it solves
“"If you don't understand the requirements and the nature of the software, you're going to have the least common denominator. You want to understand how the software wants to behave, so you can organize your platform or your infrastructure to support it."Shaun Anderson, Field CTO, NearForm”
Here at NearForm, we are big proponents of GraphQL, when it is used in the proper context, but there are instances where GraphQL may not have the desired effect or, worse, can actually increase the total cost of ownership (TCO) of a product.
GraphQL is not a silver bullet. It must make sense in the overall context of the business logic and add value.
While GraphQL can be a great tool, it can also be a crutch that people use to hide poorly designed backend systems.
Let's say that a company has really bad APIs used by three different teams for a lot of important data that the application needs in order to function. It's easier in the short term to build a GraphQL interface than it is to fix the problem.
In this case, GraphQL actually causes more problems than it solves. It ends up just being a middleware layer that will grow over time. It also means a new team is required to maintain that in addition to everything else.
By analyzing the application beforehand and defining the real source of the problem as the APIs themselves that company could have redirected its resources into solving a core problem instead of adding an extra layer of abstraction on top of an already poorly performing infrastructure.
Clear Organizational Structure
“"Conway's Law states that applications tend to take the form of the communication path in a company. That seems backwards, though. The software wants to behave a certain way to support the business. If you understand that, it makes it much easier to organize teams and people."Shaun Anderson, Field CTO, NearForm”
The organizational structure should mirror the application structure. That's not to say that new software should be built to reflect the existing structure per se, but rather the company structure should align itself with the application structure.
To make this process more transparent and less confrontational Shaun Anderson developed the Swift Application Modernization Method , which is a process he uses with clients to define how a software application "wants to work".
With clearly defined processes and a clear strategy, the organizational and system structure will present itself organically. A strategic partner can help facilitate the conversations that bring clarity to the process and ultimately deliver a more optimized system that addresses business objectives in the way that makes the most sense to all involved.
When the system and organizational structures align it can open up new opportunities to understand how the system works and different ways of measuring important metrics that support business functionality.
How a Strategic Partner, like NearForm, can Help
Modernizing existing software systems is something that every successful enterprise will undertake at some point. The ones who come out on top are those that get the definitions, strategy and structure right from the beginning. The sad fact is most digital transformation projects fail for one reason or another. According to McKinsey , less than 30% of Digital Transformation efforts succeed.
A strategic partner that is experienced in multiple sectors has worked on vastly differing projects that deliver vastly different results and that knows how to establish the strongest foundation for each unique situation can vastly increase the chances that a digital transformation effort will succeed.
Realizing Exponential Benefits
“"The best way to approach this is not necessarily by just jumping in saying, 'Show me your code'', because that's an incremental benefit."Shaun Anderson, Field CTO, NearForm”
In the software development process, there are decisions to be made which can have either incremental or exponential benefits.
Take the GraphQL scenario from above, for example. Implementing the GraphQL layer on top of existing, poor APIs can make it easier for developers to work with those APIs but as long as the underlying problem is not addressed, those incremental benefits may potentially be negated by the cost of maintaining the system.
A strategic partner that clearly defines the application structure could recognize the source of the problem as the APIs, make recommendations for making them better and more performant and negate the need for a potentially cost-intensive GraphQL layer thus increasing the value deliverable via the APIs while also eliminating the need for a dedicated team to manage the GraphQL layer. The benefits are distributed throughout multiple layers of the application, exponentially.
Unlocking Innovation
“"If your goal is to innovate, then the majority is always wrong by definition."Shaun Anderson, Field CTO, NearForm”
Innovation comes at an organizational level. That's why it's important to have clear definitions, clear strategy and a clear organizational structure that mirrors the way the modern software system wants to work.
Strategic partners understand the importance of alignment across the board and how bringing everything together can unlock truly powerful and transformative capabilities and paths.
There is no secret sauce or guaranteed organizational structure that will work across all organizations. Each organization has its own unique nuances, strengths and weaknesses. Trying to copy another organization's successful path to transformation will almost certainly fail.
Each solution needs to be tailored to each unique organization in order to free up the full potential that innovation can unlock.
Identifying the Right Areas for Upskilling
A competent strategic partner is familiar with multiple ways to achieve a desired outcome and can help an organization choose the right path based on the way the system "wants to behave" in relation to the existing skill set in the company.
While many programming languages have similarities, not all paths to learning new technologies are the same. A strategic partner that understands a company's skill set and philosophy can work with the partner to bring along the developers in a way that is best suited for them so that they can get the most value out of any new technologies that will be used in the project.
NearForm can Help
With hundreds of successful software modernization projects under our belt, we have had the opportunity to work across a multitude of sectors and seen problems large and small.
We take a comprehensive approach to building modern software systems to ensure maximum value and efficiency are achieved for our clients while unlocking innovation and giving them the power to take control of their products once our engagement has ended. Contact us today to talk about your next software modernization project.
Insight, imagination and expertly engineered solutions to accelerate and sustain progress.
Contact