Full Stack developer vs. Programmer

Full Stack developer vs. Programmer

Mucho han cambiado las cosas en los últimos tiempos en el campo del desarrollo de aplicaciones, tanto en cuanto a tecnologías como en cuanto a metodologías.Y estos cambios, sin duda, afectan al perfil que las empresas buscan (buscamos) a la hora de incorporar nuevos profesionales a nuestros equipos de desarrollo.

Así, si antes se buscaban programadores expertos en uno o varios lenguajes, actualmente el perfil de los programadores que se buscan es de Full Stack developer.

Los desarrolladores denominados Full Stack son aquellos que conocen diferentes herramientas de software y pueden crear aplicaciones complejas desde cero, para ello el Full Stack developer debe ser una persona que entienda en profundidad cómo interactúan las distintas capas de servicio de una aplicación.

Es normal que las empresas quieran conseguir a los mejores trabajadores por la menor cantidad de recursos posibles, pero tener este tipo de conocimientos no es algo trivial. Hoy en día, los alumnos que acaban sus estudios de formación profesional o universitaria no tienen todos conocimientos requeridos a un Full Stack developer, con lo que se requiere normalmente una formación adicional.

No pretendo presentar aquí una lista definitiva de las tecnologías/lenguajes que todo Full Stack debería conocer o una lista definitiva de los requerimientos que toda empresa busca en los profesionales que desea incorporar, simplemente pretendo mostrar una serie de conocimientos, basados en mi experiencia como docente, CIO y co-Fundador de una empresa Startup, que se le podrían pedir a un programador Full Stack:

1.- DESARROLLO LAMP (Linux, Apache, MySQL y PHP)

El paquete más básico para ser un programador Full Stack es ser experto en desarrollo de aplicaciones WEB LAMP, o sea Linux, Apache, MySQL y PHP. Actualmente muchas de estas tecnologías son intercambiables por otras similares: NginX en lugar de Apache, PostgreSQL en lugar de MySQL y Ruby on Rails, Perl o Python en lugar de PHP. Estas tecnologías son utilizadas por Yahoo!, Facebook o Wikipedia. Drupal, Joomla! o WordPress son entornos basados en LAMP.

2.- DESARROLLO MEAN (MongoDB – Express – AngularJS – Node.JS)

El siguiente kit de un full stack developer es el llamado MEAN, que consiste en MongoDB como base de datos que almacena documentos JSON; Express como framework basado en Node.js que nos permite crear API REST; AngularJS como framework para crear la parte cliente de la aplicación en formato Single Page y Node.js como framework JavaScript basado en V8 que proporciona funcionalidades core para nuestra aplicación bajo un modelo asíncrono de eventos.

A diferencia del kit anterior este stack busca situar la mayor cantidad de carga al lado del cliente por lo que requiere una forma bien distinta de plantear las aplicaciones y los desarrollos.

Este stack es utilizado por NetFlix, Google o Paypal.

3.- ANÁLISIS Y MODELAJE DE APLICACIONES

No se puede ser un desarrollador de aplicaciones y no tener conocimientos de modelaje y análisis de requisitos. Estos dos conocimientos, para mí, son obligatorios.
Si nos involucramos en un equipo de trabajo Agil, donde por ejemplo, la estimación de las Historias se realizan entre todo el equipo, es imprescindible que los developers tengan conocimientos de análisis.

4.- CONTROL DE VERSIONES

Además un programador Full Stack debe saber utilizar herramientas de control de versiones como GIT y saber vincular la herramienta GIT con herramientas de testing y deployment.

5.- TESTING

Test-driven development (TDD) es una práctica habitual en el desarrollo de aplicaciones que involucra otras dos prácticas: escribir las pruebas primero (Test First Development) y Refactorización (Refactoring). El propósito del TDD es lograr un código limpio que funcione. La idea es que los requisitos sean traducidos a pruebas, de este modo, cuando las pruebas pasen se garantizará que el software cumple con los requisitos que se han establecido.

6.- BIG DATA, SCRAPPING Y MÉTRICAS

Este tipo de programador; hay que tener en mente que el programador Full Stack no sólo es un programador, es además un análista; también debe saber de manejo de datos y cómo utilizar herramientas para análisis de estos datos, o sea, añadamos a los requisitos conocer el framework Apache Hadoop y entender de operaciones map reduce.

7.- APLICACIONES MÓVILES

El Full Stack developer tiene que estar 100% actualizado, así pues, debe saber cómo crear aplicaciones móviles, tanto híbridas como nativas.
El conocimiento de frameworks web-mobile como PhoneGap y Titanium, Frameworks Mobile como Ionic y Ratchet y obviamente conocimientos de Objective C (y Swift) y Java aportarán al Full Stack las herramientas de desarrollo para aplicaciones móviles.

8.- SEGURIDAD OFENSIVA

Parece que las empresas se han dado cuenta de que ya no vale sólo con defenderse de los ataques, así que han decidido poner en práctica aquello de “la mejor defensa en un buen ataque“. Un programador que no sabe, por ejemplo, realizar inyecciones de queries via SQL es el mismo programador que dejará expuesta toda la base de datos de su aplicación.

 

Carlos Marín Muñoz

https://es.linkedin.com/in/cmarinmu