Una de las inquietudes más recurrentes que me plantean los futuros programadores antes de embarcarse en la aventura que supone la realización de un bootcamp de programación, es dónde pueden encontrar contenido que les permita tener una pequeña preparación previa sobre que se necesita para ser un desarrollador full stack de cara al reto que tienen en el horizonte.
Habitualmente se les recomienda las típicas páginas básicas por las que todo programador ha pasado y que ofrecen explicaciones claras sobre principios básicos y ejercicios sencillos para empezar a calentar de cara al curso.
La práctica previa y el tomar contacto con el ordenador antes de «convertirte en programador o desarrollador full stack» es necesario y completar con éxito estos pequeños «entrenamientos» te ayudan a mejorar, pero contando con que eso es prácticamente necesario, creo que conocer el entorno que rodea al programador Full Stack, y muchas veces conocer su jerga, te hace sentir mucha más empatía hacia el resto de profesionales y de alguna manera te permite empezar a dominar conceptos que se van a volver muy importantes en tu carrera profesional.
Vamos a hacer un resumen de alguno de ellos:
Desarrollador Full Stack
El punto de partida es establecer qué debemos considerar cuando nos presentamos como desarrolladores Full Stack.
Quizá el concepto en sí es demasiado ambicioso, ya que plantea un perfil de desarrollador con conocimientos suficientes para poder afrontar cualquiera de las etapas en las que vamos a poder dividir un proyecto web.
Aparte de ser conocedor del lenguaje de desarrollo utilizado y de las herramientas que conforman los proyectos, el desarrollador Full Stack debe ser capaz de analizar las necesidades y así poder diseñar diferentes soluciones que mejoren el producto final.
Para alcanzar la excelencia dentro de este perfil no solo hay que programar bien, sino, que necesitamos años de experiencia afrontando y resolviendo cualquiera de los problemas que puedan aparecer en el desarrollo de cualquier proyecto IT.
Front-end frente Back-end
Estos dos conceptos están estrechamente relacionados con la definición anterior. Conforman la mayor parte de la estructura de cualquier proyecto web y por tanto es recomendable que el desarrollador Full Stack conozca cada uno de sus detalles.
¿Qué es el Front-end?
Cuando hablamos del Front-end de un proyecto web estamos haciendo referencia a todos los aspectos visibles que conforman el desarrollo. Es el conjunto de aplicaciones que desarrollamos para que el usuario pueda tener una interacción directa con ellas.
Si nuestro perfil está más orientado hacia este tipo de desarrollos, necesitamos disponer de ciertas habilidades más creativas y quizá más cercanas al mundo de la experiencia de usuario y el diseño de interfaces. Al estar en contacto directamente con el usuario, el desarrollador front experimenta sobre todo con lenguajes de maquetación y con herramientas orientadas a la creación de componentes.
Por tanto, ¿qué es el Back-end?
El desarrollo Back-end abarca todo lo relacionado con aquellas partes del proyecto web que se encargan de recopilar y organizar los datos para posteriormente ser consumidos por el usuario desde la parte del front. Se trata de aplicaciones mucho menos vistosas en las que premia la optimización y la buena gestión de los diferentes recursos disponibles.
Este tipo de desarrolladores fomentan su faceta de programador puro y mejoran sus habilidades con otro tipo de herramientas, como por ejemplo, las bases de datos.
Cliente vs. Servidor
Muchas veces escuchamos o leemos sobre esta pareja de conceptos pero no somos capaces de situarlos dentro de un desarrollo web. Tanto el cliente como el servidor son parte fundamental de la comunicación que conseguimos cuando utilizamos una aplicación web Full Stack.
Características del cliente
El cliente es aquella herramienta que el usuario esté utilizando para ejecutar una aplicación web. Lo más habitual es que el cliente sea el navegador web, tanto desde un ordenador de escritorio como desde un dispositivo móvil.
El uso de este tipo de programas está ya muy extendido y la mayoría de usuarios cumple una serie de patrones adquiridos durante años y que los desarrolladores mantenemos para alcanzar una satisfacción de uso y por lo tanto lograr así el éxito con nuestras aplicaciones.
Con el crecimiento de la tecnología la parte del cliente no se limita únicamente a los navegadores y podríamos expandirla a cualquier tipo de dispositivo desde el cual se pueda lanzar una petición web contra un servidor (chatbot, raspberrypi…).
El servidor, donde alojamos nuestras aplicaciones
Por otro lado, el servidor es el sistema donde tenemos alojadas nuestras aplicaciones. Cuando el cliente requiere cualquier tipo de dato sobre el servidor, éste es el encargado de encontrarlo y organizarlo de tal manera que sea comprensible por ambas partes. Habitualmente se trata de grandes ordenadores configurados para cumplir esta tarea, con gran capacidad de procesamiento y un rendimiento por encima de lo habitual.
En la parte del servidor es donde el desarrollador debe dejar configurada sus aplicaciones para que puedan ser requeridas por parte del cliente. Existen perfiles de desarrolladores dedicados únicamente al mantenimiento y configuración de este tipo de máquinas.
Diferencias entre framework y librería
Son dos de las palabras que más confusión pueden traer cuando empezamos en el mundo del desarrollo. Aparte son dos conceptos que, depende de quién te los cuente, los va a definir de una manera o de otra.
¿Qué es una librería?
Una librería es un conjunto de herramientas que dan solución a un problema concreto. Disponemos de numerosos repositorios de código donde conseguir estas pequeñas piezas de código. Podemos disponer de ellas empaquetadas y listas para poder ser reutilizadas en cualquier proyecto donde necesitemos.
Dentro del mundo de la programación existen muchas corrientes que se dedican al desarrollo de este tipo de librerías para llegar a solucionar problemas que se plantean a toda la comunidad.
Por ejemplo, jQuery o MomentJS serían librerías.
¿Qué es un framework?
Sin embargo un framework es una estructura organizada que nos ofrece todas las funcionalidades para poder crear un proyecto de principio a fin. Cubre todas las necesidades y por norma general se apoya en distintas librerías para lograr su objetivo.
Por ejemplo, Angular sería un framework.
Deploy
Quizá es el concepto que más se puede escapar de las tareas a llevar a cabo por un desarrollador web. El concepto de deploy incluye todas las acciones que tenemos que llevar a cabo para colocar nuestras aplicaciones en el espacio donde posteriormente van a ser consumidas por el usuario. De una manera más coloquial podríamos decir que es la manera de poner nuestras aplicaciones en producción.
Existen perfiles muy específicos que se encargan exclusivamente de estas tareas en coordinación con el equipo de desarrollo.
A lo largo de los años el concepto de deploy ha ido cambiando y se ha ido adaptando a las diferentes tecnologías que se han impuesto en el mercado. Disponemos de numerosas herramientas que nos permiten automatizar todas las tareas más tediosas para lograr que la etapa de deploy sea lo más cómoda y sobre todo que nos permita replicarla de manera habitual.
IDE, Integrated Development Enviroment
Son las siglas de Integrated Development Environment, Entorno de desarrollo integrado). Se trata sin duda de una de las herramientas imprescindibles para el desarrollador.
Normalmente el IDE integra un editor de código con una serie de herramientas que permiten desarrollar cualquier tipo de aplicación de manera más cómoda. Por lo general, encontraremos herramientas o extensiones que nos permiten detectar errores mientras desarrollamos, o que automaticen nuestras diferentes tareas cuando necesitemos cambiar nuestras aplicaciones de entorno.
El mundo de los IDEs es muy amplio y al ser la herramienta de cabecera del desarrollador suele ser la que más tiempo pasamos modificando y poniendo a nuestro gusto. Cuanta más confianza adquieras con tu editor de cabecera, más cómodo llevarás a cabo los diferentes retos a los que te tengas que enfrentar.
El mundo de la programación está repleto de conceptos como los que hemos detallado en este post. Los cambios son tan numerosos y continuos que nos obligan a mantenernos al día sobre cualquier tecnología existente para poder tener la capacidad de valorar si debería formar parte de nuestro día a día, o al contrario no puede aportar nada a nuestra carrera profesional. No es cuestión de ser expertos en todo si no de conocer todo lo que nos rodea para conseguir especializarnos en lo que necesitemos.