It turns out I've been tying my shoelaces wrong for the last 30 years. I've been tying a Granny Knot, which results in an uneven knot that tends to come undone.
So first I made the trivial change to convert it to a Standard Shoelace Knot. The difference is due to the adjacent contact points within the finished knot. In the Standard Shoelace Knot, tension on the bottom part of the knot (due to foot movement) will pull the adjacent top part of the knot tight. In the un-balanced "Granny Knot" the adjacent contact points run in opposite directions so the same tension on the bottom part of the knot will work the adjacent top part of the knot loose.
For a couple of days I tried tying one shoe with a Granny and one with the Standard knot to see if either would come undone but neither did.
But now I've upgraded to using the Ian Knot. The end result is identical to the Standard knot but it's definitely faster to tie. I'm actually enjoying tying my laces now. There is beauty in its simplicity and efficiency.
Ian's website also has lots of lacing patterns, some decorative, some functional. The ones for lacing shoes for use on my mountain bike could be genuinely useful.