Predictability and reliability of watering are my highest priorities. MUCH higher than the convenience of automatic adjustment or simpler schedule creation. Based on what I *think* know about OS scheduling, I build programs where every zone starts at a specific time, the run time specified is the max that they can run, and nothing runs in parallel (though I wish I could explicitly control this when I know that some zones can run in parallel with other zones). I make manual adjustments when I want to. A simplistic example is: spring 50%, summer 100%, fall 50%.
I do not have to worry about teh impact of potential day overruns or pushing one programs zone schedule into the next. When watering is adjusted down it leaves time gaps between when one zone stops and the next begins, but it always does what I expect/programmed.
Perhaps as I gain more experience with OS scheduling I’ll try some other techniques.