Simple terms, your plastic pooping robot isn't pooping enough plastic. OK, smart-alecky comments aside. it really is that your extruder in not actually extruding the amount of filament that the slicing software said it should be extruding.
The slicer will have settings for layer height, and extrusion width, let's assume that you're using a 0.2mm layer height, and a 0.4mm extrusion width. Ideally you want each and every filament that the printer lays down to be 0.2mm thick and 0.4mm wide. If they aren't that size then you're under extruding. This will be more evident on perimeter walls and in areas of solid infill. In these areas there should be little to no evidence of the seam between any 2 adjacent filaments. Minor under extrusion would be when the 2 adjacent filaments are touching, but the seam between them is not completely filled. This can be corrected by bumping the extrusion multiplier setting in the slicer up a little. Severe under extrusion is when there are gaps between 2 adjacent filaments. that's usually caused by a hardware problem of some sort. Could be crap in the nozzle, could be an extruder temperature, could be bad filament, could be junk in the extruder drive gears, could be... you get the picture.
How to avoid it? Well, what I do is run a small test print to check for any problems. Then tweak the slicer settings to correct the problem and try it again. When I'm happy with the test print, THEN I'll print that gizmo that I just gotta have.
Don