I have run in the woods with bears, climbed steep and sketchy mountains, rock climbed, tried hang gliding and paragliding, kayaked in rough waters. Most of that was quite safe, with well-qualified people, using the right equipment, with the right training and with the right progression of risk. That said, I have definitely held my life in my hands a few times,put my life in others' hands, and had other people's lives in my hand.
When you've had these experiences, technical risks are easier to manage. They don't become easy, but you go through the same mental checklists. "Can I close my eyes and pull my kayak skirt off if I flip in these waves" becomes "have a followed my backup routines, so if this push fails will I be able to recover in a reasonable timeframe?"
I've been a hobbyist programmer for most of my life. But now I'm dabbling in more meaningful and important projects. This is the perspective that makes me comfortable jumping into technical projects, without being paralyzed by the fear of breaking something important.
Some things that help:
- Keep your changes small. You should be able to fit the entire diff in your head and completely understand the purpose for every changed line. If you can't, split it up.
- Automate the process as much as possible. Invest in learning whatever tool works best for you (Fabric, Rake, Grunt, etc).
- Use a staging environment. This is especially helpful for catching issues like missing dependencies, DB migration problems, etc.
So I guess the goal is to improve the preparation of a production push.