See: Send transactions” section of Interact with ERC-20 tokens
What’s wrong:
Event vs function confusion. The text refers to normalizing the Transfer function, but ERC-20 defines:
transfer(address,uint256) — function (used for calldata)
Transfer(address,address,uint256) — event (used for logs)
The example hashes the event signature (Transfer(...)) instead of the function signature (transfer(...)), which produces the event topic prefix (0xddf252ad…) rather than the required function selector (0xa9059cbb).
Suggested fix
Update the wording to reference the transfer function, not the Transfer event.
Use the canonical function signature transfer(address,uint256).
Replace the snippet with runnable JavaScript:
web3.utils.sha3("transfer(address,uint256)").slice(0, 10)
// 0xa9059cbb