¿Por qué debo aprender Arquitectura y Diseño de Software?

Una de las diferencias clave entre un desarrollador Senior y los demás es su capacidad para definir la arquitectura de una aplicación. Las labores de arquitectura y diseño buscan acomodar u optimizar un problema multivariable donde se deben dar respuesta a todos los requerimientos funcionales y a los no funcionales con la misma base de código. Todo esto mientras se define una solución amigable para el negocio. Esto es: fácil de aprender para los programadores, de un costo razonable para la organización, que cumpla con estándares de la industria, entre muchas otras características.
Sin este rol en un equipo de desarrollo, las soluciones creadas tenderán al fracaso, sufriendo de una entropía (desorden) cada vez mayor, hasta que su mantenimiento se haga imposible.
Debes aprender sobre Arquitectura y Diseño de software para poder resolver estos temas tan críticos y al mismo tiempo avanzar en tu carrera profesional y conseguir una mejor remuneración.

Modelado de Software con UML (CO-SD-030-2019-R1)

UML es el lenguaje de modelado de preferencia para crear modelos de software y procesos asociados. Es un lenguaje sencillo, solo cuenta con 13 diagramas, y fácil de aprender. Su poder se encuentra en su alto grado de expresividad. Es utilizado en la documentación técnica y funcional de los sistemas. Además, es necesario conocerlo para poder entender y comunicar los patrones de diseño, estos últimos siempre se acompañan de un diagrama UML para aclarar implementación sugerida.
En este taller aprenderás a utilizar todos los diagramas UML y mas importante aun en que momento utilizarlos y con cual objetivo.

Introducción a la Programación Orientada a Objetos (CO-SD-031-2019-R1)

La programación Orientada a Objetos es uno de los paradigmas mas utilizados por los equipos de desarrollo y soportado por los lenguajes modernos. Nos ayuda a reducir la complejidad inherente a las aplicaciones de mediano y gran tamaño. Es una técnica la cual debemos manejar y dominar para poder ser buenos profesionales de software.
En este taller te brindamos los fundamentos de la POO y como ponerla en práctica, desde las actividades de diseño y arquitectura.

Introducción a la Programación Funcional (CO-SD-032-2019-R1)

La programación funcional nos ayuda a reducir los errores causados por un uso descuidado de la programación imperativa (mutación o cambios de estado). Sus bondades son muchas, pero había sido ignorada durante décadas ya que no existían herramientas (lenguajes y hardware) con un buen soporte para esta, siendo relegada al entorno académico. En la actualidad es un paradigma soportado y promovido por grandes jugadores como Scala, Kotlin, Erlang, entre otros. Y existen ya muchas aplicaciones comerciales construidas bajo este paradigma.
En este taller te enseñaremos los fundamentos de la Programación Funcional y como crear aplicaciones utilizando este paradigama.

Programación Multiparadigma (OO, funcional, estructurada) (CO-SD-033-2019-R1)

Este curso se centra en la combinación de los tres paradigmas de mayor uso en las aplicaciones empresariales a la fecha: la programación orientada a objetos, la funcional y la estructurada. El objetivo principal es comprobar que estos tres “sabores” no son opuestos y de hecho pueden combinarse para crear soluciones más ricas y robustas.

Introducción a RabbitMQ (CO-SD-034-2019-R1)

RabbitMQ es la implementación de referencia del protocolo AMQP. Básicamente es una cola de mensajes con un rendimiento altísimo la cual se utiliza para descongestionar aplicaciones y servicio principalmente utilizando el patrón Publisher-Subscriber. Es importante conocer esta herramienta ya que probablemente nos toque utilizarla directamente o modificar aplicaciones que la utilicen. Además, su similitud con otras herramientas de gestión de colas la hace un primer paso en el dominio de otras.

NO-SQL Databases (CO-SD-035-2019-R1)

Las bases de datos NO-SQL nos ayudan a resolver problemas de persistencia (almacenamiento y recuperación) de elementos no estructurados como archivos, etiquetas, documentos, etc. Mas importante aún, nos permiten definir repositorios de información heterogénea donde podemos almacenar distintos formatos de “cosas” sin vernos obligados a definir una estructura rígida a priori.
En este taller aprendas a utilizar algunas de las herramientas que soportan este paradigma y ver su uso en aplicaciones reales.