Spy is underpowered.
Speaking as someone who's had close to 800 hours clocked in with Spy, and having played him as my second primary class ever since release, I'd like to say this: Spy is underpowered. He's a joke. Plain and simple.
Because hundreds upon hundreds of hours of playing as spy has taught me one thing.
How skilled you are at playing spy has nothing to do with how effective you are with him.
Rather, how effective you are is based on how un-skilled the enemy team is in dealing with spies.
No amount of skill can deter enemies from instinctively spychecking every teammate they come across, spamming every corner of every room when they see a flicker of your cloak, or immediately turning around and melee-critting because they heard your uncloaking sound. No amount of experience can stop you from getting hit by a stray rocket or sniper bullet from behind that was aimed at someone else to begin with, or your backstab failing to register and getting mauled by every enemy nearby.
My point is, spy is almost entirely based on luck and how incompetent your enemy team is, and Valve sorely needs to change this.