I've been increasingly working on serverless systems, and the hardest practice for me to switch to in this list is that a function should do only one thing. Everything I know about software tells me this is true, but I haven't yet formulated a system I like for managing all those functions. They each need (git) version control, along with continuous test and deploy logic, and support for rapid rollback if a deploy goes wrong. Managing that all from a single repository will require a system for managing it, and using hundreds (or thousands) of git repositories seems daunting. I'm sure this has been solved, but I haven't found it yet.