First, you need to find out WHY the floor is uneven. Are the joists sagging? Then you might have some structural issues.
From your description, it sounds like you have no boards over the joists right now. Is this correct?
I would not cut the joists, as this will cause structural weakening. You might be able to use a block-plane to shave down a particularly high point, but I wouldn't plane too much.
As for the shingles, I believe your friend was talking about wooden, usually cedar, shingles. These are tapered, and could be used to shim up a low spot, but I don't think it's very practical for a big job.
If the joists are the problem, there are three scenarios.
Joists are twisted, but longitudinally level.
This is the simplest. If you joists are 2x8, then buy a couple of 2x8's and cut them down to the appropriate spacing. Then bang them in between every pair of joists to straighten them up.
Each Joist is level, but they have different heights
You could find the low ones and cut (rip) a thin piece off a 2x4 to attach to the tops of the low ones. It could be a bit tricky to get the thickness right.
Joists are bowed
I think the easiest option would be to sister the joists with new joists, only slight higher, so that the tops of the new joists are level and even over the entire floor.
However, you're probably not going to be able to tie the ends of the new joists into the structure. This means that they're going to have to be extremely well connected to the old joists. I'd recommend glue, and bolts with washers right through the mid-height line of both joists. (The center being the zero-force axis of a beam.) Drill the holes ever so slightly wider than the bolts, so that you can torque them nice and tight.