Get good at the three point turn.
This is a stable way to make changes on any system that has a dependency on another platform, repository, or system. It's good practice for anything on the web, as users may have logged in or long running sessions, and it works for systems that call each other and get released on different cadences.
We use a little bit of property testing to test invariants with fuzzed data. Mutation testing seems like a neat inverse.
I think the best thing to do with TDD is pair with or convince devs to try it for a feature. Coming at things test first can be novel and interesting, and it does train you to test and use tests better. Once people have tried it, I think it broadens your use of tests pretty well.
However, TDD can be a bit of a cult, and most smart and independent people (like people willing to work at a <20 person company) will notice that TDD isn't the silver bullet it's proponents make it out to be.
JSON5 is a superset of JSON that supports comments.
XML to transform XML to import into more XML? Can't we just have a config file that isn't setting up some big tie in?
I don't know if it's actual json5, but eslint and some other libraries use extended, commentable json in their config files.
XML would be great if it wasn't for the extended XML universe of namespaces and imports.
Github actions is good for us, but honestly just because that's where our code is.
My team has just decided to make working smokes a mandatory part of merging a PR. If the smokes don't work on your branch, it doesn't merge to main. I'm somewhat conflicted - on one hand, we had frequent breaks in the smokes that developers didn't fix, including ones that represented real production issues. On the other, smokes can fail for no reason and are time consuming to run.
We use playwright, running on github actions. The default free tier runner has been awful, and we're moving to larger runners on the platform. We have a retry policy on any smokes that need to run in a step by step order, and we aggressively prune and remove smokes that frequently fail or don't test for real issues.