One-time-use software is easy to write.
It gets significantly more difficult if you want to generalize it.
To make it more resilient to unexpected or challenging contexts and inputs.
If you're assembling a one-time-use software out of existing, generalized building blocks, it can be easy.
The more often you run a given assemblage, the more effort you should invest in generalizing it, packaging it up into a reusable, resilient building block.