You've started a new project. When should you start using it "in anger", "for real", "in production"? My advice is to do so as early as you can.

I did this for my newest project. I've been developing it slowly, and things had matured enough that it could now actually do things. I set up two instances doing things that I, and my company, now rely on. If the software breaks, I will need to take action (disable the broken instances, do things in another way until I fix the software).

The point of doing this early is that it gives me quick feedback on whether the software works at all, and makes it easy to add new features, and makes it easier for others to try out the software. (When I announce it publically, which I'm not yet doing.)

  • I see quickly if something doesn't work. (For now, it does.)
  • I see at once if there's a missing feature that I urgently need. (I have found two bugs yesterday.)
  • I see what is awkward and cumbersome for configuring, deploying the software. (So many interacting components.)
  • I see if it's nice to actually use. (I need to find someone to write a web interface, and need to improve the command line tool.)
  • I see if the performance is adequate and get an idea what the actual resource requirements are. (Not many resources needed for now. Even the cheapest VM I could choose is adequate.)
  • I get more confident in the software the more I actually use it. Writing a test suite is good, but real use is better. Real use always comes up with things you didn't think about writing tests for.

In order to set up not just one but two instances, I had to make the deployment automated. (I'm that lazy, and I don't apologise for that.)

Thanks to an automated setup, when I add features or fix bugs, they're easy to roll out. It's now almost as easy as just running the program from the source tree.

My development process is now, I write tests; I write code; tests pass; I tag a release; I let CI build it; and I run Ansible to upgrade everywhere. About 15 seconds of work once the tests pass, though it takes a couple of minutes of wall-clock time, since I run CI on my laptop.

Apart from the benefits that come from the features of the software itself, getting to this stage is emotionally very rewarding. In one day, my little pet project went from "I like this idea" to "it's a thing".

I recommend you start using your stuff in production earlier rather than later. Do it now, do it every day.