Frontend y Backend son las dos caras de una moneda: el desarrollo de aplicaciones. Ya sean aplicaciones web, de escritorio, o móviles, siempre encontrarás esta distinción. Y al programador que trabaja en las dos disciplinas se le denomina Full Stack.
El front end es la interfaz a través de la cual el usuario usa la aplicación. Los programadores front-end se encargan de hacer que el usuario entienda cómo usar la aplicación sin saber nada sobre programación.
El back end es el cerebro de la aplicación. Los programadores back-end ofrecen una interfaz sencilla al programador frontend, para que no tenga que entender cómo funciona la aplicación (almacenamiento de datos, procesamiento de datos, autorización, etc.).
¿Cómo saber cuál elegir?
Lo cierto es que, si estás empezando, debes probar ambos campos, porque no vas a descubrir cuál te gusta más sin hacerlo. Las tecnologías que se crean, tanto para backend como para frontend, intentan resolver varias tareas que a veces no sabrás si son del backend o del frontend. Por lo tanto, merece la pena empezar sabiendo los dos, porque, aunque te especialices en una, tener un poco de conocimiento del otro campo te permitirá trabajar mejor. Incluso poder trabajar de programador full-stack si ambos campos te apasionan.
Tecnologías actuales
Frontend
Por el lado del frontend, lo primero que merece la pena aprender es JavaScript, porque, a pesar de existir otras tecnologías para aplicaciones móviles y de escritorio, JavaScript es el “único” lenguaje que puedes usar para programar web. Pero, además, si sabes JavaScript, hay muchas tecnologías que te permiten crear aplicaciones móviles o de escritorio, simplemente a partir de tu conocimiento de JS.
Una vez aprendes algo de JavaScript Vanilla (JS puro), es recomendable aprender un framework para frontend, porque te facilitará mucho la vida a la hora de crear interfaces. Los más conocidos actualmente son React, Svelte, Vue y Angular.
Si únicamente quieres especializarte en aplicaciones de escritorio, las tecnologías más usadas son .NET, Qt, GTK, Electron (para usar JS). Mientras que si únicamente vas a enfocarte en crear aplicaciones móviles, te interesará Flutter (es multiplataforma), React Native (multiplataforma, pero usando JS), o siendo más específicos, el lenguaje nativo de las aplicaciones de Android es Kotlin, y el de las de iOS es Swift.
Backend
Por el lado del backend, el abanico está más abierto. Lo normal es aprender un lenguaje de programación (puede ser Go, Python, PHP, o el propio JavaScript con NodeJS, y un largo etcétera), y el framework que le corresponda, Django para Python, Laravel para PHP, o ExpressJS para NodeJS. En el caso de Golang existen múltiples frameworks, pero su propia librería HTTP es mucho más que suficiente en muchos casos.