Man, so many red-flags in what you posted.
So, full-disclosure: I come from Ops. These days I'm more an orchestrator/developer than a hardware/bios/cable monkey though. For context my last deploy was 2,500~ physical machines. So I'm not the kind of ops that the parent is talking about.
Now, if you don't have the money to do cloud, and you don't have the headcount/experience to do self-hosted properly; then you're _done_. You will accrue technical debt at an exponential rate. At my last job Ops on the production environment was done exclusively by developers.
When I arrived it was an absolute shit-show nightmare. Silent data corruption, weird dependencies on services which were not highly available, hand-built machines, next to "cattle" but which had multiple deployment scenarios (capistrano, chef, bash, PHP kludge) none of which were documented.
But the worst thing was definitely the silent data corruption.
I agree in part with the parent, Ops is a dirty word. In my current company there's a separate "Ops" entity which is a true horror show exactly as he describes. However having people trained on ops in your team is -absolutely essential- to doing devops correctly. Developers and Operations think differently. It's a gross generalisation and there are exceptions but by-in-large developers are focused on "how can I make this work" (even robustly), where operations are focused on "how can this break and what are the implications if it does" and those methodologies are intrinsically opposite to each other. A defensive programmer is a great thing but they are not only rare they are not a panacea.
--
Pick a side; do cloud or hire an ops.
Cloud is basically "ops as a service", giving you all the tools you need to get by efficiently without classically trained sysadmins. I really promise that you will not get very far without someone handling this side of things for you, whether it be the SRE's at google/AWS or someone you hire.