If you have a good codebase, a good team, and strong product direction behind you a lot of the more abstract work you're describing goes away because most of those decisions were made weeks, months, or years ago by the time you're ready to put pen to paper on the actual code. Maybe that's part of why your experience is so different?
Sometimes, one of those decisions was right in the past, but is wrong in the current context (eg. the company is now trying to get governments contracts). Changing one of these have rippling effects on all the decisions, so you're trying to reconcile the two sets in a way that minimizes the need to rewrite code. It's more like a research lab than a factory assembly line.