Future-proofing an in-house application

I have a client that has a great in-house application that was written by a very talented programmer.

Unfortunately he has already left the company.

The project uses kubernetes and as of now cannot be used without kubernetes and outside of a specific cloud system as it also relies on the file storage of that specific cloud system.

As you might imagine there are no tests.

When the guy left he gave some explanation to the remaining engineers, but it was impossible to understand the whole system in such a short time.

There is some documentation, but it is not organized well.

Oh and they also don't know how to deploy a new version of the system.

So that's where I help them trying to figure out how the system works. Setting up a local development environment. Writing automated tests. Setting up the CI system.

Eventually, actually I hope very soon, we will be able to deploy a new version of the system to a new staging environment and once we feel comfortable with that then to the real production system.

The client used the expression: cleaning up the mess.

We will go into how to write code, and we'll create a culture and structure so that the code becomes resiliant (production grade), maintanable by the authors and even maintanable by people that get onboarded.

We will also go into architecture, UI/UX considerations and some machine learning, as that's part of the application.