I started my career at a very large insurance company in 2005 and for 9 months wrote no lines of code. I was documenting COBOL systems, sitting in disaster recovery planning meetings, all kinds of megacorp stuff that was soul crushing.

My next job, I was the only 'non-senior' on the team of about 12 that wrote all of the code that kept the manufacturing systems running for a very large international biomedical device manufacturer and since we were IT, we were on 24/7 pager duty.

Everyone from top to bottom at both companies were much like you describe- doing just enough to get by, punching the clock, and checked out. Not necessarily bad or dumb, but not necessarily good either.

Being a very outgoing person helped me stand out and I was never left out of meetings because I wasn't senior enough, either because I was lucky that these companies didn't do stuff like that, or because I was engaging enough for them to realize I may not have the title but I had the chops.

I've never again worked for a company that wasn't tech focused, and I've never again worked for a team that was a cost center (my teams made money from clients and we got treated better). The biggest company I've worked for since was 220, the smallest was 5.

As I've looked back on my path from Junior SD to Software Architect to running my own teams and companies I've realized two major things:

1) The megacorp stuff was god awfully boring and soul crushing. I connected with no one (I don't remember anyone I used to work with from those companies except maybe 2 people) but I was smart enough to pay attention to the good and bad things they did. From organization and procedure to inflexibility and beauracracy I was able to pick and choose some of the good habits up that you'd never get spending your career at startups.

2) If I would've stayed at either of those companies too long I would've burned out, or worse, gave up and stayed. It felt like being in an F1 car and having to drive in a school zone. I KNEW I could do cool stuff if I could find an outlet.

You seem to have the creativity and ambition to be very good at your craft and a company like this will squash it in the long run.

Make a list of things you think are good that they do (code reviews, mentoring, general procedural stuff, even if mundane). Make a list of things you think are stifling or dumb (old tech, no code reviews, 'senior' dev only meetings).

Use that list to make sure you're not going to get more of the same at the next company.

If you don't mind client work and love variety look for teams that do professional services work (like implementations for a software product/service company) or an agency (you'll get every variation of good bad and ugly there).

If client work or agency life is too stressful (and it can be FOR SURE) get on a product or service team.

You're still young enough I wouldn't recommend going to too small of a team/company too fast.

I see a lot of startup Cowboys that are good at rapid prototyping but are shit at developing something maintainable. There is a very happy medium between knowing when to go Cowboy and when to play it safe- if you do that you'll always be in demand.

The caveat to that is that I've seen big companies and big teams with awful procedures (or none) and I've seen 4 person teams that had a great workflow and process and shipped quality work fast and without very many issues.

The medium sized teams and companies seem to be a good middle ground of being visible, able to affect change, and having enough other people to lean on and learn from without getting brushed off because everyone is running 1000 mi/HR and has no time.