From fragile to functional: How error correction will save quantum computing