Software Engineering builds two Things
When we write software, we build two things.
The software that provides the business solution.
A software ecosystem in which the solution runs.
You'll need more attention to the ecosystem as time passes.
In the Beginning
Initially, you start with something simple: you have computation and storage (possibly located in the cloud, but it does not matter for this discussion). You use this to implement your business logic and provide a user interface generated by presentation either for web or mobile devices.
The ecosystem is super simple, and because of this, you hardly notice it. All your attention is spent on providing an excellent experience for your users.
Then, you decide you need authentication and authorisation and that containers make sense to help isolate the growing number of applications from one another.
Your ecosystem becomes:
And you attract more users. This is great.
Recommended by LinkedIn
To handle the additional load, you expand your technical infrastructure, and your ecosystem becomes:
You update your architecture with logically centralised storage and improve your configuration so that all of your services uniquely identify the API invocation (to help run down errors). You install additional services to centralise logs and put into place both run-time monitoring for better fail-over response and metrics so you can measure end-to-end performance.
These improvements do not provide new features; they enhance how you deliver them, enabling engineering to achieve more for the business in the future.
You Hire
By the time you get to ecosystem version three, you realise you have created a new system requiring full-time attention, one that cannot be solely looked after by software engineers.
Your software engineering team provides product solutions.
It would be best if you now had an additional team to maintain and develop the ecosystem.
The Future
As your business implements new features, you increase the demands on your ecosystem. Every feature asks questions about what you currently have in place.
Pay attention to your ecosystem to ensure your features are the best for your customer.