sábado, 7 de diciembre de 2013

¿Que es un desarrollador Full Stack o de Pila Completa?

Tomada de: cloudfront.net

Buen día compañeros desarrolladores o ingenieros de software, el día de hoy andaba estudiando un framework llamado Symfony, y entre su documentación encontré un termino que algunos quizás no hayan escuchado, se trata de Full-Stack o por su traducción en español Pila Completa.

Googleando la palabra encontré la mayoría de información que hacia referencia a este termino en ingles (en español no encontré algún articulo o entrada que me dejara claro de que se trataba), por fortuna como dije antes, di con una entrada de un blog escrito en ingles en donde explican de manera muy completa el termino y lo que tuviera que ver con ello.

Hice la traducción lo mejor posible para los interesados en conocer sobre el tema, espero les guste.

Me enteré en OSCON, por un empleado de Facebook, que allí solo contratan desarrolladores Full-Stack. Pero bueno, ¿Que significa eso?.

Para mi un desarrollador Full-Stack no es alguien con familiaridad con cada capa, sino el dominio de muchas y poseedor de un interés genuino en toda la tecnología de software.

Los buenos desarrolladores que están familiarizados con todo el Stack (pila) saben como hacer la vida mas fácil para quienes los rodean. Es por eso que estoy tan en contra de silos en el lugar de trabajo.

Claro, políticas y desafíos de comunicación conseguidas en el camino en grandes organizaciones. Creo que el punto va para Facebook y lo que su política de contratación es, si las personas inteligentes utilizan sus cabezas y sus corazones, lograran un mejor producto en menos tiempo.

CAPAS DE LA PILA COMPLETA O FULL-STACK

1. Servidor, red y entorno de alojamiento
  • Esto implica el comprender lo que se puede quitar y porque, teniendo ningún recurso por sentado.
  • Es necesario un uso apropiado del sistema de archivos, almacenamiento en la nube, los recursos de red, comprensión de la redundancia de datos y disponibilidad.
  • ¿De que manera escala aplicación teniendo en cuenta las limitaciones de hardware?
  • ¿Que pasa con las condiciones de multi-threading y race? ¿Sabe algo, usted no los vera en su maquina de desarrollo, pero ellos pueden y pasa en el mundo real.
  • Los desarrolladores Full-Stack pueden trabajar hombro a hombro con DevOps. El sistema debe proporcionar mensajes de error útiles y tener capacidad de registro. Los DevOps vera los mensajes antes que tu, así que ellos también cuentan.
2. Modelado de datos
  • Si el modelo de datos es deficiente, la lógica del negocio y las capas superiores comenzaran a necesitar código extraño (feo) para compensar los corner case que el modelado de datos no cubre.
  • Los desarrolladores Full-Stack saben como crear un modelo relacional razonablemente normalizado, con claves foráneas, indices, vistas, tablas de búsqueda, etc.
  • Los desarrolladores Full-Stack esta familiarizados con el concepto Data Stores no relacionados y entienden donde brillan sobre los Data Stores relacionales.  
3. Lógica del negocio
  • El corazón del valor que la aplicación proporciona.
  • Habilidades orientadas a objetos son necesarias aquí.
  • Frameworks podrían necesitarse aquí también.
4. Capa API / Capa de acción / MVC
  • Como el resto del mundo opera en contra de la lógica de negocio y el modelo de datos.
  • Frameworks en nivel que deban ser utilizados a gran medida.
  • Los desarrolladores Full-Stack tiene la capacidad de escribir interfaces claras, coherentes y fáciles de usar. La alta complejidad de algunas APIs me desagradan.
5. Interfaz de usuario
  • Desarrolladores de pila completa: a). saben como crear un diseño de fácil lectura, o b). reconocen que necesitan la ayuda de artistas y diseñadores gráficos. De cualquier modo, la implementación de un diseño visual es clave. 
  • Puede incluir dominio de HTML5 / CSS
  • JavaScript es el lenguaje que viene del futuro y se está haciendo un trabajo muy emocionante en el mundo JavaScript (node, backbone, knockout...)
6. Experiencia de usuario
  • Los desarrolladores de pila completa aprecian que los usuarios quieran que las cosas funcionen.
  • Un buen sistema no causa a sus usuarios síndrome de túnel carpiano o dolor en los ojos. un desarrollador de pila completa es capaz de dar un paso atrás y revisar un procesos que necesita 8 clics y 3 pasos, y reducirlo a solo un clic.
  • Los desarrolladores de pila completa escriben mensajes de error útiles. Si algo no funciona, se disculpa por ello. A veces los programadores inadvertidamente pueden escribir mensajes de error que hacen que la gente se sienta estúpida.
7. Entender lo que el cliente y el negocio necesita
  • Ahora estamos desdibujando en la linea del arquitecto, pero eso es demasiado para unas manos fuera del rol.
  • Los desarrolladores de pila completa tienen una idea de lo que está pasando en el campo cuando el usuario utiliza el software, También tienen una idea del negocio.

Otras piezas del rompecabezas
  • Capacidad para escribir pruebas unitarias de calidad. Por cierto, aún JavaScript puede tener pruebas unitarias hoy en día.
  • Comprensión de los procesos automatizados repetibles para la construcción de la aplicación, probándola, documentándola y en despliegue a escala.
  • Estar consciente de los problemas de seguridad es importante, ya que cada capa presenta sus propias vulnerabilidades posibles.


5 comentarios :