Semana de NetConfUY y otros en Uruguay

Esta semana estaré en Uruguay con motivo de la NetConfUY, el evento de tecnología .Net más importante de la región. La agenda pinta muy interesante, va desde: .Net Core, a IoT pasando por contenedores, la nube, big data y Xamarin. Me llevé una agradable sorpresa al ver entre los oradores a varios ex-compañeros de trabajo como Nico Bello, Mariano Vazquez y Edu Mangnarelli y algunos otros viejos conocidos del medio local como Leo Micheloni y Diego Gonzalez.

Aprovechando el viaje voy a realizar algunas otras actividades: por un lado voy a dictar mi Taller de Prácticas DevOps junto con mi amigo @PabloLis y voy estar hablando sobre Continuous Delivery a gran escala en el Meet up de AgilesUY.

meetup_uy

Oportunidad laboral para programadores .Net

El proyecto en el que estoy trabajando viene bien. Nuestro cliente está contento y tiene una gran proyección de negocio, por ello ha decido expandir el equipo. Es por ello que estamos buscando Desarrolladores con experiencia en .NET.

El contexto del proyecto es:

  • Dinámica de trabajo XP-like
    • iteraciones cortas
    • tdd
    • integración continua
    • deploy frecuente y automatizado
    • alto involucramiento del cliente
    • test automatizados
  • Stack .Net 4.5
    • WebApi
    • NHibernate
    • Fluent Migrator
    • Log4Net
    • Swagger
  • Herramientas de soporte
    • Git
    • Jenkins
    • NuGet
    • Nexus
    • MSBuild
    • Jira

Más detalles en privado. Interesados contactarme.

Aplicaciones legacy, monolitos y micro-servicios

Una plataforma desarrollada durante varios años sin prestar mayor atención a a algunas buenas prácticas de desarrollo (integración continua, test-automatizados, trazabilidad de artefactos, control de la configuración, separación de ambientes, etc). Desarrollada por una software factory externa a la organización.

En un momento la organización decide cambiar de software factory y es ahí donde entramos somos.

Nos encontramos con una plataforma legacy, con arquitectura monolítica, issues de performance, corriendo sobre máquinas físicas (nada de cloud, ni virtualización), sobre la que el cliente espera que agreguemos nuevas funcionalidades. La visión es ir hacia una arquitectura de micro-servicios corriendo en la nube. Este desafío nos plantea una seria de interrogantes:

  • Cómo organizar el equipo para poder dar soporte a la plataforma actual y al mismo tiempo desarrollar nuevas funcionalidades
  • Cómo mitigar los riesgos de introducir modificaciones sobre una plataforma legacy
  • Cómo vivir en una infraestructura mixta cloud  y on-premise
  • Cómo mantener la motivación al trabajar sobre código legacy/frágil escrito por terceros
  • Cómo introducir la nueva arquitectura basada en nuevas tecnologías de una forma no disruptiva para el negocio y los usuarios

Esta es la situación que estoy afrontando en mi proyecto actual y es también la temática de una charla/presentación que en la que empecé a trabajar esta mañana.

 

.Net Core: un primer vistazo

El último fin de semana estuve haciendo un par de Katas para familiarizarme con el nuevo stack de herramienta de .Net Core. Lo que aprendí me gustó mucho y para compartirlo hice este breve video introductorio. Espero resulte de utilidad.

Nota: en el video también hice uso de algunas herramientas “extra .net”, más concretamente utilicé un generador de código, un Yeoman.

.Net Core: el renacimiento

Hace un par de semanas decidí instalar .Net Core, la más reciente versión de .Net publicada por Microsoft. Me sorprendí muy positivamente. Si bien había leído algunos artículos sobre la idea de este .Net Core, muchas veces la idea y la implementación tienen un delta enorme.

En primer lugar hay que aclarar que .Net Core marca un hito en la evolución de la plataforma .Net por una serie de cuestiones:

  • Es de código abierto (licencia MIT)
  • Es multiplataforma por iniciativa propia de Microsoft en Windows, Linux y MacOS (otras versiones de .Net también corrían en Linux, pero era por el trabajo realizado por la gente de Mono)
  • .Net Core no es el sucesor de .Net 4.5, sino que es una redefinición de la plataforma .Net y por ello su número versión se ha reseteado: .Net Core 1.0

Uno de los cambios que trae .Net Core es una experiencia de usuario totalmente distinta para el programador. Tradicionalmente el programador .Net ha estado “esclavizado” al Visual Studio, un entorno de desarrollo extremadamente pesado y en mi opinión no tan potente (al menos que uno le instale la extensión ReSharper) .Net Core brinda una experiencia de usuario muy parecida a la que típicamente se tiene trabajando con lenguajes de tipado dinámico del tipo Ruby, Python. Esto es: trabajo desde una terminal y codificación con un IDE liviano tipo Sublime, Atom, etc. Sin embargo aquellos que prefieran seguir trabajando con el pesado Visual Studio, también puedo hacerlo.

Al mismo tiempo Microsoft también ha generado un nuevo IDE (muy parecido funcionalmente a Atom y Sublime) que se llama Visual Studio Code. Personalmente la elección del nombre me parece desafortunada pues genera confusión ya que esta herramienta no tiene nada que ver con el famoso Visual Studio. Por ello yo habría optado por un nombre nuevo totalmente desligado de Visual Studio.

Para aquellos que quieran una explicación bastante completa de cómo calza .Net Core en el mundo .Net existente y de la visión de Microsoft a futuro para .Net, les recomiendo leer este excelente artículo de Rick Strahl.

En las próximas semanas iré compartiendo mis experiencias con estas nuevas herramientas.

Despedida de UNQ

El mes pasado cerré una etapa en mi carrera docente, presente mi renuncia en UNQ. No fue una decisión fácil, en UNQ estuve por primera vez a cargo de una materia lo cual fue un gran paso en mi carrera. Por otro lado tuve la oportunidad de aprender y compartir muchas experiencias tanto con colegas docentes como con alumnos. También tuve la oportunidad de participar de algunos de los debates de armado de la Licenciatura en Desarrollo de Software (que luego debió renombrarse por cuestiones administrativas). Por cinco años forme parte de un equipo docente de excelencia.

En estos cinco años, participé inicialmente del dictado de Objetos 1 y luego estuve a cargo de Ingeniería de Software. En los 9 cuatrimestres que dicté esta última materia tuve un total de 105 alumnos con un porcentaje de aprobación del 89%.

Pero como mencioné tiempo atrás, este año decidí dar un nuevo paso en mi carrera y tomé un cargo de mayor dedicación en UNTREF con el objetivo de trabajar en un proyecto de investigación.

A pesar de dejar mi cargo espero poder seguir en contacto con la comunidad UNQ y poder participar de futuras actividades.

Agradezco a toda la comunidad de UNQ  por las experiencias compartidas y muy especialmente a Fidel, quien me abrió las puertas de TPI y confió en mi para el dictado de Ingeniería de Software.

¡Gracias totales!

Nuevo libro: Herramientas Ágiles

Durante el AOC 2016 repetimos la experiencia del AOC 2015 y escribimos un libro y es justamente ese segundo libro el que ahora está disponible.

El primer libro trató sobre relatos de experiencias del uso del métodos ágiles. Este segundo libro trata sobre técnicas, lo cual me parece en cierto modo una camino natural: primero uno hace, experimenta, luego a partir de la experiencia repetida, generaliza dando origen a técnicas aplicables distintos contextos.

El libro está disponible en forma totalmente gratuita en diversos formatos digitales en la plataforma GitBook y también está disponible en forma físico en la plataforma Hesiodo (el formato físico no es gratuito).

¡Mis felicitaciones y agradecimientos a todos los autores por sumarse a esta iniciativa y lograr este nuevo entregable!

herramientas_agiles