Quién es full stack (web) developer?

This post is 4 years old. (Or older!) Code samples may not work, screenshots may be missing and links could be broken. Although some of the content may be relevant please take it with a pinch of salt.

Este es mi primer artículo escrito en Español. Muchísimas gracias a @iamcherta por sus correcciónes.

En este artículo vamos a tratar de responder una pregunta muy importante: quién es un desarrollador full stack? Qué responsabilidades necesita tener?

Creo que como ya saben, el desarrollo full stack web y la palabra full stack web developer ha ingresado recientemente en el imaginario popular (o mejor dicho, en el imaginario de las personas que trabajan en TI) - hay muchas anuncios de trabajo de empresas que quieren contratar full stack web developers o también full stack ninjas / gurus.

Ahora voy a dar mi opinión sobre este tema, compartir mis pensamientos, como veo yo la posición de full stack web developer. Vamos a discutir los requisitos que uno debería tener para ser llamado un desarrollador full stack.

Qué conocimientos debe tener un full (web) stack developer?

Si van a recordar una sola cosa de este artículo, debería ser la siguiente: Un full stack (web) developer necesita entender todas las cosas relacionadas con el desarrollo web pero no necesita hacerlo todo.

Qué significa esto? La mayor parte del tiempo de un desarrollador se gasta en hacer tareas de frontend o back-end. Un desarrollador full stack puede hacerlo todo - en pocas palabras - puede escribir código para crear un API usando Node.js, por ejemplo, y también puede trabajar con o investigar tecnologías de frontend como Angular o React. Adicionalmente también puede instalar y configurar servidores - Linux o cualquier otro sistema operativo, puede hacer diseños y usar CSS.

La cosa más importante es que un desarrollador full stack puede comunicarse con todas las partes interesadas de un proyecto y eso es un gran poder. Pero como ven, es casi imposible que una persona sepa todo sobre todo. Uno no puede tener un profundo nivel de comprensión de los sistemas operativos y DevOps, y a la vez saber todo sobre Angular2+. Pero entender cómo instalar Linux, como configurarlo de una forma en la que después podamos instalar npm y el angular-cli es algo que deberíamos poder hacer. La idea es que uno no debería esperar hasta que otra persona en otro departamento haga estas tareas por uno.

Hasta ahora hablaba deliberadamente sobre tecnologías relacionadas con JavaScript como Node.js y Angular porque usar lo mismo lenguaje de programación en todo el stack hace que todo sea mucho más fácil. Si usamos JavaScript en el backend, y en la front-end no necesitamos aprender un nuevo lenguaje, podemos usar todo que ya sabemos, porque si ya sabemos cómo escribir un función en Node.js podemos también usar el mismo conocimiento para crear un función en Angular.

Esta es mi lista de cosas que un desarrollador web full stack necesita entender al menos en un nivel básico (asumiendo que JavaScript es el lenguaje usada en toda el stack):

  • sistemas operativos - configurar, instalar y usar tecnologías de virtualización (Docker, AWS, Azure, Virtual Box) o tambien tener conocimiento de *ervicios como Digital Ocean
  • comprensión de la arquitectura de aplicaciones de web
  • servicios backend - programar una API, usar bases de datos (relacional y también NoSQL)
  • frameworks frontend - seleccionar, aplicar y usar un frontend framework (conocer los frameworks, librerías principales y sus diferencias)
  • conocimiento de JavaScript - un profundo conocimiento del lenguaje sería deseado (event loop, callbacks, hoisting, closures, ECMAScript2015) -- si ya *onocemos JavaScript es más fácil entender y usar TypeScript también
  • habilidades básicas de diseño - conocer como crear un wireframe, comprender CSS y tecnologías relacionadas (Less, Sass)
  • conocimientos de HTML, HTTP(s) y tambien HTTP/2
  • conocimientos de sistemas de control de versiones - Git / GitHub o una plataforma parecida

Esta lista no es muy exhaustiva pero si quieres obtener el título de desarrollador full stack, puedes usarla para estudiar y familiarizarte con estas tecnologías y conceptos.

Espero que este artículo te haya presentado una introducción básica de full stack (web) developer y development.