Hoy iniciamos con nuestra serie de publicaciones en las que describiremos los distintos roles de desarrollador, iniciando con Full Stack Developer / Desarrollador Full-stack.
El Full Stack Developer es un programador con un perfil muy completo. Es aquel que conoce los diferentes sistemas operativos y componentes que se encuentran en medio, así como la forma en que interactúan entre ellas.
El Desarrollador Full-stack es el generalista de los desarrolladores, con amplio conocimiento técnico.
Deberá de ser capaz de realizar una aplicación desde cero, para lograr este propósito debe de conocer las tecnologías requeridas tanto para desarrollo Back-end (server-side, del lado del servidor) como Front-End (client-side, del lado del cliente).
Para lograr desempeñar exitosamente este rol, no basta con aprender las tecnologías front-end y back-end, sino encontrarse cómodo pasando de una tecnología a otra con facilidad, conectándolas de forma pura y simple lo mejor posible, por loque lograr llegar a esta posición requiere su tiempo y dedicación.
Herramientas que te convierten en un full-stack:
Desarrollo web LAMP (Linux, Apache, MySQL, PHP)
- El “paquete” básico para ser un desarrollador Full-Stack consiste en el desarrollo de aplicaciones WEB para Apache, Linux, PHP y MySQL. Algunas de las tecnologías pueden cambiar por otras similares, como NginX o IIS en lugar de Apache, PostgresSQL o MongoDB en lugar de MySQL o Ruby on Rails en lugar de PHP.
- El equivalente en tecnologías Microsoft son Windows, Microsoft IIS, .NET y SQL Server.
Desarrollo web MEAN
- Consiste en MongoDB, Express Angula y NodeJS.
- A diferencia del grupo anterior, este tiene por objetivo entregar la mayor cantidad de información del lado del cliente, y requiere una forma distinta para lograrlo.
Modelamiento
- Dos habilidades requeridas son el diseño del modelo y el análisis de requerimientos. Deberán ser conocimientos prácticos que permitan manejar diferentes tipos de diagrama de datos, como mínimo UML.
Control de versiones
- El desarrollador Full Stack debe de utilizar herramientas de versionado como GIT, así como saber vincular GIT con herramientas de testing (pruebas) y deployment (despliegue) como Jenkins, Heroku, Bizagi, Go CD, etc.
PAAS y Soluciones Cloud
- El manejo de PAAS (Plataform as a Service) es requerimiento del buen Desarrollador Full-Stack, algunas de ellas son Heroku, Amazon Web Services y Microsoft Azure; no solo conocerlas sino entender sus costos, como escalan, cuando usarse y cuando no.
Métricas
- El desarrollador Full-Stack no solo es un desarrollador, es además un analista, por lo que deberá saber entender como extraer datos de sistemas de métricas como Google Analytics.
Aplicaciones móviles
- Es implícito aclarar que el desarrollador Full-Stack deberá estar 100% actualizado, por lo que deberá ser común saber desarrollar aplicaciones tanto híbridas como nativas, utilizando frameworks web-mobile como PhoneGap y Titanium; de Frameworks Mobile como Ionic y Ratchety sin duda saber Objective C (y Swift) y Java.
SEO (Search Engine Optimization) y SEM (Search Engine Marketing)
- Porque no será suficiente desarrollar aplicaciones, sino hay que saber publicarlas.
- Publicar en las appstores no es cosa menor.
Seguridad
- Es imprescindible que el desarrollador conozca sobre seguridad informática, como realizar inyecciones de queries via SQL sino dejará expuesta la base de datos de la aplicación.
Adquirir este cúmulo de conocimiento no es al azar, requiere años de práctica y dedicación, por lo que al término de la carrera universitaria es probable que se necesiten de 5 a 10 años de práctica. Recuerda que aún que tu profesión sea en ciencias de la computación o ingeniería informática es necesario el auto aprendizaje.
Con esto esperamos haber transmitido lo que significa ser un desarrollador Full-Stack. En nuestra próxima publicación hablaremos de desarrolladores Front End y Back End.