I just watched the show "Ancients: Behaving badly" and from what ive saw, it seems like Hannibal was nothing more than a D grade general.
1)His elephants. They chulked up alot of provisions, and slowed his army, and on the battlefield werent doing as good as thier cost. For people who never saw elephants, theyre scary as hell, but after that(when they get to know them) you can just move out of thier way(like scipios army did in zuma). Furthermore, just the fact of having elephants increased the time hannibal needed to spend in the alps to two weeks, when it should have been only one week travel.
2)The alps. He lost 25,000 men there, and most of his elephants. WTF? I mean, wouldnt it had been better for hannibal to go for sardinia, and then sicily, and then raid the southern countryside of rome? Carthage anyways had a superior navy.
3)He may had crushing victories over the romans, but lets look at the romans. From what ive seen, at that time the roman army was managed by two consouls, and they had 24 hour shifts on the general office. Some day one general tried to dig in, while the other went on the offensive. We also know that the roman generals were motivated by oppertunities of glory and politics, rather than co working together for strict military goals.
4)Why didnt he just go for rome when he could? Instead he tried to make failing alliances of Italian cities, letting the much manpower superior romans regroup and rebuild thier army. He just wandered in Italy untill he had to be called back to africa to defend carthage, where he was crushed.
And as we know, history in older times was influenced much from politics. Roman historians maybe wanted scipio to look like a great general. Had he just won over a loser that wouldnt have been as glorious as defeating the "greatest general of them all". That just makes scipio a much better general.