hey, hi! Thanks for asking!

Let's say to deploy change I do "git push" and that's it. Everything else is done for me.

In the case with the app you described – you have already done major part of heavy lifting with the initial setup.

In your case you are not using git, it means you might have problems adding anyone else to help you coding.

Side note: if you are not using git you can easily lose your code if you don't have any other backups if the server goes down and something happens with your computer at the same time.

Now, variables, credentials: something tells me you have them in your code, which is bad. If you just add git, it is even worse – you will have them in a repo and again it is bad.

Now imagine the situation when you need to move to another server. You have all your code in the system, no containers or dockers. My gut tells me that you don't have scripts to automatically install everything on a new server. It will be a nightmare to install everything and try not to forget how they were set up(judging from the Django version it was a very long time ago).

What you have it works now, but such setup makes you absolutely unprepared for any change(new people, migration to another server, etc).

So, those were bad things I pointed out.

Let's see what (in)direct benefits of using a "middle-software":

- you will use git. It gives you a chance to add new people to the team, code history, code backup
- Your task as a developer is to git push the code. DEPLOYMENT is not exactly the concern for a developer.
- You are forced to have more up-to-date workflow. App should be tested before going out or at least should have ability to be tested. Tests are exectured by CI/CD of some sort. So you have to work in the way to be ready for that.

So, what I am trying to articulate here is that having benifits of modern tools to work in team, test the app, check code quality to eventually have better application requires certain approach to storing your code and deploying it in automated fashion. By doing it manually over ftp/sftp and manually running commands to update/restart it – you are not letting yourself to use other modern teachnologies and tools. And they are middle-software in their niche/for their task.
So, if you want better quality software of yours – you shoudl use many other things that you can called "middle-software".

When we work alone and we are not used to work with all modern tools we choose workflow that is super fast and convenient for us at that point.
I too back in a day was running production server running in "screen" and cmd/ctrl+s applied my changes and it felt logical and very easy.

What I realized that this setup is impossible to control and especially replicate. And everything falls apart when you have somebody else who needs to make changes.

Fast forward, 2020 – I don't want to think about two things: server configuration and app deployments. I want to push my code and see changes. I want to be able to invite others to my git repo and nothing in workflow should change.

When you do things manually it just doesn't happen without pain.

I hope I gave you a good enough answer, and examples and metaphors to articulate my ideas in this very huge topic.

Wish you a great day!