Ir al contenido principal

Tendencias para aprender en la Ingeniería de Software

 Estaba haciendo un ejercicio mental que suelo hacer después de cumplir ciertas metas, identificar las tendencias tecnológicas de mi campo para enfocarme, aprender y obtener un beneficio. Todos dicen comúnmente que debemos hacer lo que nos gusta, pero por mi profesión hasta para llegar a esa conclusión solemos ser sistemáticos.

 

La ingeniería es tan amplia como su propia definición, así como sus ramas de conocimiento y gracias a la cuarta revolución industrial muchas disciplinas parecen converger con avances que hacen muy difícil seguir el ritmo. También es claro que como arquitecto, se suele tener un panorama general de distintas soluciones y tecnologías, sin embargo siempre vale la pena especializarse.

 

Después de la maestría decidí enfocarme en microservicios; aprender de patrones, estilos, contenedores,  orquestadores, frameworks, etc. Es claro que no lo sé todo aún en esta área, sin embargo hay muchas nuevas opciones interesantes para aprender. Hice un resumen de las tendencias en el área de la ingeniería de software que tal vez pueda interesar.



Microservicios:


Este estilo de arquitectura ha ganado fuerza desde que Martin Fowler introdujo el concepto, como una forma de construir sistemas a través de componentes aislados tal que pueden desplegarse de manera independiente. Una gran cantidad de desarrollos que escalan en la nube aprovechan los microservicios para optimizar los costos, en todo caso la complejidad del mantenimiento sigue siendo un punto debil al iniciar. Actualmente varios lenguajes se han ajustado para permitir la construcción de microservicios, un curso muy interesante en udemy puede ser seguido para aquellos que gustan de java, particularmente spring boot: https://www.udemy.com/course/microservices-with-spring-boot-and-spring-cloud/

 

Alrededor de los microservicios existe una gran cantidad de tecnologias, patrones y conceptos que ocupan un buen tiempo para ser aprendidos y practicados: contenedores, orquestadores, api gateways, estilos de despliegue, etc. Una base puede ser encontrada en https://microservices.io/ y uno de los libros mejor vendidos es Building Microservices de Sam Newman, 2015.

 

 

Blockchain:

 

Esta práctica de base tecnológica distribuida  favorece la confiabilidad y seguridad en las transacciones y habilita además la capacidad de ser auditadas. Aunque nació originalmente para intercambio de dinero electrónico, la cadena de bloques ha comenzado a ser explotado en una gran variedad de casos de uso. La universidad Nacional de Colombia ha ofrecido cursos prácticos para la construcción de contratos inteligentes aunque se debe estar pendiente de las fechas cada año, para el 2020 se llevó a cabo en abril: https://ingenieria.bogota.unal.edu.co/uec/?p=9749

 

Igualmente, alrededor de blockchain existe una gran cantidad de conceptos y tecnologías, el siguiente es un landscape que representa a cierto nivel esta realidad:

 

https://medium.com/@josh_nussbaum/blockchain-project-ecosystem-8940ababaf27

Image for post

 

 

Inteligencia Artificial.

 

Más allá de una práctica o un estilo de arquitectura, es un campo de la computación. En la búsqueda de lograr la autonomía de las máquinas y facilitar así la vida, la inteligencia artificial tiene como objetivo principal lograr pasar el test de Turing. El avance actual en esta área ha llevado a varios expertos a pronosticar que se podría alcanzar, lo que llaman,  la singularidad tecnológica : momento en el que la inteligencia artificial podría alcanzar la humana a la vez que se pueden diseñar y mejorar a sí mismas, es un punto entre el año 2045 y 2070 para el que no se puede predecir que sucederá después.

 

Todos los gobiernos están incentivando las nuevas generaciones para capacitarse en este tema, así como los negocios están viendo nuevas oportunidades para explotar. La IA está en casi todos lados, televisores, celulares, vehículos, etc, lo que genera una gran oportunidad laboral; solo es de recordar los 20 mil millones de pesos que invirtió el gobierno nacional en hacer análisis de sentimientos de publicaciones en redes sociales. A propósito, la interpretación del lenguaje natural y su análisis para identificar el tono y la intención es uno de los algoritmos más viejos ya expuestos como servicios en distintas plataformas de nube.

 

Al ser un área de la ingeniería es difícil indicar por dónde empezar, sin embargo, Coursera tiene unos cursos muy buenos en relación a este tema, principalmente "IA Paratodos" es una buena base para comenzar.

 

 

Big Data

 

Áreas como Big Data, Inteligencia Artificial, Machine learning, IoT e incluso computación cuántica están convirtiendose en prácticas interrelacionadas. La principal arquitectura de referencia para el procesamiento de datos escalable y tolerante a fallas es la Arquitectura Lambda.

Existe una enorme cantidad de recursos para aprender al igual que una gran cantidad de plataformas y tecnologias, el ecosistema es inmenso y uno de los principales institutos certificadores es Arcitura.

 

Luego de la acogida de Hadoop, las nubes principales decidieron ofrecer servicios PaaS para el procesamiento masivo de datos sobre la base de esta tecnologia de apache. El ecosistema basado en lambda, actualmente incluye distintas capacidades: ingesta, procesamiento, analitica, almacenamiento, indexación, visualización, etc:

 

https://www.oreilly.com/content/whats-next-for-big-data-applications/

ctustrix Pivotal 
Data 
Transformation 
alteryx 
•talend 
Comp uting 
Machine IQ ming NLP 
Ad O pt cation 
Vertical A' 
Real• Time 
Databases Databases 
Management 
/ MM it oring 
Horizontal A ' 
Web Mobile 
surnAJl 
Pub r 
Finance 
Govt Regulation 
*Krata 
@OPENGOV 
App Dev 
Crowd- 
Affirm 
> . , Kreditech 
•SENTRJM 
Indus t' •s 
OPENER e 
Cross-infrastructure/Analytics 
Data Sources & APIs 
FLATIRON 
Open Source 
DL4J 
panyva 
e an. cov 
a XE VER 
Google 
Query / Data F 
.coqp 
JAW BONEGARMIN 
*fitbit I 
Wittings € e 
Last Updated 3/6/2016 
soir' 
*'cubators & 
Data 
O DOW 
LSE CD'"' 
Air / / 
spire 
Location / people / 
O Matt Turck (@mattturck), Jim Hao (@jimrhao), & Firstrvlark Capital (@firstmarkcap) 
FIRSTMARK

 

 

Computación cuántica

 

Esta es un área relativamente nueva que incluye un paradigma de programación totalmente diferente que se basa principalmente en la teoria de la fisica cuantica y el algebra lineal. El procesamiento tradicional no ha tenido un crecimiento drástico en los últimos años por lo que la Ley de Moore, dicen algunos expertos, llegaria a su límite proximante, tal vez en 2023. Es la computación cuántica una oportunidad para continuar con esta tendencia.

 

Vienen 2 workshops interesantes en los próximas días empleando Microsoft e IBM como plataformas para desarrollo facilitados por Globant y EAFIT respectivamente.

 

  1. Globant. https://more.globant.com/webmail/497451/562251750/de1ba7a766cdb8854076cbdb0ed8d6f3f058b8ef6f9f37b6ccdea1d84098a726
  2. EAFIT. Aparte de incluir un posgrado en su oferta académica, va a tener un workshop práctico en un par de semanas. https://www.eafit.edu.co/cec/congresos/Paginas/computacion-cuantica.aspx

 

Hace un par de meses hubo un webinar tambien introductorio en la Escuela Colombiana de Ingenieria Julio Garavito, con un temario interesante:

https://ldbn.is.escuelaing.edu.co/events/q2020/index.html#Agenda


Comentarios

Entradas populares de este blog

Proceso para la creación de la Arquitectura

Hoy quiero contarles acerca de un modelo que he adoptado para la construcción y entrega de la Arquitectura de Software, el cual lo he relacionado con éxito al interior de la compañía para la cual trabajo y que considero, bien puede adaptarse a cualquier tipo de especialidad de la Arquitectura Empresarial. Cuando era desarrollador escuchaba hablar constantemente acerca de varias metodologías de desarrollo. Durante mucho tiempo apliqué RUP, XP y metodologías AGILES, usé PSP y TSP como procesos de desarrollo. Pero durante todo ese tiempo nunca oí hablar de metodologías orientadas a la generación de la Arquitectura de Software, aún luego de comenzar a estudiar y al día de hoy he tenido muy pocas referencias. Quiero aclarar que existen varios modelos y  frameworks bastante conocidos para la Arquitectura Empresarial que son confrontados a profundidad en unas entregas muy completas de Microsoft, estas pueden estudiarse en este link . Pues bien, el método al que me refiero es ACDM, ...

Expandir espacio en disco duro en Virtual Box y con Partition Logic

Cuando nos quedamos sin espacio en nuestra máquina virtual, tenemos problemas para seguir usándola adecuadamente. Los siguientes son  los pasos que seguí para aumentar el espacio en disco duro, para la unidad principal de una máquina virtual de Windows XP instalada en mi Mac Book.  Probé una herramienta llamada Partition Logic   y, debido a que no la conocía, decidí documentarlo. Tenía asignadas 5GB a la unidad donde está instalado el sistema operativo, y se veía así: Mi máquina, con 5GB de tamaño en disco duro. 1. Redimensionar la unidad vdi. el siguiente es el comando que realiza toda la magia en VirtualBox: VBoxManage modifyhd "ruta/unidad.vdi" --resize [tamaño] En mi caso aumenté el tamaño a 20GB. VBoxManage modifyhd "/Users/oscar/VirtualBox VMs/WindowsXP/WindowsXPClone.vdi" --resize 20000 Como anotación,  debí clonar la unidad, pues había creado el disco de tamaño fijo en Virtual Box y no me permitía aumentarlo (generaba error...

Atributos de Calidad

¿Qué son los Atributos de Calidad? Los Arquitectos debemos participar en el entendimiento de las necesidades de los usuarios. Sí, esa es nuestra principal responsabilidad.  En mi experiencia he debido iniciar con leer términos de referencia para aplicar a licitaciones públicas y privadas y luego acompañar al equipo de análisis en el levantamiento de requerimientos. Los usuarios finales, a excepción de algunos muy técnicos, hablarán en el lenguaje del negocio, de otros sistemas que conocen, de lo que hace la competencia, de lo que otro proveedor les contó, de lo que alguno de sus más influyentes operarios conoce o del patrón de trabajo que ejecutan a diario. Muy pocas veces nos dirán exactamente lo que quieren y por eso debemos estar presentes; debemos ayudar a traducir esos relatos prosaicos de necesidades a requerimientos técnicos.  Los requerimientos técnicos se dividen principalmente en 2: los funcionales (functional requirements) y los no funcionales (Non-functi...