If I think about it, my programming jobs have usually been for large projects. Either from a lack of will/ bad programmers/ incidental hobby that became production code, I seem to join teams when the company has suddenly recognized the value/ potential for the hobby project and they want to expand it. Unfortunately, my first task at each job is always:
"This project has large amounts of dead code/ unintelligible comments/ giant monolith functions. I need 3-6 months to refactor it and add unit tests before I can meaningfully add features to it." Every project I've been on has mostly been: remove 50% of the code to be able to add in the additional 10% I needed. The hardest part about this is convincing the PM that this is a necessary task in order for the project to succeed and sometimes getting the support of the programmers who have been delaying actually fixing up the code. (They know it's bad, but whosever 'baby' it is doesn't want to plan a rewrite, so you'll have to instead slowly refactor 1000's of lines of code).
Maybe if you're a junior programmer, you won't be assigned anything like "manage this project", but the majority of my programming career has been fixing the mistakes of past programmers.
Story:
My first job out of college involved writing automated tests for some Firmware. There was a guy who was a contractor there who had been writing code for the past 20 years or so. Never went to college, completely self-taught. This guy was managing tests that absolutely everyone else refused to even look at. and it showed. So eventually he puts in his 2 week notice to go work somewhere else, and I'm assigned the task of taking over his test automation.
I start reading through the code and I'm thinking "uh no. This is completely, 100%, a nightmare." Looking through just one test, I found a section of code that was a nested combination of for's, while's and if's that frequently went 20 sections deep inside of tests that would regularly run 500-800 lines long. Not even exaggerating. I bring this guy into a meeting, and I say "what is all of this supposed to even do or mean?" He gives me some crap about what it's supposed to do, but the thing is riddled with bugs, so if anything went wrong, he'd just say "well just put another if statement in there. This isn't hard." I was completely aghast. I told him that this is not how you write code and present some basic ideas about how to separate your code into 'functions' etc. He stops me about 10 minutes in cause he's this 40 year old getting lectured by a new college kid. He says "I've been coding for 20 years, I think I know what I'm doing." He left the room, and I never talked to him again.
The big companies seem reluctant to hire people without a degree for a good reason. A bad coder can waste not just his own time, but the time of coders around him and after him. Anyway, kind of off-topic, but that's an insight into the tech industry or you.