Unsplashed background img 1

Ingenirería WEB

Al vivir en una época de transformación digital, todas las compañías necesitan un programador en sus equipos.
El mundo solia ser muy sencillo. Antes, para el desarrollo web solo teniamos HTML, CSS y Javascript; actualmente es mucho más complejo, pero conservando esta base.
Ser desarrollador de aplicaciones es una de las carreras con más demanda y de más rápido aprendizaje de nuestra industria.

flash_on

¿Qué es Frontend?
Frontend es la parte de un programa o dispositivo a la que un usuario puede acceder directamente. Son todas las tecnologías de diseño y desarrollo web que corren en el navegador y que se encargan de la interactividad con los usuarios.
HTML, CSS y JavaScript son los lenguajes principales del Frontend, de los que se desprenden una cantidad de frameworks y librerías que expanden sus capacidades para crear cualquier tipo de interfaces de usuarios. React, Redux, Angular, Bootstrap, Foundation, LESS, Sass, Stylus y PostCSS son algunos de ellos.

group

¿Qué es Backend?
Backend es la capa de acceso a datos de un software o cualquier dispositivo, que no es directamente accesible por los usuarios, además contiene la lógica de la aplicación que maneja dichos datos. El Backend también accede al servidor, que es una aplicación especializada que entiende la forma como el navegador solicita cosas.
Algunos de los lenguajes de programación de Backend son Python, PHP, Ruby, C# y Java, y así como en Frontend, cada uno de los anteriores tiene diferentes frameworks que te permiten trabajar mejor según el proyecto que estás desarrollando. En Platzi tenemos Django, Laravel, Ruby On Rails y ASP.Net, los hemos elegido sobre todo porque tienen una gran comunidad que los respalda.

settings

Full Stack developer
Las empresas demandan un Full Stack developer cuando buscan una persona técnica, que conozca bien todos los aspectos del front-end, back-end, los diferentes sistemas operativos y componentes que quedan en el medio.
Actualmente la demanda de desarrolladores de estas características va en aumento, ya que deben ser capaces de asumir diferentes tareas.
Front

Front-End

Lo podemos definir simplemente como las aplicaciones con las que el usuario final puede interactuar.

Diseño web
El punto de partida para todo aspirante a diseñador web es aprender las 2 tecnologías básicas.
Html5: Define la estructura semántica de un sitio, mediante el uso de etiquetas. No es un lenguaje de programación.
Css3: Define la apariencia del sitio web por medio de selectores. No es un lenguaje de programación.


Frameworks CSS
Un framework es un conjunto de hojas de estilos y herramientas gráficas preconstruidas con el objetivo que el desarrollador se centre en los aspectos particulares del sitio, los frameworks css en sí no son una novedad, pero sin duda alguna en muchos proyectos son necesarios para agilizar el proceso de desarrollo, algunos de los más conocidos son:

Materialize — Bootstrap — Semantic — Foundation — Bulma

Preprocesadores
Un preprocesador nos permite usar características de un lenguaje de programación pero para css, facilitando el mantenimiento y agilizando el desarrollo, algunas de las características más comunes son el uso de variables, mixins, módulos, anidación, etc, pero siempre nos entrega un css compatible con los navegadores, ya que se trata de características que no son propias de css.
Los 3 preprocesadores más comunes son:

Sass, Less, Stylus

Tools
postcss PostCSS en primer lugar no es un pre-procesador, ni un post-procesador, el sitio oficial lo define como una herramienta para transformar css con javascript, PostCSS posee un ecosistema de plugins los cuales hacen posibles esta transformación.
cssnext.io CSSNext es un plugin de PostCSS, aunque aún se conoce como CSSNext el nombre oficial es PostCSS-cssnext, este plugin nos permite usar literalmente el css del futuro, transformando las nuevas especificaciones a una versión compatible con los navegadores, sin esperar a que estos las soporten.



Librerías y Frameworks Javascript
Javascript es el lenguaje de programación soportado por los navegadores. Al uso del lenguaje sin librería se le llama Vanilla Javascript, pero al igual que CSS existen frameworks que implementan patrones de diseño.
Hasta hace algunos años estas eran las librerías y frameworks más usados:

JQuery — AngujarJs — Backbone — Knockout — Ember
En la actualidad existen 3 librerías y frameworks, las cuales son las más usadas y demandadas, están basadas en componentes, un componente es similar a una pieza de lego, en donde creas piezas con estilo y comportamiento propio, ejemplo un buscador.

Estas tecnologías son útiles en la creación de aplicaciones de tipo SPA o aplicaciones de una sola página, cabe mencionar que Angular ya no se llama AngularJs, desde su versión 2 únicamente te refieres a el como Angular.


Superset
Un superset es como una capa alrededor de Javascript en la que disponemos de una serie de características que no están disponibles en el lenguaje, y que nos hacen seguir cierta forma de desarrollo que no es posible en Vanilla Javascript. Estos no transcompilan a ensamblado web sino a Vanilla JS o Javascript puro.

CoffeeScript — TypeScript — Elm — Babel

Task Runner
Un task runner nos permite automatizar el flujo de trabajo, concatenando y minificando los archivos.

Gulp — Grunt

Gestores de paquetes
Nos permiten tener a nuestra disposición cualquier librería y usarlas con tan solo unas pocas líneas de código, nos permiten administrar nuestros módulos y gestionar dependencias de una forma más segura.

npm — yarn
Npm es el paquete oficial, se instala junto con NodeJs, yarn es creado por facebook, npm desde la versión 5 ha mejorado mucho, por lo cual se recomienda usar npm.
Backend

Back-End

Backend Sencillamente es la parte del servidor, el ejemplo común es la manipulación de datos así como la conexión a base de datos, no es accesible directamente por los usuarios.

Lenguajes
Hasta hace unos años los lenguajes mas usados eran:

C# — php — java — ruby — python

Frameworks
Al igual que el Frontend existen frameworks para cada lenguaje, agilizando el desarrollo.

Asp MVC — PHP Laravel — Java Spring — Ruby On Rails — Python Django
Como es de esperarse, han surgido nuevos frameworks, lenguajes con los cuales podemos crear aplicaciones web con un muy buen rendimiento.
Go: Es un lenguaje creado por Google, también conocido como Golang.
NodeJs: Es un entorno de ejecución de Javascript del lado del servidor.
.Net Core: Es una versión open source de .Net, es multiplataforma, contiene muchas de las mismas API que .NET Framework pero es un conjunto más pequeño.
Go — NodeJs — .Net Core



API
La interacción entre aplicaciones es muy común, esta interacción hasta hace unos años se daba gracias a la creación de API REST, en donde una aplicación expone datos o genera operaciones por medio de la especificación HTTP. REST API — GraphqQL

GraphQL: Es una nueva API creada por Facebook, es como una combinación de un lenguaje de consulta como SQL y REST, debes de crear un servidor capaz de responder consultas de GraphqQL, la aplicación cliente define esas consultas y la aplicación backend debe entenderlas, ejecutarlas y retornar datos.



Base de datos
SQL
Los gestores de base de datos más comunes son:
Estos gestores son conocidos por sus modelos de base de datos relacionales.

SQL Server — PostgresSQL — Oracle — MySQL

No SQL
Son base de datos no relacionales, están orientadas a documentos y le permiten la gestión de datos(almacenar y recuperar) en formatos que no sean tablas, la característica y principal diferencia es que no usan SQL como lenguaje principal de consulta, entre algunos de estos tipos de base de datos más conocidos tenemos:

MongoDB — RethinkDB — Cassandra — Redis
Full

Full Stack Developer

Desarrollo Web Lamp
El Kit más básico para ser un desarrollador Full Stack es conocer desarrollo de aplicaciones WEB + LAMP, o sea Linux, Apache, MySQL y PHP. Ahora muchas de estas tecnologías son intercambiables por otras similares, NginX en lugar de Apache, PostgreSQL en lugar de MySQL o Ruby on Rails en lugar de PHP. Por supuesto que existe un equivalente en Microsoft que sería Windows + Microsoft IIS + .NET + Sql Server.



Desarrollo Web Mean
El siguiente kit de un Full Stack es el llamado MEAN, que consiste en MongoDB, Express, Angular y NodeJS. A diferencia del conjunto anterior este stack busca entregar la mayor cantidad de carga al lado del cliente pero requiere de una forma bien distinta de pensar las cosas.



Modelamiento
No hay que perder de vista el diseño del modelo y el análisis de requerimientos, estos dos skills son mandatorios. Obviamente estos no son sólo conocimientos teóricos sino que se tiene que conocer y manejar diversos tipos de diagrama de datos, mínimamente un buen manejo de UML.



Control de versiones
Además un desarrollador Full Stack debe saber utilizar herramientas de versionado como GIT, (SVN “ya pasó de moda” y es mirado despectivamente dentro de la comunidad), a su vez se tiene que saber vincular GIT con herramientas de testing y deployment, ya sea Jenkins, heroku, bizagi, Go Cd, etc.



PAAS Y Soluciones Cloud
Un buen desarrollador Full Stack debe entender de manejo de PAAS (Plataform as a Service) como Heroku y Amazon. No sólo cómo usarlas, si no que entender sus costos y cómo escalan y cuándo deben ser usadas estas soluciones y cuándo no.



Métricas
Debe entender cómo extraer datos de sistemas de métricas como google analytics. Hay que tener en mente que el desarrollador Full Stack no sólo es un desarrollador, es además un analista.


Aplicaciones móviles
El Full Stack Developer tiene que estar 100% actualizado, por lo cual, debe saber cómo crear aplicaciones móviles, tanto híbridas como nativas. Sumando a los requisitos el conocer de frameworks web-mobile como PhoneGap y Titanium, de Frameworks Mobile como Ionic y Ratchet y obviamente debe saber Objective C (y Swift) y Java.



SEO (Search Engine Optimization) y SEM (Search Engine Marketing)
En blogs siguientes les voy a explicar la diferencia, pero un Full Stack tiene que tener en cuenta que no es suficiente sólo saber construir aplicaciones, hay que saber publicarlas.
Publicar en las appstores no es cosa de principiantes, y estar primero en Google es todo un desafío, y esto se hace mucho más difícil cuando internet está lleno de malas prácticas.



Seguridad
Un desarrollador que no saber realizar inyecciones de queries via SQL es el mismo desarrollador que dejará expuesta toda la base de datos de su aplicación. Es importante para un Full Stack saber de seguridad informática.