Encontré este artículo escrito por George Fekete desde el punto del sitio
La barrera de ingresar a la industria del desarrollo web como desarrollador web todavía es baja, pero se está volviendo cada vez más compleja.
La naturaleza dinámica de toda la industria hace que los requisitos cambien a menudo a las herramientas y lenguajes de programación más populares y “la mejor opción”.
Atrás quedaron los días en que un desarrollador solo requería un lenguaje de programación o un proceso muy específico. Hoy en día, los programadores deben conocer una variedad de tecnologías en múltiples plataformas para hacer un buen trabajo.
¿Qué significa un desarrollador de pila completa?
El término full-stack significa desarrolladores que se sienten cómodos trabajando con tecnologías tanto back-end como front-end.
Para ser más específicos, significa que el desarrollador puede trabajar con bases de datos, PHP, HTML, CSS, JavaScript y todo lo demás, también, aventurarse en la conversión de diseños de Photoshop a código front-end.
Un desarrollador de pila completa no necesita dominar todas las áreas y tecnologías que necesita para trabajarlo, porque eso hace que sea casi imposible, solo necesita sentirse cómodo trabajando con esas tecnologías, y eso también es mucho.
¿Qué significa full-stack en 2000 y qué significa ahora?
![]()
2000 fue hace mucho tiempo, en ese año se lanzó PHP 4.0. Si, 4.0. En aquel entonces, un buen desarrollador web sabía un poco de HTML, CSS y algunos procedimientos PHP, porque la POO adecuada ni siquiera existía hasta la versión 5.0.
La pila LAMP (Linux – Apache – MySQL – Perl / PHP) estaba de moda en esos años, con poca o ninguna alternativa. A principios de la década de 2000, si alguien usaba el control de versiones, se los consideraba herejes tecnológicos o asistentes. Hoy es inaudito y se rió de él, sin usar uno.
Entonces, intentemos desglosar y clasificar las principales pilas de tecnología que se requieren de un desarrollador de pila completa hoy:
Administracion del sistema:
- Linux y scripting de shell básico
- Computación en la nube: Amazon, Rackspace, etc.
- Procesamiento de fondo: Gearman, Redis
- Búsqueda: Elasticsearch, Sphinx, Solr
- Almacenamiento en caché: barniz, Memcached, APC / OpCache
- Monitoreo: Nagios
Linux alimenta la mayor parte de Internet, es un sistema operativo de facto en el desarrollo web (no descartar .NET). Además, un desarrollador de pila completa debe saber cómo funciona el alojamiento en la nube, Amazon / Rackspace u otros proveedores y sus API.
La búsqueda es una parte integral de la mayoría de los sitios web: un desarrollador debe saber cómo configurar y usar servidores de búsqueda como Sphinx o Elasticsearch.
El almacenamiento en caché también es importante, barniz, proxy inverso, Memcached y almacenamiento en caché de código de operación. Necesita saber qué es cada uno de estos y cómo usarlo.
Herramientas de desarrollo web:
- Control de versiones: Git, Mercurial, SVN
- Virtualización: VirtualBox, Vagrant, Docker
Hoy en día, es inaceptable no usar el control de versiones, incluso si es un desarrollador en solitario.
Con las herramientas de virtualización, tener entornos de desarrollo separados por proyecto es realmente agradable y fácil de configurar con VirtualBox y Vagrant al menos.
Si desea trabajar con Vagrant, también necesita conocer la sintaxis básica de Ruby y los scripts de shell.
Tecnología de fondo:
- Servidores web: Apache, Nginx
- Lenguaje de programación: PHP, NodeJS, Ruby
- Base de datos: MySQL, MongoDB, Cassandra, Redis, SQL / JSON en general
Apache y Nginx son la norma para el desarrollo web. Un desarrollador de pila completa debe saber cómo configurar estas aplicaciones y servir los contenidos de su sitio web.
PHP es lo que necesita ser dominado en un alto nivel, NodeJS, Ruby es bueno saberlo también.
Además del servidor web y los lenguajes de programación, la administración de bases de datos también es un requisito para un desarrollador de pila completa, que en sí mismo es otra bestia.
Las bases de datos relacionales (como MySQL, PostgreSQL) frente a las bases de datos no relacionales (como MongoDB, Redis o Cassandra) son diferencias que el desarrollador de pila completa necesita saber, junto con conocer la sintaxis de XML / JSON.
Tecnología de front-end:
- HTML / HTML5: web semántica
- CSS / CSS3: MENOS, SASS, consultas de medios
- JavaScript: jQuery, AngularJS, Knockout, etc.
- Las peculiaridades de compatibilidad entre navegadores
- Diseño de respuesta
- AJAX, JSON, XML, WebSocket
Aquí viene la parte divertida. Si desea presentar su sitio web, es mejor que conozca estos y todos sus caprichos.
JavaScript fue una broma en los primeros días, convertido en uno de los lenguajes más populares y poderosos de la actualidad. Cada día aparecen nuevas metodologías y marcos, MVC, MVVM, MVP, Angular, Knockout, Ember, etc.
Junto con HTML, CSS, Javascript, un desarrollador de pila completa también debe conocer el diseño receptivo y cómo trabajar con consultas de medios y preprocesadores CSS como LESS y SASS.
También se debe saber cómo comunicarse con el back-end a través de AJAX o WebSockets.
Diseño:
- Convertir el diseño del sitio web en código front-end
- UI
- UX
Además de las tecnologías de front-end, un desarrollador de pila completa también comprende lo que es posible y lo que no debe crear con las restricciones de HTML / CSS / Javascript y convierte el diseño (archivos de Photoshop / Illustrator) en consecuencia.
Con muchas de las tecnologías mencionadas, un desarrollador puede escapar sin saber codificar o usar, como Ruby o bibliotecas JavaScript específicas, pero todas estas están interconectadas de una forma u otra.
Por ejemplo, si desea configurar Vagrant, necesita conocer la sintaxis de Ruby, tan simplificada como sea, o si desea manipular elementos DOM, jQuery es una buena tecnología para conocer.
![]()
Otra categoría que merece ser mencionada son las tecnologías móviles . Es una industria muy dinámica y estrechamente relacionada con el desarrollo web:
- iOS
- Androide
- Híbrido: PhoneGap, Appcelerator
Una de las mayores disparidades actuales es entre el desarrollo web y móvil, pero la brecha se está cerrando rápidamente.
Un desarrollador de pila completa también debe conocer estas tecnologías.
¿Es mejor ser un desarrollador full-stack?
Ser un desarrollador completo significa tener una mente abierta hacia las nuevas tecnologías, tener las manos sucias en cada una y comprender cómo se realiza una aplicación web desde un concepto hasta el diseño hasta el producto final.
La idea de un “desarrollador de pila completa” no se trata de dominar todas las tecnologías posibles que existen, porque la especialización existe por una razón. Se trata más de tener una comprensión en cada una de las áreas anteriores, comunicarse de manera inteligente entre los miembros del equipo y ser un buen activo si la situación lo necesita.
El desarrollador de pila completa tendrá un papel cada vez más importante en el desarrollo web del futuro, especialmente cuando los métodos de desarrollo como DevOps se están convirtiendo en una parte esencial de las empresas de desarrollo de software, donde la línea entre los desarrolladores de código y los administradores responsables del despliegue del código y la configuración se vuelve más delgada cada día.