Conocer HTML y CSS, trabajar en experiencia de usuario, desarrollar aplicaciones web, estudiar ingeniería informática… No hay un roadmap ni directrices mágicas que te conviertan en un experto programador Fullstack. Pero estos son algunos consejos para intentar guiarte en el camino… y que no acabes frustrado.
Han sido muchas las veces que he escuchado conversaciones entre developers (amigos, compañeros de trabajo…) sobre si se consideran Frontends (FE), Backends(BE) o Full stack developers.
Históricamente se ha tenido la costumbre de encasillar y clasificar a los developers en el mundo del Backend o el Frontend como si fueran algo radicalmente diferente. Nada más lejos de la realidad.
No es extraño encontrar desarrolladores que dicen ser expertos en Node.js, React.js o cualquier otro framework/librería de moda. Y lo entiendo, entiendo que todos tenemos un punto fuerte y una tecnología que se nos da mejor que otra. Pero si realmente estás interesado en seguir creciendo y quieres ser lo que muchos llaman programador Fullstack, tarde temprano te tocará entender que no se trata de ninguna tecnología en concreto, ni de Frontend ni de Backend.
Ser Fullstack se trata de profundizar y entender los conceptos básicos (y no tan básicos) del software.
Solo en el momento en que empieces a dejar de diferenciar entre Front end y Back end empezarás a ver las cosas de forma más genérica y encontrarás los puntos en común que tienen, que son muchos.
El ritmo frenético de los frameworks
Como verás he insistido mucho en no enfocar las cosas en frameworks o librerías concretas. Pero para que no creas que es “porque yo lo digo”, ahora te voy a dar unos datos para que entiendas hasta que punto puede llegar a ser frustrante.
De la misma manera que decía de no obcecarse con los frameworks tampoco deberíamos enfocarnos a un lenguaje de programación en concreto, pero para el propósito de este artículo y a modo de ejemplo yo voy a enfocarme en Javascript.

Estos son solo algunos de los frameworks más conocidos (sí, los más conocidos, no todos) de Javascript actualmente. Pero no es cosa únicamente de JS, con cada lenguaje te va a pasar lo mismo.
Encontrarás una lista interminable de tecnologías que va creciendo día a día. ¿Entiendes ahora porque no puedes obsesionarte con aprender cada una de ellas?
Es ilógico, mejor aprendamos los conceptos comunes que tiene el buen uso de ellas y después según las características de cada proyecto ya elegiremos la que mejor se adapte a las necesidades y nos estudiaremos su documentación.
Diferentes habilidades del programador fullstack
Bueno vale; ¡pero cuéntanos ya cuales son esas buenas prácticas y conceptos que pueden convertirnos en un mejor programador fullstack!
Me gustaría dividirlas en varias partes: por un lado debemos trabajar nuestras soft skills. También deberemos entender conceptos básicos del software, las diferentes tecnologías para comunicar el backend y el frontend de una aplicación, las formas de persistencia y si me apuras, y quieres tenerlo todo controlado, un poco de infraestructura y sistemas no te irá mal.





Soft skills
Antes de meternos de lleno en lo técnico me gustaría recordarte que ser programador Fullstack o cualquier otro desarrollador requiere de ciertas habilidades no técnicas. Para tu trabajo te convendrá trabajar en:
- Tus habilidades para comunicarte con el equipo
- Capacidad de resolver problemas complejos
- Paciencia
- Constancia
- Curiosidad
- Capacidad de ser autodidacta
Básicamente todo se centra en entender que pasarás buena parte de tu carrera estudiando y aprendiendo cosas nuevas. Te encontrarás problemas complejos que debes ser capaz de dividir en problemas más pequeños y tendrás que aprender a pensar de una forma un poco diferente a lo habitual.
Por todo esto, además, deberás prestar especial atención a tu manera de comunicarte, para que el resto de los mortales pueda entenderte fácilmente.
Conceptos comunes de software
No importa si estás programando en el BE o en el FE. Sea donde sea debes empezar a pensar en código sin más. Deberías tener siempre en mente los siguientes conceptos:
- Intenta organizar tus carpetas, archivos y las relaciones entre ellos siguiendo algún tipo de arquitectura de software, la que mejor se adapte a ti y a las necesidades del proyecto.
- Intenta no repetir tu código, aprovecha y reutiliza tus clases o funciones haciéndolas lo más genéricas posibles.
- Cada función o clase debe realizar una única tarea.
- Utiliza namings claros, no importa que sean un poco largos, es preferible que se entiendan a que sean cortos.
- Haz tu código pensando en futuras ampliaciones que podrías necesitar. Esto no significa que empieces a codificar cosas que aun no vas a necesitar, significa que cuando las tengas que añadir las puedas añadir sin desmontarlo todo.
- Escribe clases y funciones cortas, de pocas líneas. Si tienes algunas muy largas significa que no estás cumpliendo el punto dos. Sepáralas en varias funciones o clases y que cada una se responsabilice de una tarea clara.
Si cumples estos consejos estarás haciendo más fácil el trabajo a ti y a tus compañeros de cara al futuro. Tu código será mucho más fácil de mantener, extender, escalar y testear. Sobretodo no te olvides de los tests, tanto en FE como en BE.
Comunicación BE/FE mediante apis
Como sabrás, normalmente una aplicación se comunica entre el cliente y el servidor mediante APIS.
Existen muchos tipos de APIS como por ejemplo: SOAP, RPC, WebSocket, REST o GraphQL.
El término API es una abreviatura de Application Programming Interfaces, que en español significa interfaz de programación de aplicaciones.
No te preocupes, te recomiendo que no trates de entenderlas todas pero por lo menos debes profundizar y entender cual necesitas en cada proyecto de entre REST o GraphQL.
De momento te adelanto que GraphQL es ideal para proyectos más complejos donde vas a querer hacer muchas consultas al servidor, más complejas y poco definidas de base. Sin embargo si tu proyecto es sencillo y tienes claro que será poco más que un CRUD te animo a utilizar REST por su fácil implementación y configuración.
Persistencia del programador fullstack
En este apartado principalmente debes tener en cuenta los dos grandes tipos de base de datos; SQL (también llamadas relacionales) o NoSQL (también llamadas no relacionales).
Pese a ser menos flexibles, más lentas y menos escalables, las SQL también tienen ciertas ventajas como ser más fáciles de consultar y sacar estadísticas de sus datos (debido a que se guardan de manera estructurada) así como garantizar la integridad de los datos.
En resumen es recomendable utilizar las SQL para proyectos donde tengamos clara la estructura de datos y no tengamos grandes cantidades de datos para almacenar (Big data). Así como para proyectos donde una gran cantidad de usuarios vayan a acceder de manera concurrentes a datos sensibles a la integridad.
Por otro lado las NoSQL tienen grandes ventajas en proyectos con gran volumen de datos y que queremos almacenar en su formato original, con una estructura de datos poco clara.
Principalmente son más rápidas, flexibles y amigables con los cambios de arquitectura pero por contra son bastante más complicadas de consultar.
Infraestructura y sistemas
Realmente no es tarea de un programador Fullstack dominar la parte de infraestructura y sistemas pero como parte de un ser curioso que debes ser, no estaría mal tener claros unos conceptos básicos.
Te animo a investigar sobre la integración y la distribución continua. Estos dos conceptos engloban la serie de pruebas (tests automatizados) y automatizaciones que se realizan para llevar nuestro código de la fase de desarrollo al deploy en producción.
Para ello existen múltiples herramientas tanto para integración como para distribución pero eso lo dejaremos para el próximo artículo.
Este artículo no pretende ser más que una guía de los conceptos que debes estudiar e interiorizar para ser un programador Full stack completo. Ni vas a aprender dichos conceptos aquí ni necesariamente son estos los únicos. Además se da por hecho unos conocimientos básicos sobre desarrollo web y software.
FUENTES: Ciberninjas
Deja un comentario