Adiós 2016

Resumen del 2016

Este año 2016 ha estado bastante bien.

Por la parte personal en este 2016 me he centrado en el Get the Thing Done GTD, pero no de llevarlo a rajatabla, más bien me focalizo en obtener resultados pronto y de la forma más rápida posible, me cansa mucho el boilerplate, el siempre lo mismo y me he centrado en buscar formas de obtener resultados rápidos. Lo mejor de todo ha sido aceptar totalmente que da igual la plataforma o el lenguaje de desarrollo que se use, lo importante son los resultados. Esto es algo que siempre he sabido, pero últimamente lo he aceptado, lo he interiorizado, y ya no soy reacio a ninguna plataforma ni lenguaje, uso los que uso por que me gustan y son los elementos donde más a gusto me siento, pero me da igual si me los cambian o si tengo que cambiarlos.

En cuanto al desarrollo en backend no han habido muchos cambios, lo más determinante es que me he cansado mucho de tener que usar cosas como WebApi, MVC, … pienso que este tipo de cosas me han hecho perder mucho tiempo en el pasado y he decidido remar en la dirección en la cual puedo evitarlos. Las aplicaciones que hago son SPA y uso Ajax para comunicarme con el servidor, me sobran los controladores web, me sobran los ViewModels y una vez que en el cliente uso frameworks potentes para hacer binding y demás cosas me sobra Razor en las vistas.

En cuanto al fronted Este año he aprendido Angular 2, he aprendido React+Redux y Aurelia, he estado también haciendo pruebas con Web Components a pelo y por último he probado Polymer. Aunque el cambio más significativo ha sido el uso de módulos en el cliente, AMD, UMD y Commonjs, así como el tooling de cliente con Gulp y el uso de WebPack, Rollup y Browserify para hacer el deploy. Al final lo que más me ha convencido es usar SystemJS + SystemJS/Builder puesto que los otros los he visto muy invasivos. Todos me han gustado pero al final me he decidido por ese.

En el frontend es donde más cosas nuevas he visto…

Luego está el tema de Angular, React y Aurelia. Aurelia sin lugar a dudas es el que más me ha gustado personalmente, pero no lo he usado más por su reducida comunidad. React como motor de vistas me ha encantado, creo que sería el que elegiría si no fuera por la parte mala; no me gusta Redux, el tema de la inmutabilidad y del estado y tal está de puta madre, pero no me hacer ser productivos de momento. Estoy seguro de que si profundizara más me lo quedaba, pero no tengo tiempo para tanto. Y al final está Angular 2, que es el que he adoptado, más que nada por el trabajo, porque ha sido el que he visto que sería más fácil para meter al resto del equipo. Así pues le he dedicado muchas horas a Angular y bueno… al final no me desagrada. No me gusta de principio, no me gusta por diseño, ya hablé de ello en otro post, pero he pensado que es mejor no quejarse tanto y centrarse en crear resultados. Al final que más da lo que uses, lo importante es intentar usarlo de la mejor forma posible y no cerrarse demasiado a algo no vaya a ser que en un futuro te de por cambiarlo.

Por otra parte he consolidado una aplicación extra laboral que se usa en producción a diario, una gestión de almacén con recepción de albaranes y terminal de venta, con sus tickets y cierres de caja. Se está usando diariamente y parece que aguanta. El backend usa .Net y el frontend en Angular 1.x. Me esforcé al principio en que al ser un trabajo fuera de mi trabajo principal debería ser fácil hacer cambios, crear nuevas pantallas y así ha sido, aunque esté tiempo sin tocarla cuando tengo que hacer cambios me resulta fácil e intuitivo.

Por la parte laboral este año me he metido de lleno en un proyecto para renovar la interface de usuario de nuestro ERP. El susodicho monstruo está desarrollado en ASP.NET y la UI está desarrollada en WebForms. Mi proyecto en realidad trata de crear una infraestructura de código para que sea fácil, rápido y solido el desarrollo de nuevas pantallas así como la migración de las mismas. Las nuevas pantallas deben correr en el navegador en JavaScript usando Ajax para comunicar con el servidor y evitar recargas de página, no será SPA total, pero si son varias SPAs que trabajan juntas. Lo más difícil de este proyecto es primero desmembrar los WebForms (.aspx) para separar la lógica de pantalla del enlace con el negocio. Lo que he hecho es crear una capa de aplicación la cual es llamada con Ajax desde el cliente. La lógica de la interfaz hay que pasarla a TypeScript y el enlace con el negocio se programa en los servicios de aplicación en C#. Y segundo es formar a todo el equipo de desarrollo para que aprenda a distinguir entre lo que se hace en el cliente y lo que se hace en el servidor. Además, por supuesto, de formarlos en la programación frontend con HTML, JavaScript y CSS.

Y digo que mi proyecto en realidad trata de eso porque luego se ha vendido como otra cosa, se vende como la renovación del aspecto visual del ERP,… en fin, una cosa lleva a lo otro, mi objetivo no es cambiar el aspecto visual que por supuesto está cambiando, si no crear la infraestructura para que cambiar el aspecto visual sea fácil y factible, porque con WebForms no lo es.

La decisión más importante fue si reaccionar o no a la vorágine de frameworks de JavaScript, lo que más maduro tenía era el uso de Angular 1.x y TypeScript, así que ¿qué hago? ¿Me mantengo en la tecnología que conozco bien o doy el paso a usar herramientas en beta para situarnos en la cresta de la ola?

En un principio tomé la decisión de quedarnos en Angular 1.x, pero sin ceñirnos a él, evitar crear Factories, Services y abusar de la DI de Angular para que fuera fácil dar el salto a Angular 2, para ello usé una pequeña librería que te permitía usar Angular 1 con decorators (NgTs) con el fin de ir acostumbrando a la gente a la forma de trabajar con Angular 2. Incluso en un momento cree un emulador de Angular 2 en Angular 1, donde se podía trabajar como si fuera Angular 2 pero usando Angular 1. Se me fue mucho la olla y no llegué a integrarlo, pero me divertí creándolo.

En un momento dado del proyecto decidí meter Angular 2, esto retrasó el proyecto casi 2 meses, pero llegué a la conclusión de que Angular 2 iba a correr mucho y que mejor cambiar la infraestructura ahora que cambiar la infraestructura y los desarrollos en el futuro, dado que tenía que formar al equipo de desarrollo en TypeScript + Angular + Bootstrap pues me tiraba de cabeza y los formaba en Angular 2. Hoy en día me alegro de esa decisión, Angular 2 está progresando rápido y esforzándome un poco he podido resolver la casuística que me impedía trabajar en Angular 2 en un primer momento. También tuve que hacer un pull request al framework en github, mereció la pena cuando lo aceptaron.

Al final he usado Angular 2 y Bootstrap, pensando en que son dos frameworks que siempre serán de los más conocidos, de este modo facilito la incorporación de nueva gente al equipo y también la búsqueda de info y recursos en la www. Y por supuesto programamos en TypeScript, por que TypeScript mola!

Actualmente el proyecto está en su fase final, estoy formando al equipo en JavaScript moderno y en cuanto termine los meto en Angular, espero empezar a trabajar todos juntos a principios de febrero.

Propósitos para 2017

Bueno el 2017 se presenta entretenido.

Mi propósito principal es centrarme. Si centrarme, este 2016 ha sido de infarto en cuanto a tecnologías, leguajes y frameworks, así que me gustaría centrarme en mi stack solo añadiendo .NET Core. Este año me gustaría no despistarme y seguir trabajando con .NET, TypeScript y Angular.

Mi propósito principal es centrarme en .NET, TypeScript y Angular. Y no despistarme con cosas nuevas.

Personalmente me gustaría llevar a cabo un conjunto de aplicaciones pequeñas que corran en un VPS Linux que me he pillado. Son pequeñas aplicaciones hechas para mi, que me ayuden con cosas que echo de menos en mi día a día, la idea es crear un backend en ASP.NET Core donde sea fácil crear nuevas cosas. Para ello estoy usando un proyecto que llevo en danza QuickApp, se trata de un conjunto de utilidades que te permiten publicar servicios a través de un midleware propio, de modo que nos baste con crear nuestra capa de aplicación y que no tengamos que andar creando controladores para MVC o WebApi.

Laboralmente tengo que hacer funcionar lo que he creado en 2016 en el ERP de mi empresa, es algo que me pone nervioso puesto que tengo miedo al fracaso, quien no siente miedo no es humano.

También tengo que esforzarme en transmitir mis conocimientos al resto del equipo y llevarme bien con la gente, es algo en lo que fallo pero estoy intentando mejorar. Resulta que a veces soy bastante capullo y me parezco a Tom Smith de la charla Nadie quiere trabajar contigo, por Luis Gonzalez, no en todo, ni mucho menos, pero si en algunas cosas. Me he dado cuenta que genero miedo en algunas personas y es algo en lo que tengo que esforzarme puesto que mi intención es todo lo contrario.

Y bueno, centrarme en no querer abarcar mucho, me conformo con lo que tengo y quiero coger rodaje con ello.

Este nuevo año quiero crear más que aprender.

Si se me olvida algo lo añado, pero creo que esto es todo. Feliz nuevo año 2017.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

Demuestra que no eres un bot *