En nuestro anterior post te contábamos qué significa ser un Full-Stack Developer, ese perfil que tanto buscan las empresas de la industria del desarrollo web y por que se pagan sueldos estratosféricos. Ahora que ya sabemos qué es ser un Full-Stack, ¿Te gustaría saber qué pasos seguir para conseguir ser uno de ellos y obtener la insignia de Full-Stack Developer? Te lo contamos en este post.
Tecnologías para llegar a ser un Full-Stack Developer
Como ya os explicamos en el anterior post, un desarrollador Full-Stack debe poder estar involucrado en todas las partes que componen una aplicación web. Esto significa, que debe controlar todos los aspectos del funcionamiento de la herramienta, desde las dos vertientes principales: el Frontend y el Backend. Este doble conocimiento le va a facilitar su tarea diaria y un mejor seguimiento y supervisión del proyecto, ya que va a poder evaluar desde un prisma completo, si una funcionalidad va a ser fácil de aplicar o por el contrario llevará más recursos de lo habitual el poder desarrollarla.
Una vez visto lo anterior, vamos a separar las tecnologías que debe controlar todo desollador Full-Stack dependiendo del ámbito al que aplique.
Tecnologías del Backend
Lenguaje de servidor
Todo buen desarrollador Full-Stack debe ser capaz de programar en al menos uno de los principales lenguajes de parte del servidor, los más relevantes a día de hoy son Python, PHP, Node.js, Ruby y Java. Este lenguaje será el encargado de llevar toda la lógica de negocio de la aplicación y también será el responsable de interactuar con la base de datos para poder realizar las peticiones de información necesarias para devolver lo pedido. También controlará a nivel de permisos, un un usuario está autorizado a hacer esa acción que está intentando hacer, si puede ver dichos datos etc… Por lo cual y en resumen se deberá encargar de:
- Gestión y Autorización de usuarios
- Gestión y comunicación con la base de datos
- Garantizar la seguridad de la aplicación permitiendo acceso a los datos únicamente a los usuarios que tengan derecho
- Gestionar la integración con servicios externos
- Proveer los datos al Frontend
Para controlar todo lo anterior y sobre todo para no reinventar la rueda, un desarrollador Full-Stack dominará al menos uno de los Framework más relevantes de la industria. Si no sabes lo que es un framework, estate atento a nuestro canal que pronto tendrás un video completo en el que lo explicaremos, pero en resumen es es un conjunto de utilidades que facilita la vida a los desarrolladores para no tener que rehacer las mismas cosas de un proyecto a otro, y sobre todo, testado por miles de desarrolladores que lo han usado ya antes. Según los lenguajes que hemos visto anteriormente podemos enumerar los Frameworks más relevantes:
- Python ⇒ Django (del cual soy un enamorado)
- PHP ⇒ Láravel, el cual heredó mucho de Symphony y a día de hoy es muy usado
- Node.js ⇒ Express es el más relavante
- Ruby ⇒ Ruby on rails
- Java ⇒ Spring
Al final todos resuelven la misma problemática, unos en más detalle que otros.
Gestor de Base de datos
Para poder almacenar nuestros datos de forma lo más óptima posible, necesitaremos usar un gestor de bases de datos. En este aspecto un Desarrollador Full-Stack, debe saber manejarse con al menos uno de ellos. Para poder comunicarnos con él, necesitaremos saber el lenguaje estándar de comunicación con los sistemas gestores de bases de datos, SQL. Este lenguaje tiene toda la potencia posible a la hora de poder crear bases de datos, almacenar datos y lo más importante de todo, poder hacer consultas de los datos ya almacenados. En este ámbito hay dos vertientes muy diferenciadas, por una parte tenemos los sitemas de base de datos relacionales como por ejemplo: MariaDB, MySQL o PostgresSQL y por otra parte los sistemas de base de datos no-relacionales como MongoDB. Estas últimas también se les llama Bases de datos NoSql o de clave-valor.
Tecnologías del Frontend
Ahora vamos a darle un repaso a las tecnologías que debe controlar un Desarrollador Full-Stack para moverse por la parte del Frontend.
En el Frontend hay solo tres lenguajes que son los reyes del mambo, estos son HTML, CSS y JavaScript. Son los únicos tres lenguajes que será capaz de manejar el navegador web, responsable de hacer funcionar nuestras aplicaciones web.
HTML
Para mi, el más importante de todos ya que será el responsable de estructurar la información de forma correcta para que pueda ser mostrada al resto del mundo. Nació casi junto con internet, y hasta la fecha solo ha ido mejorando para poder abarcar más formas de presentación y uso. ¡OJO! Una cosa muy importante que debes tener en cuenta es que HTML no es un lenguaje de programación, si no un lenguaje de marcado y estructura de la información como puede ser XML o JSON. Normalmente es al que menos atención se le presta a la hora de aprender de tecnologías web y bajo mi punto de vista es imprescindible aprenderlo bien y de forma correcta, por eso en nuestro máster de Desarrollo Full-Stack y Blockchain de Conquer Blocks, nuestros alumnos aprenderás al detalle, casa aspecto de este lenguaje rey de la web.
CSS
El segundo en la lista de lenguajes relevantes del Frontend. Este lenguaje de marcas será utilizado para decirle al navegador cómo debe presentar la información indicada en el archivo HTML. Es otro lenguaje que ha ido evolucionando exponencialmente en su desarrollo y aceptación y el cual no para de crecer. Si antes decíamos que HTML era el encargado de la información, CSS podemos decir que es el encargado de cómo presentar la información. Esto es muy importante en el desarrollo web, separar la Información de la Presentación.
JavaScript
El rey de la interactividad. JavaScript es el único lenguaje de programación que puede ser interpretado por nuestro navegador, por lo que es fundamental que lo conozcamos y lo controlemos. Será el encargado de recoger los eventos que produce el usuario a la hora de interactuar con nuestra web y de comunicárselos al Backend.
Framework Frontend
Al igual que en el backend, hay multitud de tareas que suelen ser repetitivas para casi cualquier aplicación web. Por esto, existen Framework de frontend que se encargand e manejar todo este tipo de situaciones para no volver a tener que hacerlas desde 0 cada vez que iniciamos una aplicación. Framework de frontend hay para todos los gustos: ReacJS, VueJS, Angular, Svelte, Next… Escoge el que mejor te guste estúdialo a fondo para tener el control del Front.
API
Este es otro término muy utilizado en el mundo del desarrollo web, de forma resumida, podemos decir que una API es la forma en la que dos sistemas independientes, pueden comunicarse, sin tener que saber en qué tecnología está diseñada e implementada. Esto sirve a que otros desarrolladores puedan interactuar con un sistema, sin importarle cómo está construido internamente. Por ejemplo, un caso de uso muy actual, ChatGPT, que seguro que lo conoces, acaba de sacar su propia API, para que desarrolladores de todo el mundo, pueda usar su modelo de inteligencia artificial de forma programática.
Control de Versiones: GIT
Una vez vistas las tecnologías del Frontend y del Backend, todo desarrollador Full-Stack y en general, cualquier desarrollador, debe saber utilizar un sistema de control de versiones para poder llevar de forma correcta todas las modificaciones de su código así como para trabajar en equipo. Imaginaros que para que múltiples personas puedan interaccionar con el código fuente de una aplicación, necesitamos un sistema que organice y controle los cambios y esto justamente es lo que hace GIT, el sistema de control de versiones más utilizado en la industria y que para todo desarrollador es un MUST. Estas son algunas de las razones por las que debemos usar un control de versiones en nuestra organización del código.
Razones por las que usar un control de versiones
- Git proporciona un control de versiones sólido y flexible, lo que significa que puedes rastrear todos los cambios realizados en tu código a lo largo del tiempo. Puedes crear ramas (branches) para desarrollar nuevas funcionalidades o solucionar problemas sin afectar la rama principal del proyecto. Esto te permite experimentar y trabajar de manera colaborativa de manera segura, ya que puedes fusionar tus cambios cuando estén listos y minimizar el riesgo de conflictos en el código.
- También es una herramienta ideal para trabajar en equipo. Puedes compartir tu repositorio con otros desarrolladores y cada uno puede clonar una copia local del proyecto para realizar cambios. Git facilita la colaboración al permitir la fusión de los cambios de cada miembro del equipo de manera sencilla. Además, Git proporciona características como solicitudes de extracción (pull requests) que permiten revisar y discutir los cambios antes de incorporarlos al proyecto principal.
- Si hablamos de seguridad, el uso de Git nos brinda una capa adicional de seguridad al proporcionar un historial completo de cambios en tu código. Esto significa que, en caso de cometer un error o necesitar retroceder a una versión anterior del proyecto, puedes revertir los cambios fácilmente. Además, Git almacena todo el historial de manera distribuida, lo que significa que incluso si se produce un fallo en tu repositorio central o en tu máquina local, aún puedes acceder a la mayoría de las versiones de tu código desde otros repositorios clonados.
Además de usar GIT, necesitaremos algún repositorio remoto central para poder albergar todos nuestros repositorios. En este caso tenemos 3 opciones:
Opciones remotas para alojar nuestros repositorios
Github
Github viene a ser como la red social de los desarrolladores. En él podemos encontrar gran cantidad de repositorios de software libre. Dispone de opciones para tener tanto repositorios privados como públicos. Hoy en día, un desarrollador que no tenga perfil en Github, no existe.
Bitbucket
Mi opción favorita. Lo uso desde que tengo conocimiento de Git, no por nada en especial, si no porque desde el día 1 te ofrecía la posibilidad de tener innumerables repositorios privados sin coste.
Gitlab
Gitlab viene a ser la opción privada de Github. Podremos instalarlo en nuestro propio servidor por lo que nosotros seremos los únicos custodios de nuestros repositorios. Este tipo de instalación puede ser interesante cuando trabajamos en proyectos cuyo valor sea demasiado alto como para confiar en un tercero a la hora de guardar nuestro código fuente.
Gitlab también dispone de otro tipo de suscripciones para usarlo en la nube con %GB por repositorio así como las siguientes tipos de licencias:
- GitLab Community Edition (CE): Versión de código abierto y gratuita con características básicas.
- GitLab Starter: Suscripción básica para pequeñas empresas y equipos, que incluye características adicionales como gestión de proyectos e integración continua.
- GitLab Premium: Suscripción intermedia con características avanzadas, como gestión de proyectos, auditoría de cumplimiento y control de acceso granular.
- GitLab Ultimate: Suscripción empresarial completa con todas las características de GitLab Premium, además de funcionalidades adicionales como gestión de carteras de proyectos y gestión de seguridad.
Gestión de proyectos
Además de conocer todas las tecnologías de desarrollo correspondientes a todas las vertientes un Full-Stack Developer debe utilizar herramientas que le ayuden en la correcta gestión de un proyecto. Desde hace unos años está muy de moda el uso de metodologías Ágiles a la hora de gestionar proyectos de desarrollo. Esto facilita la correcta revisión periódica, la organización de tareas, el desarrollo evolutivo y la división de un proyecto grande en pequeños proyectos que vayan resolviendo los diferentes equipos de trabajo.
Una de las metodologías más utilizadas a día de hoy es SCRUM por lo que sería conveniente que todo desarrollador conozca esta disciplina ya que seguramente en le empresa en la que trabaje las lleven a cabo.
Puedes ser el mejor desarrollador del mundo, pero como no seas organizado y sepas trabajar en equipo, no llegarás a poder colaborar en proyectos grandes.
SCRUM
Si hablamos de metodologías de gestión de proyectos de software, es obligatorio hablar de SCRUM. Hoy por hoy es el líder en metodologías ágiles.
- Adaptabilidad y flexibilidad: Las metodologías ágiles, como Scrum, se centran en la adaptabilidad y la flexibilidad frente a los cambios. Permiten a los equipos responder rápidamente a las necesidades cambiantes del proyecto y del cliente. Mediante la planificación y ejecución de sprints cortos, se obtienen entregas frecuentes y se pueden realizar ajustes según los comentarios y las nuevas prioridades.
- Colaboración y transparencia: Scrum fomenta la colaboración y la transparencia entre los miembros del equipo y los stakeholders. Los equipos de Scrum trabajan en estrecha colaboración en ciclos cortos, compartiendo información y responsabilidades. Las reuniones diarias de Scrum, las revisiones de sprint y las retrospectivas promueven la comunicación constante y la mejora continua del equipo.
- Entrega de valor temprana: Con Scrum, se priorizan y desarrollan primero las características de mayor valor para el cliente. A medida que los sprints avanzan, se entregan incrementos funcionales del producto. Esto permite al cliente obtener rápidamente una versión utilizable y proporciona retroalimentación temprana, lo que ayuda a mejorar el producto y ajustar las futuras iteraciones.
En resumen, las metodologías ágiles como Scrum son valiosas porque permiten la adaptabilidad frente a los cambios, fomentan la colaboración y la transparencia, y ofrecen entregas tempranas y continuas de valor para el cliente. Estas características contribuyen a un desarrollo más efectivo, eficiente y satisfactorio.
¿Por donde empiezo?
Muy bien Bienve, ya me has contado todo lo referente a las tecnologías y requisitos necesarios para llegar a ser un Full-Stack Developer, pero, ¿por dónde empiezo?
Mi consejo es que empieces por aprender a programar bien, y para eso no hay mejor lenguaje de Python para hacerlo. Una vez que ya controles la parte de programación y pensamiento programático, estarás preparado para enfrentarte a mini proyectos. Los mini proyectos serán la mejor opción a la hora de empezar a desempeñar todo lo aprendido anteriormente. Te voy a enumerar algunos proyectos pequeños que puedes llevar a cabo para cada uno de los ámbitos del desarrollo web:
Ejemplos de proyectos Frontend
- Juego de las tres en raya
- Calculadora básica
- Aplicación web de lista de tareas
- Portafolio de proyectos desarrollados
- Web para consultar el tiempo usando una API externa
- Web para consultar el precio de una cripto usando una API
Ejemplos de proyectos Backend
- Un blog de noticias
- Listado de contactos o agenda
- Lista de tareas o Todo’s con persistencia de datos
- Un scraper de noticas de tecnología de diferentes portales para aglutinarlos en un sitio único
Una vez controles este tipo de mini proyectos, ya puedes empezar a integrar los proyectos backend con los proyectos frontend, y ahí empezarás a considerarte un Desarrollador Full-Stack.
¿Qué es un Full-Stack Developer?
Si después de leer sobre todas estas tenologías te has abrumado un poco y no te ha quedado claro ni si quiera qué es un desarrollador Full-Stack, te invito a que te veas este video que preparamos en nuestro canal de Youtube donde te ayudará ac omprender mejor el término.
Conclusión y máster de desarrollo Full-Stack + Blockchain
Espero que te haya quedado más o menos claro las tecnologías que debe controlar todo desarrollador Full-Stack, y la importancia de adquirir todos ests conocimientos de forma organizada y estructurada, y sobre todo, con profesiones que te guíen en todo el camino. Puedes hacerlo solo, pero acompañado te aseguro que tardarás mucho menos en conseguirlo.
En Conquer Blocks hemos preparado un Máster en Desarrollo Full-Stack y Blockchain donde podrás conseguir dedicarte al fantástico mundo del desarrollo de aplicaciones web y web3. Ya vengas de 0 o si ya sabes programar, con este Máster adquirirás todos los conocimientos necesarios para abrirte paso y adentrarte en esta industria tan demandada.
Si quieres saber más información, te invito a que hagas click en este enlace para agendar una entrevista de acceso gratuita con con un miembro del equipo Conquer, el cual valorará conjúntamente contigo, si eres un alumno apto para formar parte de nuestro máster.