For the compound noun front + end it is front end:

Noun

front end (plural front ends)

  1. (computing) that part of a hardware or software system that is closest to the user.

frontend and front-end are alternative forms.

The compound noun front + end + engineering may be another matter.


"Frontend" and "backend" in this situation are technical terms, and as such I don't think they conform strictly to traditional ways of creating new words.

I'd put it in a similar category as putting the letter "e" in front of things: For example, should we call it e-mail and e-commerce or email and ecommerce? Most of us have settled on "email" but we split the difference on "e-commerce," but in any case, traditional language authority didn't move fast enough to lead this debate, but only explained or justified it after the fact.

So it goes with "frontend" and "backend", whichever one wins out may become enshrined by dictionaries (like "googling" yourself) or there may not be a winner in the forseeable future (such as in the "ecommerce" case)


I like the spelling convention set in GCC Coding Convention:

  • "front end" (noun)
  • "front-end" (adjective)

"Front end" but "front-end engineering." It's really pretty simple: When you're using a compound as an adjective (that is, when it's modifying another noun) you hyphenate it, not because somebody said to, but to avoid confusion. That way you don't have people wondering what "end engineering" is. I think the comment about avoiding unnecessary hyphens is just to keep people from going overboard, like "hot-dog bun."