You can get away with not using code names on small teams with a few deliverables.
On large teams, though, they're absolutely essential. Otherwise you spend entire paragraphs trying to figure out what everybody's talking about.
"Hey, was this change meant for the SSL-VPN product?"
"Which one, SMB or the enterprise?"
"SMB VPN doesn't exist anymore. Last week marketing renamed it to MyProtect."
"Ah. OK, was this change supposed to be in MyProtect?"
"Yeah, but not the hotfix. The main release."
"You know it was delayed for the URL rewrite feature?"
"Which, the hotfix or the main release?"
"The hotfix needed more attention so we rolled it into last week's staging. They're both in the main release now."
"Oh. OK, no, this is meant for the release after that."
"Hey, was this change meant for Sturgeon?"
"No, it's for Tilapia."