¿Cómo me convierto en un desarrollador de pila completa? ¿Qué es una buena hoja de ruta? Actualmente, estoy estudiando para un BE en el tercer año.

El desarrollo web Full-Stack, según la Encuesta para desarrolladores de Stack Overflow 2016, es la ocupación de desarrolladores más popular en la actualidad. No es de extrañar entonces que haya docenas de programas en línea y en persona que ayudarán a las personas a convertirse en Desarrolladores Full-Stack e incluso ayudarán a estos nuevos desarrolladores a conseguir trabajos de programación bien remunerados.

Algunos programas populares en línea se pueden encontrar en Lynda, Udacity , Coursera, Thinkful, General Assembly y mucho más. Además de estos programas en línea, también hay campos de arranque de codificación en persona que están enseñando a las personas las habilidades necesarias para convertirse en desarrolladores web.

Pero no voy a discutir qué sitios web o campos de arranque de codificación tienen los mejores programas de desarrollo web, en su lugar, proporcionaré una guía definitiva de lo que creo que son las habilidades más importantes requeridas para convertirse en un Desarrollador web de pila completa hoy y conseguir un trabajo Si nunca has codificado antes.

La guia definitiva

Un desarrollador web Full-Stack es alguien que puede trabajar tanto en la parte frontal como en la parte trasera de una aplicación. El front-end generalmente se refiere a la parte de una aplicación que el usuario verá o interactuará, y el back-end es la parte de la aplicación que maneja la lógica, las interacciones de la base de datos, la autenticación del usuario, la configuración del servidor, etc. Stack Developer no significa que necesariamente haya dominado todo lo necesario para trabajar con el front-end o el back-end, pero significa que puede trabajar en ambos lados y comprender lo que sucede al crear una aplicación.

Si desea convertirse en un desarrollador web Full-Stack en 2017 y conseguir su primer trabajo, a continuación encontrará una guía de referencia con una lista de cosas que debe aprender.

1. HTML / CSS

Casi todos los programas, ya sea en línea o en persona, que le enseñan cómo ser un desarrollador web comenzarán con HTML y CSS porque son los componentes básicos de la web. En pocas palabras, HTML le permite agregar contenido a un sitio web y CSS es lo que le permite diseñar su contenido. Los siguientes temas relacionados con HTML / CSS aparecen a menudo en entrevistas y en el trabajo real cuando está trabajando:

  • HTML semántico.
  • Ser capaz de explicar el modelo de caja CSS.
  • Beneficios de los preprocesadores CSS (no necesariamente necesita comprender cómo usar uno en un nivel profundo, pero debe comprender para qué sirven y cómo ayudan con el desarrollo).
  • Consultas de medios CSS para apuntar a diferentes dispositivos y escribir CSS receptivo.
  • Bootstrap (un marco para ayudar a diseñar y diseñar contenido en una página y, si bien muchos programas o escuelas en línea se centran principalmente en enseñar Bootstrap, en realidad es más importante tener un conocimiento profundo de CSS fundamental que las características y métodos específicos de Bootstrap).

2. JavaScript

El lenguaje JavaScript se está volviendo más popular cada año y constantemente se lanzan nuevas bibliotecas, marcos y herramientas. Basado en la Encuesta para desarrolladores de Stack Overflow 2016, JavaScript es el lenguaje más popular en el desarrollo Full-Stack, Front-end y Back-end. Es el único idioma que se ejecuta de forma nativa en el navegador, y también puede duplicarse como lenguaje del lado del servidor (como verá a continuación con Node.js). A continuación se presentan algunos temas que debe comprender como Desarrollador Full-Stack:

  • Comprende cómo trabajar con el DOM. También sepa qué es JSON y cómo manipularlo.
  • Características importantes del lenguaje como composición funcional, herencia de prototipos, cierres, delegación de eventos, alcance, funciones de orden superior.
  • Control de flujo asíncrono, promesas y devoluciones de llamadas.
  • Aprenda cómo estructurar adecuadamente su código y modularizar partes de él, cosas como webpack, browserify o herramientas de compilación como gulp definitivamente serán útiles para saber.
  • Sepa cómo usar al menos un marco popular (muchos programas se centrarán principalmente en enseñarle una biblioteca o marco como React o AngularJS, pero en realidad es mucho más importante tener una comprensión profunda del lenguaje JavaScript y no centrarse tanto en el marco características específicas. Una vez que comprenda bien JavaScript, elegir un marco que se encuentre encima de él no será demasiado difícil de todos modos).
  • Aunque algunos pueden argumentar que debería usar esto menos o que está muriendo lentamente, el código jQuery todavía existe en la mayoría de las aplicaciones y será útil tener una comprensión sólida de él.
  • Algunos conocimientos sobre marcos de prueba y por qué son importantes (algunos incluso pueden afirmar que este tema debería ser opcional).
  • Conozca algunas características nuevas e importantes de ES6 (opcional).

3. Idioma del back-end

Una vez que sienta que ha entendido bien HTML / CSS y JavaScript, querrá pasar a un lenguaje de fondo que manejará cosas como las operaciones de la base de datos, la autenticación del usuario y la lógica de la aplicación. Todos los programas en línea y bootcamps generalmente se centran en un lenguaje de fondo específico y, en realidad, no importa cuál aprenda tanto, siempre que comprenda lo que está sucediendo y aprenda los matices del idioma elegido. Obtendrá un montón de respuestas diferentes si le pregunta a alguien qué idioma de fondo es el mejor para aprender, así que a continuación he enumerado algunas combinaciones populares. Una nota importante: cualquiera que sea el que decida aprender, simplemente quédese y aprenda lo más que pueda sobre ello: hay trabajos disponibles para todos los idiomas que se enumeran a continuación.

  • Node.js: esta es una gran opción porque Node.js es solo un entorno de JavaScript, lo que significa que no necesita aprender un nuevo idioma. Esta es una gran razón por la cual muchos programas en línea y bootcamps eligen enseñar Node.js. El marco más popular que probablemente aprendería para ayudarlo a desarrollar aplicaciones web es Express.
  • Ruby: Algunos marcos populares para desarrollar en Ruby son Rails y Sinatra. Muchos programas enseñan a Ruby como primer lenguaje de fondo.
  • Python: Algunos frameworks populares para desarrollar en Python son Django y Flask.
  • Java: el lenguaje Java no se enseña mucho en estos días cuando se trata del desarrollo web Full-Stack, pero algunas compañías usan Java como su back-end y todavía es un lenguaje muy solicitado.
  • PHP: PHP raramente se enseña en los programas en estos días, pero al igual que con Java, todavía es muy solicitado y es una piedra angular de la web hoy en día.

4. Bases de datos y almacenamiento web

Cuando aprenda a crear aplicaciones web, en algún momento probablemente querrá almacenar datos en algún lugar y luego acceder a ellos más tarde. Debe tener una buena comprensión de los siguientes temas relacionados con las bases de datos y el almacenamiento.

  • Comprenda los beneficios de los datos relacionales, por ejemplo, SQL.
  • Aprenda sobre las bases de datos NoSQL, por ejemplo, MongoDB.
  • Comprende cuál sería mejor en ciertas situaciones.
  • Sepa cómo conectar una base de datos con el idioma de fondo elegido (por ejemplo, Node.js + MongoDB).
  • Comprenda los beneficios de los almacenes de datos en memoria como Redis o memcached.
  • Almacenamiento web para almacenar sesiones, cookies y datos en caché en el navegador.
  • Escalado de bases de datos, ACID y ORM (todo opcional).

5. HTTP y REST

HTTP es un protocolo de aplicación sin estado en Internet: es lo que permite que los clientes se comuniquen con los servidores (por ejemplo, su código JavaScript puede hacer una solicitud AJAX a algún código de back-end que esté ejecutando en un servidor que sucederá a través de HTTP). A continuación se enumeran algunos temas importantes que debe conocer:

  • Qué es REST y por qué es importante con respecto al protocolo HTTP y las aplicaciones web.
  • Mejores prácticas para diseñar una API RESTful. POST / OBTENER solicitudes.
  • Aprender a usar Chrome DevTools puede ser extremadamente útil.
  • ¿Qué son los certificados SSL?
  • HTTP / 2 y SPDY (opcional).
  • WebSockets, Web Workers y Service Workers (todos opcionales).

6. Arquitectura de aplicaciones web

Una vez que crees que tienes una idea de HTML / CSS, JavaScript, programación de back-end, bases de datos y HTTP / REST, entonces viene la parte difícil. En este punto, si desea crear una aplicación web algo compleja, necesitará saber cómo estructurar su código, cómo separar sus archivos, dónde alojar sus archivos multimedia grandes, cómo estructurar los datos en su base de datos, dónde para realizar ciertas tareas computacionales (del lado del cliente frente al lado del servidor) y mucho más.

Hay mejores prácticas sobre las que puede leer en línea, pero la mejor manera de aprender realmente sobre la arquitectura de la aplicación es trabajando en una aplicación grande que contenga varias partes móviles, o incluso mejor, trabajando en equipo y desarrollando juntos un proyecto algo grande / aplicación compleja.

Esta es la razón por la cual, por ejemplo, alguien con más de 7 años de experiencia no necesariamente conoce CSS o JavaScript mejor que alguien con 2 años de experiencia, pero durante todos esos años presumiblemente han trabajado con todo tipo de aplicaciones y sitios web diferentes y he aprendido cómo diseñar y diseñar aplicaciones (entre otras cosas importantes) para ser más eficientes y ver el “panorama general” en lo que respecta al desarrollo. A continuación hay algunas cosas que puede leer que lo ayudarán a aprender cómo diseñar sus aplicaciones web de manera eficiente:

  • Obtenga información sobre plataformas comunes como servicio, por ejemplo, Heroku y AWS. Heroku le permite cargar fácilmente su código y tener una aplicación en funcionamiento con muy poca configuración o mantenimiento del servidor, y AWS ofrece docenas de productos y servicios para ayudar con el almacenamiento, el procesamiento de video, el equilibrio de carga y mucho más.
  • Optimización del rendimiento para aplicaciones y navegadores modernos.
  • Algunas opiniones sobre lo que debe incluir una arquitectura de aplicación web.
  • Diseño de aplicaciones web por Microsoft.
  • MVC.
  • Lo más importante es que debes tratar de trabajar en proyectos con personas, mirar bases de código de proyectos populares en GitHub y aprender tanto como puedas de los desarrolladores senior.

7. Git

Git es un sistema de control de versiones que permite a los desarrolladores que trabajan en un equipo realizar un seguimiento de todos los cambios que se realizan en una base de código. Es importante saber algunas cosas importantes relacionadas con Git para que comprenda cómo obtener correctamente el código más reciente que se ha perdido, actualizar partes del código, hacer correcciones y cambiar el código de otras personas sin romper las cosas. Definitivamente deberías aprender el concepto detrás de Git y jugar con él tú mismo.

  • Aquí hay una lista de referencia de algunos comandos git comunes que probablemente usará.
  • Aquí hay un tutorial sobre el uso de Git y GitHub para principiantes.

8. Algoritmos básicos y estructuras de datos

Este tema es algo polarizador en el mundo del desarrollo porque hay desarrolladores que no creen que deba haber un enfoque tan intenso en temas de informática como el recorrido de árboles, la clasificación, el análisis de algoritmos, la manipulación de matrices, etc. en el desarrollo web. Sin embargo, hay compañías como Google que son conocidas por hacer este tipo de preguntas en sus entrevistas. Como alguien dijo sobre la entrevista de ingeniería de Front-End en Google:

Dicho esto, como menciona Ryan McGrath, se espera que nuestros ingenieros de front-end (FE) tengan una sólida experiencia en CS, como todos nuestros ingenieros.

Si bien hay empresas que prácticamente requieren que los solicitantes tengan un título en ciencias de la computación o equivalente, hay muchas empresas que contratarán personas sin esta calificación técnica si pueden demostrar que saben cómo desarrollar aplicaciones y mostrar una comprensión de todo el dominio. Pero parte de ser un desarrollador competente y no escribir código ineficiente o usar las herramientas incorrectas es comprender algunos algoritmos básicos y estructuras de datos y poder analizar las compensaciones. Aquí hay algunas cosas que definitivamente debes aprender:

  • Estudie las tablas hash e intente comprenderlas en un nivel más profundo. Esta estructura de datos subyace a los objetos en JavaScript (diccionarios en Python y hashes en Ruby).
  • Comprenda cómo los árboles y los gráficos pueden ser beneficiosos como estructuras de datos.
  • ¡Comprenda los conceptos básicos del análisis Big-O para que no haga cosas tontas como crear un ciclo anidado 3 niveles hacia abajo si no es necesario!
  • Sepa cuándo usar un objeto frente a una matriz y comprenda las compensaciones.
  • Descubra por qué el almacenamiento en caché es tan importante cuando se trabaja con una gran cantidad de datos. Aprenda también las ventajas y desventajas del almacenamiento en disco frente a memoria.
  • Aprende la diferencia entre colas y pilas.

Aprenderá todo esto será difícil, pero al final es gratificante y ¡Full-Stack Development es divertido! Deja tus comentarios a continuación.

Fuente: media