Types - I worked on an enterprise Java application for a few years and grew to hate them. What I actually hated was J2EE, but at the time I didn't know that. So I swung hard into "You don't need types", only to work for another two years on the world's worst Node.js app. I was young, I was naive, I didn't realize how bad things could get. We didn't have anybody that cared about testing, and I'd never been around testing, so I didn't either. It was a mess. More of a mess than J2EE ever was - we were constantly writing code on quicksand. So now I'm back to types for the most part. I think 2012-but-actually-2007 era Java was also part of my pain, and a few years ago I moved on to Go/C# and have been very happy.
Testing - as noted above, prior to my last two jobs I had never had any experience with people pragmatic/dogmatic about testing. At my first few, there just wasn't any testing, for better or worse. I worked on a team with a person that was fairly dogmatic about TDD, and I spent almost a year painstakingly focused on caring about testing. What I found was that focusing on 100% test coverage across each layer of your app is a fool's errand - you'll never get to where you think you're going. All the tests in the world are useless if you're bad at writing tests, which (at that job) we were. I've now moved onto "Just enough E2E/Integration tests" as a paradigm. If a PR contains _some_ testing, and that testing is focused on making sure units of logic work together, I feel much better. Prioritizing fast and easy response time to bugs, and making sure that all the test we contribute having meaning and add value, as opposed to just mindlessly boosting our stats has been a huge boon.