Back-End and Front-End

The terms Back-End and Front-End are very well known in the programming world, but I would like to add some small sauce on them with my personal point of view updated in recent years with the advancement and the changes on technologies.

Popularly speaking - Back-End is the "Server" side of an application - the logic that is on some "remote" computer and Front-End is the part of the application that is shown to the user - most people associate it with the Browser client (HTML+JS+CSS Interface).
That is very shallow description of all the variations there could exist with different software layers and hardware layers, different devices, types of applications and use cases.

If the users of your creations are Business-to-Business the UI layer may be indeed simple - just browser or a simple app. Business clients generally have good Internet connection and speed and are more focused on the logic behind and the positive Business impact of the software + hardware.

If the end users are Customers, than - the User Experience is very, very top priority. Today, building interfaces even in the browser is more like app development thanks to HTML5 APIs and PWA. You should handle bad or no internet connection - functionality, you should cache and optimize for speed, you should do whatever possible on the client-side.

Besides the browser - there are different mobile platforms and devices. Native will forever be the fastest in terms of speed and smallest in terms of application size.
There are also speakers with a wi-fi adapter - that could be the next big "Interface" to the User.
What if Musk (or someone else) creates a chip that attaches somehow to the human brain and enhances the human to input and output directly to the devices around him and the Internet in high speed - without keyboard, mouses, touchable and non-touchable screens, and speakers? Will you feel lost - that time you've developed endlessly - yet another UI and application?

There are some good problems that the back-end developers solve:

  • Implement the business logic that is best done here - security, authentication, fast data algorithm and processing, etc
  • Scaling the application to handle more requests
  • Structuring the data in the most appropriate way according to the applications need and scale

Probably in most server applications out there - there is no multi-flow work and data processing in the logic itself - as a app developer is writing in one "line", one thread, one process no matter that the (HTTP) requests are threads/requests themselves. Actually even with simple Web Application synchronization collisions may occur - if opened from different browsers/sessions.

I know several developers that have coded multi-threaded, multi-process back-end applications, but that still don't like front-end development. Front-End development, besides that user interface itself, is very close to a multi-threaded application.

Especially nowadays - the languages, the frameworks, the design patterns used are probably more than 90% the same and it is not that difficult to learn the next major tendency in this technical direction. It will be just from a different provider, different toolkit, but in the end - the same and what you actually build with these tools was, is and will be more important.

Share
Add comment