I know people already know this in general, but there are a few concrete reasons why shields are bad/unnecessary:
TF2 is a movement shooter, where knowing how to dodge damage is rewarded by taking less damage. You can already "have a shield" by being good at dodging; scout in particular will always be able to fulfill the "role" of a heavy because it is a class designed around dodging. You don't need a "tank" in the game, since TF2 is not an RPG. Scout can be a tank by being hard to hit, while soldier, through vertical pressure, and demo, through range pressure, can also fulfill the role of a tank by drawing attention and spam away from the rest of the team.
In terms of game design, asking for a shield is like asking for an item that allows soldier to teleport to the skybox. Not only are "shields" already in the game via TF2's movement mechanics, but you'd be replacing an already existing mechanic with a lower-mechanically-oriented alternative, which essentially turns TF2 into a card game or RPG. Powerful things, like being able to get to the skybox as a soldier, or reducing damage (through dodging) on any class, were designed purposefully to be difficult and have a high mechanical skill-ceiling. When you create a less mechanically-oriented item that fulfills the same role as something that could be achieved through FPS mechanics, you are quite literally taking the quality that makes TF2 an FPS out of the game by replacing TF2's emphasis on mechanical skill with a damage multiplier equation. If heavy had a shield, a literal controller player using the shield could have as much impact as any invite player using the shield. No amount of skill would change the fact that the shield reduces x% of damage, in the same way that no amount of skill changes the fact that it's harder to miss than to stay on target with Winston, as clockwork pointed out when he described why Overwatch is not an FPS. Might as well add skill trees and spells at that point.
The notable exception* to the rules I've outlined here is uber. I remember clockwork saying that uber is the "most powerful ult in any game ever," and saying half-seriously that TF2 would be better without ubercharge, but that it's so engrained in the game that we'd never ban it. The reason the devs decided to break the rules of mechanical FPS games and add ubercharge, which is the closest TF2 gets to a card-playing game (we even count cycle lol), was in large part to encourage people to play medic. I think many people dislike playing med in general because, as FPS players, it makes sense that they would prefer classes that are more mechanically-oriented in terms of aim. I can still understand clockwork's point; in comp, where there's no shortage of medics, we might not exactly need something like ubercharge "encouraging" the use of medic. Besides it being hard to imagine what 6s would be like without leapfrogging, I ultimately think TF2 is better with uber as opposed to no uber though, since it does add an extra layer of positional complexity to the game, punishes mistakes on medic (and on all classes in 6s) even more, and does encourage medic play in casual in the way Valve intended when designing the class like 20 years ago. But by adding a shield, what exactly are you encouraging? You are encouraging the player to avoid damage not by using their class's unique movement capabilities, but by sitting in place behind the slowest character in the game. There isn't even a scout meta to kill right now. Soldiers decide games as long as there isn't some hardcarry in the server.
*The other exception worth mentioning is the soldier banners. What I've stated here also applies to them, and is part of the reason why I believe banners have not at all reached their full potential, and will be used a lot in the future. At least the banners' reduction in mechanical skill necessary to achieve greater damage given/less damage taken requires a large time investment, similar to ubercharge, which balances them as weapons.
IF YOU DIDN'T READ: movement > shields