6 jun. 2018

Retomar la divulgación

Hay veces que parece que se alinean los astros, por ejemplo, la semana pasada a petición de varias personas creé una plantilla que nos permite crear muy fácilmente una aplicación ASP .NET Core 2 con Angular 6, algo de lo más novedoso que se podía hacer ese día. Como quedó bastante fácil decidí crear un repositorio público en GitHub y subirlo ahí. 

Al día siguiente por la mañana me llegó la noticia de que la tan esperada versión 2.1 de .Net Core ya había salido así que como tenía el proyecto muy reciente, creo que ni había cerrado Visual Studio, hice la actualización a 2.1 sin ningún problema y lo subí a GitHub, momento en el cuál decidí que podía escribir un breve artículo en Code Project para darlo a conocer.

Tengo que decir que no estoy contento con el resultado, he seguido trabajando sobre esa plantilla en un proyecto personal, la utilicé como punto de partida, y tiene algunos aspectos que dan más problemas que soluciones, es un buen punto de partida, es indudable, pero necesita mejorar, y a eso le dedicaré la siguiente entrada de éste Blog.

Otro momento de alineación astronómica ha llegado esta semana cuando tras llevar años sin usar GitHub para nada, varios días después de hacer público mi primer repositorio de código abierto, resulta que Microsoft compra GitHub (la noticia en el blog oficial de Microsoft: https://blogs.microsoft.com/blog/2018/06/04/microsoft-github-empowering-developers/ ). 

Guau!, no puedo estar más de acuerdo con el título de ese post: "Microsoft + GitHub = Empowering Developers", Y lo digo porque elegí GitHub como el medio ideal para compartir con el mundo mis experimentos y pequeños logros pues le debo mucho a la comunidad OpenSource y actualmente estamos viviendo el renacimiento de .NET gracias a sus políticas aperturistas.

Durante los últimos años, desde mi última etapa en Alstom, he tenido plena libertad en la selección de tecnologías y entornos. Al comenzar aquel proyecto greenfield de I+D+i, un proyecto sin requisitos iniciales pero enfocado en buscar y desarrollar soluciones para Smart Cities, en concreto en transporte inteligente, lo aposté todo a .NET Core. Con .NET Core pudimos crear una arquitectura basada en micro servicios y aplicar una filosofía DevOps de verdad, con todo lo que eso conlleva, y eso que empezamos con la primera versión de .NET Core. 

El equipo pasó de ser sólo yo, desarrollando pruebas de concepto, experimentos, librerías de utilidades e infrastructura, a ser un equipo multidisciplinar con cuatro desarrolladores .NET, los cuatro full stack pero cada uno de nosotros destacando en otros ámbitos, un arqutiecto Big Data, un científico de datos, dos testers y un Project Manager... Y en pocos meses pudimos poner en producción un producto que sé que tras mi marcha de aquel proyecto sigue creciendo y cada vez atrayendo más y más miradas. Si estás leyendo esto comprenderás que no puedo dar detalles de ese proyecto, no más detalles que los que la propia empresa ha hecho públicos, así que te invito a echarle a leer y ver lo que Alstom ha publicado sobre Mastria, el proyecto del que más orgulloso me siento hasta la fecha.

Y voy a volver a los astros, a las casualidades. Como decía, durante estos tres últimos años no he podido publicar nada de lo que estaba haciendo en mi trabajo pero si he tenido tiempo para investigar y hacer experimentos n mis ratos libres. Estoy mirando la fecha de mi última publicación aquí y fué en Septiembre de 2015, y ha llovido muchísimo desde entonces. ¿Qué se puede destacar de todo este tiempo en lo profesional?
  • Obtuve la certificación  de Xamarin Developer
  • He conseguido muchísima experiencia con .NET Core, desde sus comienzos, y me he convertido en un entusiasta del mismo (me gusta pensar que evangelista).
  • He aprendido sobre arquitecturas Big Data (pero no soy ni seré arquitecto Big Data, ese no es mi mundo)
  • He aprendido programación funcional con Scala (gracias a Martin Odersky)
  • He adquirido muchísima experiencia con Docker
  • He aprendido y usado mucho de NodeJS y npm
  • He aprendido mucho sobre Angular, Angular 2, 4, 5 y actualemtne estoy usando Angular 6
  • He montado y dirigido dos equipos de desarrollo incluyendo formación sobre Angular, .Net Core, DDD, SLID, GRASP, PAtrones de diseño y TDD
  • He adquirido e implementado arquitecturas basadas en micro-servicios, mejoradno mis conocimientos en patrones como CQRS, uso de colas de mensajería tipo Kafka o RabbitMQ, la implementación de APIs REST con ASP NET Core y la aplicación de DDD desde el análisis funcional hasta los mas puros detalles de implementación.
  • Además en los últimos meses he salido de mi zona de confort y he usado otros entornos, herramientas y plataformas que desconocía (Jira, Jenkins, Bitbucket, Pivotal CloudFoundry, Concourse, Confluence...) mientras para proyectos personales seguía haciendo uso de mi tan querido, útil y versátil combinación de VS + VSTS + Azure. (Y si me leen mis actuales compañeros insistiré en que "lo barato sale caro")
El caso es que de todo esto que ahora forma parte de mis conocimientos poco he podido compartir con el mundo.Si, he escrito algunos artículos en Code Project y en Medium y he contestado muchas preguntas en Stack Overflow pero saben a poco en comparación con lo que yo creo que podría haber aportado durante todo este tiempo.

Además me he dado cuenta de que todos escribimos en inglés y que la lucha por ser el primero en escribir o demostrar como se usa tal o cuál tecnología es feroz. Como quería retomar la divulgación tecnológica, enfocada principalmente al desarrollo de software, ayer estuve intentando decidirme por qué plataforma usar. Pensé en crearme un blog desde cero, desarrollando web, backend y modelo de datos, pero tengo varios desarrollos a medias, quizá utilice esta idea para crear artículos. Luego pensé en seguir tirando de Code Project porque Medium no me gusta, es demasiado soso, pero luego pensé que ya tenía un blog que empecé en Agosto de 2012 y que éste era el mejor sitio para continuar.

Una vez tomada la decisión ha sido sencillo retomarlo, le he hecho un lavado de cara al blog y aqui estoy, terminado de escribir éste primer artículo de esta nueva etapa. ¿Qué será lo siguiente?

Bueno, en el siguiente artículo voy a explicar como se crea una plantilla de proyecto de dotnet y quiero entrar al máximo detalle con ASP NET Core 2.1 y Angular 6, pero esa será otra historia.