It depends on the complexity of the pattern, but for the most part, I’ve found that learning to read my knitting is the easiest for me. If I’m knitting along, I’ll turn and go on to the next row without even thinking about marking anything. Periodically I’ll stop and count the rows since my last landmark (a cable twist, an inc/dec, pattern stitch change, etc.), double check my pattern and calculate how many more rows I have to do in pattern.
For instance the piece I’m working on now, required 14 rows of 2x2 ribbing then a dec then 12 rows of 2x1 ribbing then an inc then another 14 rows of 2x2, another inc, 15 rows of stockinette then more inc. Since I can easily see the inc and dec rows, I can count from those points to see when I have to switch to the next part of the pattern. Same for my cable pattern, I know that I have to twist the cables on every 6th row, so I find the last cable twist, count the rows since and I know where the next one goes.
HTH