When planning to build a web or mobile application, it is imperative to understand some basic concepts of software product development. This knowledge will help you to communicate with your development team or software development vendor easily and efficiently. In our experience, two of the terms that may confuse are 'front-end' and 'back-end' (as well as a 'front-end developer' and 'back-end developer').
What do these terms 'front-end' and 'back-end' mean?
You can categorize any web or mobile application into two parts. The front-end is what a user sees and interacts with (user interface). The back-end is part of the application that is hidden from the user (what some would call, under the hood). This part is responsible for data processing, storing the data, and mathematical operations. The specialists responsible for the development of front-end and back-end parts of the application are called front-end developers and back-end developers accordingly.
This separation is relatively new. With the development of the IT industry, the projects began to grow in size. To complete any significant project, you would need a team of developers (not a single person). With a bigger group there comes the need for division of labor. Each developer would work on a different part of the application according to his/her skills.
Front-end and back-end imply different things in different types of applications. Let’s take a look at the most common ones and understand what those terms mean for each type: web applications, mobile apps, and web browser extensions.
1. Web application
Here is what the structure of a typical Python-based web application looks like:
2. Mobile application
As the name already implies, mobile applications are developed to work on mobile devices and tablets. Nowadays, most mobile apps are designed for Android and iOS operating systems.
There are two approaches to developing such applications. In the first approach, two separate applications are developed for a specific platform using the programming languages and development environments provided by the platform developers (for example, iOS uses the Swift programming language, and for Android uses Kotlin). Such apps are called ‘native applications’. In the second approach, a single application is written that can be used on both platforms (Android and iOS). Such apps are called ‘hybrid’ or ‘cross-platform’ apps. Such applications are just web applications wrapped in a native wrapper, while they look and feel like native ones. The advantage of hybrid applications is less development time and cost (depending on the functionality, the development time of two native applications versus one hybrid application maybe 30-40 percent more). The advantage of native applications is their native UI and better user experience and also access to device hardware/software (GPS, location, shake, calendar, etc.).
For simple mobile applications (where there is no interaction with a server), the role of the back-end and front-end developers is performed by one person, Android, or iOS developer.
An example of such a simple application can be a calculator, a flashlight, or an alarm, which you can find on any phone.
For more complex applications that require internet connection and communication with the server, the mobile developer can be conditionally called the front-end developer, since he mostly works with the app’s interface. However, we still prefer to call them iOS or Android developers.
3. Web browser extension
However, more complex extensions might require server development. Here is an example of an extension that we’ve developed:
GlossaryTech extension highlights all the terms it identifies, and as soon as you click on any of those, it brings up the explanations of the particular term.
In addition to writing the extension itself, this one requires a server that stores and processes the database of terms and shows a definition upon request.