In software engineering, the terms front end and back end refers to the separation of concerns between the presentation layer (front end), and the data access layer (back end) of a piece of software, or the physical infrastructure or hardware. In the client–server model, the client is usually considered the front end and the server is usually considered the back end, even when some presentation work is actually done on the server.
In software architecture, there may be many layers between the hardware and end user. Each can be spoken of as having a front end and a back end. The front is an abstraction, simplifying the underlying component by providing a user-friendly interface, while the back usually handles business logic and data storage.
In telecommunication, the front can be considered a device or service, while the back is the infrastructure that supports provides this service.
A rule of thumb is that the front (or "client") side is any component manipulated by the user. The server-side (or "back end") code usually resides on the server, often far removed physically from the user.
Another way to understand the difference between the two is to understand the knowledge required of a front end vs a back end software developer. The list below focuses on Web development as an example.