Perhaps start simply and avoid the use of shortcut notation when you aren't sure how things work
In[1]:= Map[NumericQ, {0, -1 + x^2 y^2, -x^3 + 2 x^2 y + x^5 y^2}]
Out[1]= {True, False, False}
and thus you would probably want to get the position of the first False.
There is a new function FirstPosition mentioned at the bottom of the help page on Position
In[2]:= FirstPosition[Map[NumericQ, {0, -1 + x^2 y^2, -x^3 + 2 x^2 y + x^5 y^2}], False]
Out[2]= {2}
Now can we perhaps understand why your _?NumericQ[#] & didn't work? The & turned all that into a function and Position is looking for a pattern as the third argument, not a function.
We can use a pattern with a condition that only matches numeric items, this way
In[3]:= Position[{0, -1 + x^2 y^2, -x^3 + 2 x^2 y + x^5 y^2}, z_ /; NumericQ[z]]
Out[3]= {{1}, {2, 1}, {2, 2, 1, 2}, {2, 2, 2, 2}, {3, 1, 1}, {3, 1, 2, 2}, {3, 2, 1}, {3, 2, 2, 2}, {3, 3, 1, 2}, {3, 3, 2, 2}}
which does successfully find the position of numeric items, but matches those at every level and that doesn't look like what you were looking for. You could augment that with a level argument like this
In[3]:= Position[{0, -1 + x^2 y^2, -x^3 + 2 x^2 y + x^5 y^2}, z_ /; NumericQ[z], 1]
Out[3]= {{1}}
which shows that only the first item in the list is numeric.
Perhaps you can use some of these ideas to explore further