* Writing test first is simply unnatural. Way more developers need exploratory session to even discover what are they supposed to do.
* That's because our spec is always vague and no amount of Agile process can help it.
* If you have a bunch of idempotent functions, they are the easiest to write tests on. So I would start there.
* Some languages are easier to do unit tests on, for example: Go. It gives everything you need: test runner, benchmarker, data race checker, unit test struct is part of std library, etc.
* This DSL: `describe(){ it "should work" { result.should eq true } }`, is nuts and counter productive. People are already not writing tests and you are adding another friction?
* To write or to not write mock? This is a controversial one, but in my opinion, it is simply practical to test directly on the database you are using. Your CI/CD should just prep the database you need instead of mocking. Once again, people are already not writing tests, don't add more frictions.