The difference between front-end and back-end web development

In this article, I want to help you conceptually transition from front-end to back-end in the context of web development.

First define what is the front end. Front end is the term we use to identify programs inside the browser. We also call it client-side web development.

On the front end, you are worried about creating and distributing applications that run on client computers, which can be laptops, desktop computers, or mobile devices. You build the content you want to distribute, and then run it in each client browser.

On the back end, you design and build an application that runs on a single server (at the beginning), and every client can access the application. The application runs in a server in an environment you control and then uses the server-side rendering of the application to send it to the browser, or you create an API that distributes JSON data to the client (very common these days, especially Pair with front-end frameworks/libraries such as React, Vue, etc.

You can already see that there is an overlap here. The back end can be used to serve front-end-oriented applications that will run in the browser.

HTML, CSS, JavaScript, images, animation, React, Vue, Svelte, CSS-in-JS, front-end state management, performance optimization, all these themes (and more!) are associated with front-end programming.

Some applications only require the front-end part. For example, my website does not have a backend. This is a static website generated using Hugo, and all the work I do on this website is considered front-end programming: such as CSS, markup, and JavaScript that I use to enhance the search function.

Front-end programming has its own unique set of challenges: for example, browser support for functions. Or the performance of applications on low-end devices. Build single-page applications.

Back-end development is completely different from front-end development. First, you exit the browser environment, which is being released on the one hand, but it may also be overwhelmed.

why? Well, you have more options.

In the browser, the programming language choice is always JavaScript. Or a language that can be compiled into JavaScript, such as TypeScript, Elm, etc.

On the backend, you can use whatever you want. My usual choice is Node.js, because based on JavaScript, I can become an expert in a language, and I can use JavaScript to work on the front and back ends.

But you can use the following framework:

  • Python-based Django
  • Laravel based on PHP
  • Rails based on Ruby
  • Phoenix based on Elixir
  • Deno based on TypeScript

And many other aspects, including enterprise-oriented ecosystems such as Java and .NET.

I didn't even mention Go and Rust, these are two good choices.

This may be the biggest advantage of back-end programming: you can choose a language in multiple languages, so you can use your favorite language. However, if you are not sure what you like, it can also lead to "analysis paralysis."

On the back end, we have no problems that need to be faced on the front end. One thing I often hear is that front-end development is too fast. New things pop up every day, and the best tools change every month. This is not a false statement. In contrast, the backend looks more like a slower-paced ecosystem, especially in well-known and mature environments and tools, and a well-written backend can feel modern for many years, and we are at the front end Can't say the same thing.

Of course, in the backend, we have our own set of problems. For example, how to store data in a database. How to choose the right database. SQL and NoSQL. Microservices and the whole. How and where to deploy our application. How to handle more traffic. How to handle data and requests safely. How to test and handle error handling. How to choose the right architecture.

Then, we will discuss topics that overlap with DevOps, such as how to use Docker and Kubernetes, how to set up continuous integration and continuous delivery workflows, how to deal with Linux, infrastructure, and server-level networking. We need to face various choices, such as using our own VPS server or using PAAS such as Heroku, or using AWS Lambda for serverlessness. Depending on the company and team you work for, you may also need to be prepared to address these topics.

Of course, we need to figure out how to connect the back end to the front end. How to build an API. GraphQL and REST. How to handle authentication. How to quickly extend the API. These topics involve front-end and back-end so that they can talk to each other.

There are a lot of things, you can find the entire book on these topics, that’s why we distinguish between front-end developers and back-end developers, and why it’s valuable to be a full-stack developer who can solve all these problems Skills.

Of course, you don't have to know all of this to become a front-end or back-end developer. You need to fully understand the content to understand what you don’t yet know (yet). However, it is also a good idea to specialize in a particular market segment and become outstanding in this regard.

For example, you can be a back-end developer who doesn't understand how to handle advanced Linux configurations, but can rely on PAAS such as Heroku to do this for you. Or use AWS Lambda to avoid this completely.

I think it’s important to know when it’s best to learn and do it yourself, rather than using tools that support your work.