Full Stack developer

Desarrollador de pila completa

25 November, 2014

Pero, ¿qué es un desarrollador de pila completa? Mi definición es: Un desarrollador con conocimientos en todas las capas técnicas que componen un conjunto de soluciones de desarrollo.

Con esto no quiero decir que este desarrollador debe ser maestro de todas las capas, pero sentirse cómodo y familiarizado con esas tecnologías es un plus.

Pero entonces, ¿qué es una pila? como se define en Wikipedia: Es un conjunto de subsistemas de software y componentes necesarios para crear una plataforma completa de tal manera que no hay software adicional necesario para soportar aplicaciones.

Podemos tomar esta estructura de pila simple:

Un buen ejemplo de pila de desarrollo utilizando la estructura propuesta es LAMP:

  • Front end software: HTML, CSS y Javascript.
  • Navegador: Google Chrome o Mozilla Firefox.
  • Back end software: PHP (P)
  • Webserver: Apache (A)
  • Base de datos: MySQL (M)
  • SO: Ubuntu Linux (L)

Ahora me gustaría señalar una lista de términos y tecnologías que un desarrollador de pila completo deberia conocer. Por supuesto que habré olvidado muchas tecnologías, pero no puedo enumerarlas todas porque hay muchas y más en el futuro.

Administración de sistemas

  • Linux y scripting: Bash, Shell
  • Nube: Amazon, OpenStack, Heroku
  • Procesamiento en segundo plano: Redis, Gearman
  • Busqueda: Elasticsearch, Sphinx, Solr
  • Caching: Varnish, Memcached, APC
  • Virtualización: Xen, VMware, KVM, Docker
  • Gestión de la configuración: Puppet, SaltStack, Chef
  • Monitorización: Nagios, monit, munin, Cacti

Herramientas de desarrollo web

  • Control de versiones: Git, Mercurial, SVN
  • Virtualización: VirtualBox, Vagrant
  • Entorno de desarrollo integrado (IDE): Eclipse, Brackets

Tecnologia back-end

  • Servidor web: Apache, Nginx
  • Lenguaje de programación: PHP, Ruby, Python
  • Marco de lenguaje: CodeIgniter, NodeJS, Django
  • Base de datos: MySQL, MongoDB, Cassandra, Redis
  • Integración continua: Jenkins, Buildbot
  • Syntax: SQL, JSON

Tecnologia front-end

  • HTML / HTML5: Web semantica
  • CSS / CSS3: LESS, SASS, Media Queries
  • JavaScript: jQuery, AngularJS, Backbone.js
  • Comunicaciones: AJAX, WebSocket
  • Sintaxis: JSON, XML
  • Compatibilidad de nevagadores
  • Diseño responsivo

Diseño

  • Maquetación (PSD a HTML)
  • Interfaz de usuario (UI)
  • Experiencia de usuario (UX)

Como extra, me gustaría añadir lo último en el mundo móvil.

Tecnologias móviles

  • iOS: Objective-C, Swift
  • Android: Java
  • Híbrido: PhoneGap, Appcelerator, Sencha

Conclusión

Hay muchos lenguajes, tecnologías, prácticas, … alrededor de todo el desarrollo de software de una pila estructurada. Esta es la causa por la cual los equipos de desarrollo de software son tan mezclados; una única persona no puede saber todo de ellos a la vez.

La próxima vez que eches un vistazo a un sitio web o deslices el dedo por tu aplicación móvil preferida, recuerda cuánta lógica y capas hay en funcionamiento.

Aquí otro enlace interesante a leer.

    Etiquetas: , ,

    Dejar un comentario