Hindsight always imagines prospects being traded for players who were good, never for players who sucked.
But if you are bemoaning that we didn't trade Swihart for Hamels, then you should also be happy that we didn't trade him as part of a package for Jeff Samardzija after 2014, or for someone else who turned out to suck.
To use the Samardzija example, he was traded after 2014 when he was 29, coming off 219 IP with a 2.99 ERA/3.20 FIP. He would have been a logical target, and was traded that same offseason. That is someone we might have traded Swihart for, but we failed to do it. Why doesn't anyone bemoan that failure? Because Samardzija was lousy in 2015, got paid $10 million for it, wouldn't have helped our last place team, and then was a free agent. Sometimes that is how trades work out in reality.
But instead the assumption is always that the trade should have been made at the perfect time for the perfect player. It's basically saying "They should have traded this guy who sucked for this guy who turned out to be good. What a blunder." No kidding. Looks easy when you look back knowing what we know now but in reality you don't get to have a crystal ball.