In my experience teaching people how to solder, there are two factors that account for about 99% of the likelihood of success: cleanliness and heat.
Any project time should mostly be surface prep - mechanically cleaning the surfaces with wire brushes and polymer scouring pads.
Both surfaces being joined need to be hot enough, at the junction point, to melt the solder. People always get impatient and use the heat source (iron, torch) to melt the solder, but this actually prevents it from adhering to the piece and makes a weak, unstable joint.
The longer the heat is needed, and the longer the solder needs to stay molten, the more critical flux is. Flux provides a powerful chemical cleaning at high temps, but it is also a physical barrier against oxidation. Oxidized solder is brittle, with a dull-matte appearance. Heavily oxidized solder can be chipped off with a fingernail and is pitted.
Hygiene comes back around after the work cools, too. The flux that prevents oxidation is mildly corrosive (probably won’t result in a chemical burn, but it will irritate the hell out skin), and leaving it on will slowly rot the solder joint. With soldered copper, verdigris around old solder joints is a dead giveaway that either not enough flux was used or that it wasn’t cleaned up. Douse and wipe the work with isopropyl - at least 90%, but higher is better and 99% can usually be bought at hardware stores.
Soldering is the hot glue gun of joining metals, but metal is super weird from a materials standpoint because they all have these incredibly different behaviors.
Anyway, I promised totally off-topic and this whole explainer was stubbornly knocking around my head so… now it’s here!