I'm using NOLOCK; is that bad?

Yes. Sure, there are edge cases where accuracy is not a priority, but they aren't that common. When you're looking for ballpark estimates or grabbing a random row, go nuts. But please don't defend, propose, or implement a policy like thou shalt use NOLOCK on every table reference ever. If you don't think those policies exist, take a poll; good luck falling asleep now.

Anyway, here are some resources about NOLOCK, with a lot more detail than a vague "thar be dragons" warning…

So what do I do instead?

Typically, the solution to the "readers blocking everyone" problem is to use read committed snapshot isolation (RCSI). This option isn't free, but if you are querying an Availability Group secondary replica, it's the behavior you're getting anyway. Michael Swart, Kendra Little, Erik Darling, and Paul White discuss some of the ramifications in the following posts: