Lags mean that there will always be the stated gap between the prdecessor
and the successor. With a lag, if the predecessor is delayed, the successor
will also. Whether one should use lags or not depends on whether they
describe an accurate model of the real behavior. If I mail out a survey and
need to allow two weeks for the responses to come back, that two week delay
will hold true regardless of whether I mail that survey today or next week
and so using a lag in the link between "mail survey" and "analyze responses"
would be perfectly appropriate. OTOH, if I finish a task next week but
can't start its successor task until January because that when the parts I
need will be delivered, then a lag is not the most accurate way to represent
that reality. If I finish the task in two weeks, it can still start in
January. If I finish in three weeks, I can still start on the same day in
January,. Only if I delay the predecessor so that it itself doesn't finish
until January will I need to delay its successor. In that case, instead of
a 6 week lag in the link, a simple FS link with a Start No Earlier Than
constraint on the successor task is a more accurate model of what's really
happening.