¿Qué son los desarrolladores full stack, front-end y back-end? ¿Qué hacen cada uno de ellos?

Un desarrollador front-end es el que trabaja en el lado del cliente, normalmente el navegador web. Trabaja con HTML, CSS y Javascript, y a menudo usa bibliotecas y kits de herramientas como jQuery, Bootstrap, jQuery UI, Dojo y muchos más.

Un desarrollador de back-end es el que trabaja en el código del lado del servidor y también en la base de datos. Él / ella escribe código que toma los datos enviados al servidor por el cliente y realiza acciones de soem con eso. Podría estar almacenándolo en una base de datos, recuperando registros de una base de datos, manipulando los datos o lo que se solicite. El desarrollador de backend tiene muchos más idiomas y herramientas disponibles. Algunos de los más comunes son PHP, C #, Java y Javascript, así como SQL, MySQL o Mongo DB para la base de datos. Pero hay muchos otros servidores y herramientas disponibles. Personalmente, trabajo mucho con el servidor IBM Domino, así que uso Lotusscript como el lenguaje del lado del servidor y la propia base de datos NoSQL de Domino.

Un desarrollador de pila completa está haciendo codificación tanto front-end como back-end, él / ella trabaja con la pila completa (cliente, servidor, base de datos) y a menudo incluso trabaja con gráficos usando, por ejemplo, Photoshop o Illustrator.

Sin embargo, la mayoría de los desarrolladores parece centrarse en el front-end o el back-end.

Estos títulos de trabajo se utilizan con el desarrollo web. Para comprender estos términos, debe comprender un poco sobre la arquitectura de Internet. Aquí hay una imagen que explica al respecto:

Navegador web (cliente)
Hace una solicitud a un servidor web (como Google) y muestra la respuesta al usuario.

Servidor web
Obtiene la solicitud del cliente y envía la respuesta al cliente.

Ahora volvamos a la pregunta original. Según el área tecnológica, donde trabaja un desarrollador de software, se le llama desarrollador Full Stack, Front-End y Back-End.

Desarrollador front-end
trabajos relacionados con tecnologías del lado del cliente como (JavaScript, HTML, CSS, etc.)

Desarrollador de back-end
trabajos relacionados con tecnologías del lado del servidor como (servidores como Apache, PHP, Python, JAVA, bases de datos, cachés, etc.)

Desarrollador Full Stack
Pueden trabajar en ambos lados cliente y servidor.

Crédito de imagen: cómo funciona la web

Típicamente, una pila de soluciones es una jerarquía de tecnologías que comprenden un servicio o solución de software. Puede exponer esta pila si considera la solicitud / respuesta de una sola transacción, tomando nota de todos los componentes que se tocan. Normalmente, esto se dividirá entre front-end, muck-in-the-middle y back-end.

Los front-end suelen ser un navegador, y programar un navegador no es tan difícil. Hay un montón de tecnologías para elegir, pero por lo general el rol está muy centrado en la presentación de datos, la gestión de pantallas y notificaciones. El protocolo moderno es http / https, que se implementa fácilmente a través de toneladas de lenguajes y marcos. El volumen de la transacción suele ser un solo usuario (aunque puede haber millones de usuarios). Por supuesto, su front-end podría involucrar servicios web, lo cual es un poco más riguroso pero si está utilizando servicios web existentes; como la autorización de crédito, eso es bastante fácil.

Si está desarrollando un servicio web, esto es más o menos la “basura”. Necesitará algo para alojar el servicio web, generalmente un servidor de aplicaciones, y ahora se encuentra en la programación profunda de java y .net, así como cualquier otro lenguaje heredado potencial y protocolo de solicitud / respuesta (C, C ++, CORBA, RPC, ABAP , etc.) La habilidad aquí está en la arquitectura y la implementación de sistemas escalables con altos volúmenes de transacciones. El servidor de aplicaciones en sí mismo llamará a un cierto número de back-end para cumplir con la solicitud de transacción.

El back-end suele ser una base de datos (todo tipo de tecnologías aquí) pero también puede haber cualquier cantidad de tecnologías intermedias “middleware” como MQ, TIBCO, CICS, Vitria), y potencialmente otra capa de servicios web. La programación de SQL y la gestión de bases de datos es altamente especializada, además de emplear cualquiera de las tecnologías de middleware. Básicamente, está creando sistemas de mensajería asíncrona y síncrona que admiten docenas de cientos de aplicaciones, solicitando información de la base de datos. Detrás de este middleware hay más a menudo un mainframe, que aloja la base de datos (DB2, IMS, etc.). La programación de mainframe no es como trabajar con middleware, muck o front-end, y usará COBAL, RPG, JCL. Gran parte del mainframe está relacionado con el procesamiento por lotes, mientras que el front-end trata del procesamiento interactivo, y hay casos especiales en los que esos roles se invierten. No construyes muchas aplicaciones nuevas en el mundo de mainframe, sino que realizas mucho mantenimiento.

Por supuesto, puede ejecutar Java en el mainframe, así como en Linux y servidores de aplicaciones (WAS, JBOSS, etc.), ¡pero ese giro es una pregunta para otro día!

Las aplicaciones web tienen dos partes: una vista que se ejecuta en el navegador del cliente y un modelo de datos que reside en el servidor. Ambas partes pueden volverse muy complejas, pero debido a que se comunican a través de una interfaz bien especificada (por ejemplo, una API RESTful), la complejidad general del programa se mantiene bajo control.

  • El desarrollo front-end generalmente consiste en validación de entrada preliminar, animación, diseño y mucha programación asincrónica (principalmente coordinando eventos de UI y de red).
  • El desarrollo de back-end debe ocuparse de la seguridad, escalabilidad, disponibilidad y consistencia de los datos de la aplicación. En las aplicaciones web en tiempo real (Quora, Facebook, etc.) también tiene que ocuparse de enrutar mensajes entre clientes.
  • Full-stack es, lo adivinaste, ser capaz de hacerlo todo. ¿Qué es un desarrollador de Full Stack? (Gracias a Peter Roca por el enlace).

El desarrollo front-end consiste en validaciones de entrada preliminares, diseño y trabajos relacionados con tecnologías del lado del cliente como (JavaScript, HTML, CSS, etc.)

El desarrollo de back-end consta de un servidor, una aplicación y una base de datos (donde se almacenan todos los datos). Funciona relacionado con tecnologías del lado del servidor como (servidores como Apache, PHP, Python, JAVA, bases de datos, cachés, etc.)

Desarrollo de pila completa Pueden funcionar en ambos lados cliente y servidor.

More Interesting

¿Cuáles son los principales inconvenientes de TDD? ¿Qué factores o problemas impulsarían a los desarrolladores o gerentes a preferir TLD (Test Last Development) a TDD?

¿Cuáles son los programas de software más importantes que uno debe tener?

Cómo hacer buenos nombres de variables

¿A qué estudios avanzaría después de B.Sc en ingeniería de software?

¿Cuál es la diferencia entre una aplicación, un software y un programa?

¿Cuáles son algunas de las mejores (como las más reveladoras) preguntas de entrevista técnica para un ingeniero de software generalista?

¿Cómo puede un estudiante universitario de ingeniería informática prepararse para convertirse en un ingeniero de software integrado?

¿Cómo un usuario nuevo de Mac personaliza un Macbook Pro para aprovecharlo al máximo?

Aprendizaje automático: ¿cómo puedo analizar los tweets de un usuario e identificar los anuncios relevantes para ellos?

¿La universidad te hace un mejor codificador?

¿Puedo ser empleado en trabajos como un graduado en ciencias de la computación como en ingeniería de software si mi título es en tecnología de la información?

¿Es la ingeniería de software un trabajo a prueba de futuro, o debería estudiar algo más?

¿Cuánto dinero me costaría si quisiera crear un programa de edición de fotos tan bueno como la última versión de Adobe Photoshop y proporcionarlo gratuitamente para el público?

¿Por qué la búsqueda de archivos en mi disco suele demorar entre 20 segundos y 2 minutos, mientras que Google puede buscar una página en Internet casi al instante?

¿Qué es un algoritmo eficiente para encontrar el número de submatrices con el mismo número de 0s y 1s?