Developer Timeline 1996-2016

pope-john-paul-ii-and-fidel-castro-watching-time

Hace unos meses intenté convencer a algunos desarrolladores de que necesitaban aprender Git. Algo que desde mi perspectiva parecía obvio y urgente se tornó, pese a mis esfuerzos por argumentarlo, en imposible. Desde entonces he estado dándole vueltas al tema de la obsolescencia de las herramientas, técnicas y servicios que los desarrolladores usamos a diario y a como alternamos entre lo malo conocido y el hype del momento.

Esto me llevó a pensar en cómo “de-mostrar” a determinados perfiles técnicos de la necesidad de actualizarse, lo cual me condujo a confeccionar una “línea de tiempo” o mapa de tecnologías y herramientas de desarrollo .NET para poder observar el avance en determinados ámbitos como el control de versiones de código.

Gracias al intercambio de ideas de los Meetups en SofwareCraftmanshipCLM y los ánimos que me han dado desde esta comunidad para publicar el “timeline de desarrollo”, he terminado una versión 1.0 que he colgado en Google Sheets para uso y adaptación de otros equipos de desarrollo, incluso de otros stacks tecnológicos. O aprovechando que acabamos el año, para pararse a pensar qué aprender en 2017.

El Excel es el siguiente: Developer Timeline 1996-2016

¿Para qué sirve?

La idea es poder usar la hoja como herramienta de 4 formas diferentes para varios objetivos:

  1. Para poder revisar en qué punto estamos de actualización técnica y ayudarnos a decidir si aprender o no una tecnología en concreto.
  2. En grupos de desarrollo. Para poder argumentar con datos objetivos frente a nuestros compañeros sobre la necesidad, o no, de reciclarnos tecnológicamente. Como mínimo debería facilitar el diálogo sin caer en el flame.
  3. En charlas. Para poder hacer una introducción simpática para todos los públicos sobre determinadas tecnologías como Core o SharePoint Framework añadiendo un contexto tecnológico más amplio que facilite el entendimiento de los problemas que resuelve.
  4. En organizaciones. Para poder establecer el nivel de actualización de una organización (la nuestra u otras) de una forma más o menos objetiva. En última instancia podría ayudarnos a decidir si embarcar en una empresa o desembarcar de la actual.

¿Qué contiene?

La hoja contiene varias categorías (eje vertical) y eventos relevantes para cada una de las categorías, repartidos por año (eje horizontal).

Me pareció adecuado empezar en 1996 por tener un intervalo amplio y “redondo”: 1996-2016. El año 1996 sirve además para poder establecer una línea base de “desarrollo viejuno”.

La información que contiene está orientada por mi experiencia y entornos de trabajo a lo largo de los años por lo que hay bastante de Microsoft, pero he tratado de mantenerlo flexible para poder adaptarlo a otros entornos aglutinando la mayoría de elementos específicos de Microsoft en su propia categoría.

Sobre las categorías, los datos y la selección

Hay muchos elementos que podría haber metido pero que finalmente he eliminado por claridad (versiones, irrelevancia…) y simplicidad.

Muchas fechas son aproximadas y en algunos casos discutibles. En general he tratado de tomar las más importantes como por ejemplo productos release en lugar de beta.

Hay bastante tecnología Microsoft debido a mi propio background y el público al que lo he enfocado, pero he tratado de mantenerlo flexible para otros stacks.

Este documento no pretende ser canónico, sino una herramienta ilustrativa de la evolución y periodos que vivimos los desarrolladores de software. Está pensado para ser modificado de forma sencilla por lo que he desistido (de momento) de hacer un gráfico SVG interactivo con D3 y JSON.

Las categorías en que he agrupado los eventos son las siguientes:

  1. Papas: Los papas de la Iglesia Católica Apostólica y Romana que hemos tenido desde el 96. Me parece interesante mostrar que hasta las organizaciones más antiguas y tradicionales experimentan más cambios que algunas personas o empresas.
  2. Efemérides: Evento de relevancia nacional o mundial. Permite replantearse la cantidad de tiempo que ha pasado entre tecnologías y los grandes cambios que han sucedido en la sociedad.
  3. Películas: Estrenos de cada año. Me parece un detalle simpático para tratar de poner en contexto el tiempo que ha pasado, en particular entre fans de Marvel como yo, y la cantidad de proyectos que pueden llevarse a cabo en 5 o 10 años.
  4. JavaScript: Aun hay gente que no quiere saber nada de JavaScript o quiere quedarse en la versión del ’99. Visibilizar la cantidad de hitos que ha tenido debería facilitar el NO poder ignorarlo.
  5. Autenticación y Autorización: Todavía tengo que explicar las diferencias entre autorizar y autenticar. En el panorama actual y dado que es necesario conocer estos temas para realizar cualquier aplicación moderna, me parece grave y por eso le he dado su propia categoría.
  6. Servicios web: Esta categoría trata de servicios web y trata de poner de manifiesto que la diferencia entre SOAP y REST en realidad son pequeñas y que deberíamos mirar más allá del hype al evaluarlas. También pone en el mapa los webhooks, que parece que son grandes desconocidos a pesar de su utilidad y antigüedad.
  7. Formatos de datos: Me pareció apropiado añadir esta categoría tras la de servicios web para señalar que son dos cosas independientes y que ya va siendo hora de aprender a usar JSON. O usar Markdown en lugar de HTML en según que contextos.
  8. Front End: Esta categoría podría ser una hoja aparte, pero he tratado de incluir estándares de facto y orientarme a desarrolladores back o full stack. He añadido asteriscos a temas de W3C para recordar que… “es complicado” asegurar en qué estado están.
  9. Gestión de código: Esta es la razón por la que comencé a confeccionar el Excel y por eso tiene un componente “fuerte” de productos Microsoft, pero dejando claro que el estándar a día de hoy es Git. De hecho, es importante mencionar que Microsoft lleva años migrado todo su código abierto a Github.
  10. Servicios de terceros: Incluyo una lista de servicios de terceros relevantes para perfiles técnicos. Estos deberían contrastar con la antigüedad de algunas de las herramientas de algunos técnicos. Si, por ejemplo, alguien usa Dropbox (2008) o Google Drive (2012), no podrá argumentar que Git es demasiado moderno (2005).
  11. Microsoft Stack: categoría específica para los que usan el stack de Microsoft, por lo que en adaptaciones a otras empresas debería adaptarse. El “baseline” es Outlook porque me pone nervioso ver que no se sabe usar a nivel básico (carpetas, convocatorias, respuestas automáticas…) y es una herramienta que todos usamos a diario para trabajar en empresas, en particular con el stack Microsoft.
  12. S.O.: Sistemas operativos desde el ’96. Con especial detalle en el ámbito Windows, claro. Porque todavía hay quien quiere volver a W7 por pura resistencia al cambio.
  13. Dispositivos Móviles: He tratado de sintetizar el panorama en dispositivos móviles. Al estar tan unidos hardware y software he mezclado ambos elementos. Evidentemente Windows Phone/Mobile se queda fuera.
  14. Lenguajes: Es interesante ver que los lenguajes de back-end son bastante estables, pero no inmutables.
  15. Entorno de ejecución: Parece que todo es alguna variedad de la máquina virtual de Java o el que tiene que funcionar sobre el CLR de .NET y no solo no es así, sino que el panorama parece que va a cambiar cada vez más. Estuve tentado de introducir Docker también, pero los contenedores son otra historia y aun me parece pronto para añadirlos, quizá el año que viene o quizá en otra categoría de DevOps.

Como nota curiosa no he notado nada interesante en 2003 pero si muchos eventos importantes en 2009: el embrión de Azure y Office 365 (BPOS), Android 2.0 (la primera versión buena), Windows 7 (el más querido), ECMAScript 5 (el JavaScript de la nueva web), Bitcoin (y la explosión del blockchain), GO (del que Javier nos dará una charla pronto) y Node JS (¿el nuevo Java/PHP?) del que vimos como se usaba en producción en las Lambdas del AWS de BrainSINS en el último Meetup.

En resumen

Como decía el personaje de Will McAvoy en The Newsroom: El primer paso para resolver un problema es reconocer que hay uno (minuto 5:00, pero el speech completo es impresionante).

Mi intención inicial era mostrar como Git es una herramienta indispensable para el desarrollador de .NET de hoy, comparándola con eventos relevantes del pasado reciente de forma objetiva y amigable.

Aunque parece que he conseguido construir esa herramienta, creo que he generado algo más potente, una especie de minicuadrante de Gartner del desarrollador .NET (y en general) que podría servir para animar a algunos técnicos a reciclarse, y que me ha ayudado a ampliar mi visión estratégica para 2017 así como a mejorar mi planteamiento como arquitecto de soluciones y líder técnico. O como mínimo me ha aclarado panorama bastante ahora que parece que todos andamos perdidos de stack en stack y de framework en framework especialmente en el mundo Microsoft.

Para terminar

Al revisar mis propios artículos me parece reconocer que en el universo Microsoft, 2016 es una repetición de 2012. Da para otro artículo, pero si estás más o menos al día creo que podrás ver las semejanzas entre el panorama actual (Azure, Office 365, Hololens, ARM, Open Source…) y el que describí en 2012 en: El desembarco de Normandía.

Y si te ha interesado este artículo, es muy probable que te interesen mis artículos: Breve historia del desarrollo de software de 2012 y mi predicción sobre el futuro de Blackberry, iPhone y Palm en 2007: La muerte de Blackberry.

Android 6.0: Impresiones tras 6 años de Android. 2010 – 2016

motoxplay

Hace casi 6 años compré mi primer Android. Hasta entonces había empleado el tándem Sony Ericsson + Palm TX con mucha efectividad, pero el probar el HTC Magic de un colega me animó a pasarme a Android. Renovarse o morir que dicen.

Creo recordar que alrededor de un 2 años después volví al tandem Sony + Palm debido a los problemas de autonomía, rendimiento y limitaciones del software en cuanto usabilidad y capacidades del Samsung Galaxy que había adquirido. Había intentado usarlo pero había acabado siendo un lastre insoportable.

Durante los últimos 3 años he vivido felizmente en el ecosistema Microsoft, primero con un Nokia 520 y después con un 630 que duró hasta que, por razones en parte comentadas en otro post, decidí volver a Android.

Una vez descrito mi periplo pensaba comentar mis impresiones sobre la plataforma de Google, pero releyendo lo que escribí entonces me he dado cuenta de que hay poco que añadir sobre Android.

Entre las versiones 1.5 y 2.1 que probé con Samsung y la 6.0 con Motorola, han pasado unos cuantos años, pero aparte de una muy necesaria mejora visual y un upgrade brutal de hardware, el sistema sigue siendo el mismo: complejo de usar, orientado totalmente a las apps (no a los usuarios) y con un desprecio total por la privacidad. Supongo que los incentivos hacen al producto, y en el caso de Google el vender publicidad lleva a esto.

Lo que sí puedo confirmar es que el objetivo de Google de ser el Windows para móviles puede darse por completado. Tan es así que Microsoft sigue la senda que tomaron Palm y Blackberry con desigual resultado: orientarse a los usuarios profesionales. Y no es extraño porque lo que más noto al volver a Android es que el sistema en sí, y el ecosistema que hay alrededor, están constantemente compitiendo por atraer mi atención. Es algo que hace tan bien que apenas se nota y el “golpe” se olvida en unos días, pero habiendo visto el efecto, veo claro que tengo que usarlo lo menos posible si quiero hacer algo que no sea perder el tiempo en un bucle de entretenimiento y ocio sin fin.

Quizá ese sea el secreto del éxito de Android. Que el ocio vende más que la productividad personal. Solo espero que Microsoft no abandone y sigamos manteniendo una tercera vía al ocio de Android y el postureo de Apple: un verdadero dispositivo con vocación de asistir a la persona. O al menos que este Android me dure más que el anterior, que no sería poco.

Para no cerrar el artículo de forma negativa diré que el reconocimiento de audio funciona fantásticamente bien (como entrada de texto o como asistente) y que tener todas las aplicaciones de Microsoft ayuda en cierta forma a minimizar el enfoque lúdico del sistema. Además la existencia de un monopolio “gratuito” y duradero como el que ha conseguido Google se traduce en una relación precio que parece excelente a día de hoy.

 

Windows Phone ha muerto

IMG_20160428_063036267

En 2007 escribí sobre la muerte de Blackberry y su relación con la explosión que iba a producir la inminente salida del iPhone 1 y los movimientos de Google en móvil. Sin duda un ejercicio de futurología bastante acertado desde la perspectiva que da leerlo tras 9 años.

Hoy voy a hablar de la muerte de Windows Phone que lleva sucediendo desde hace meses de forma cada vez más acelerada.

No soy el primero ni el único en dejar constancia de mi disgusto con Windows 10 Mobile o en dar el paso de abandonar (a Android). Profesionales pro Microsoft como Wictor Wilen o Luis Ruiz Pavón estamos abandonando de forma pública y sonora. No hay más que pasarse por Twitter, donde pueden leerse comentarios como los siguientes desde hace meses:

El caso es que llevo unos días con mi nuevo Moto X Play, el terminal más decente y barato que he podido encontrar, para quitarme el lastre en que se había convertido mi Lumia 630 con Windows 10 (beta). Y aunque todo tiene sus pros y contras el hecho es que no tengo intención de volver a comprar un terminal con Windows. Hay muchas razones por las que se ha llegado a esta situación y diría que se trata de un tema extraordinariamente complejo que no voy a tratar de analizar aquí, pero sospecho que Microsoft conoce perfectamente el panorama y ha estado realizando una retirada ordenada en los últimos meses, evitando sacar nuevos terminales y virando hacia un nuevo frente con menos resistencia. En parte, por esa sensación he estado aguantando mi Lumia hasta hace unas semanas cuando empecé a buscar una alternativa adecuada.

En mi opinión, y sin disponer de ninguna información privilegiada (tipo MVP), está bastante claro a estas alturas que Microsoft no va a sacar más terminales Lumia de gama “baja”. Ni nada que esté orientados a ser simplemente un móvil. Microsoft va a saltarse ese paso fallido, pero va a continuar sacando terminales orientados al mundo post-móvil. Ahí entran tanto las tecnologías de Continuum como las Hololens entre otras, que parece que van a convergir en algo más allá del teléfono móvil. Pero eso solo puede funcionar si sacan “buques insignias”, terminales caros que tengan potencia y características suficientes para mover todo lo necesario (escritorios, 3D…). Usarán estos terminales para probar ideas nueva, establecer unos estándares y animar el tema, algo parecido a la estrategia que siguieron con los convertibles Surface que parecen haber salido muy bien parados, incluso frente al iPad Pro.

Sea como fuere Microsoft ha sido bastante claro en sus últimas declaraciones: se va a orientar al mercado profesional. Esto significa que el dispositivo móvil Microsoft tiene que ser un dispositivo de productividad personal no una plataforma para adolescentes o para probar las últimas aplicaciones de moda. Entiendo que eso implica que tiene que poder operar como móvil, tablet y sobremesa y eso requiere potencia, que no es barata.

Y con todo esto, pienso que se van a meter una hostia.

Disponer de un Sistema Operativo único para todos los dispositivos es el write once, run anywhere de Java que nunca fue. Es el anillo único para dominarlos a todos de una novela fantástica. El sueño de toda empresa de producto. Pero la “talla única para todos” es una estrategia arriesgada, una que durante un tiempo le ha funcionado muy bien a Apple con sus productos perfectamente segmentados, pero que empieza a mostrar agotamiento en sus cifras de ventas. Y eso que controlan la cadena completa de producción y distribución.

Sospecho que Windows 10 Mobile y sus sucesores van a intentar serlo todo para todos. Y aunque en tablet y escritorio puede funcionar (y muy bien) dudo mucho que lo haga bien en la escala móvil. Y solo dios sabe si lo hará en otros formatos y escalas.

Así que ya veremos que tal evoluciona Windows en el dispositivo móvil, los wearables y demás, pero hoy Windows 10 Mobile está completamente muerto. D.E.P.

Post data: quiero mandar un fuerte abrazo a todos los que invirtieron en desarrollar con Silverlight para Windows Phone. Si aún queda alguno por ahí debe estar sufriendo mucho.

Android: 2.1 Ecclair. Impresiones

Hace unos días  meses escribí la review de mi nuevo terminal Samsung Galaxy Spica (I5700 para los amigos), pero quería tomarme algo de tiempo para terminar de probar algo más el sistema operativo que lo gobierna, Android en su versión 2.1 codename Ecclair. Creo que ya es hora de comentar mis impresiones.

Debo reconocer que el Android de Google me ha sorprendido para bien (mucho) y para mal (está muy lejos de ser perfecto).
A mi, que me considero un usuario avanzado de tecnología y que he usado a lo largo de los años unos cuantos teléfonos, PDAs y algunas otras cosas bastante extrañas (Atari Portfolio, tablets pre-iPad, sistemas operativos de todos los colores y sabores), me ha costado más de lo que esperaba hacerme completamente con el terminal. Evidentemente las funciones “básicas” como llamar, poner música, fotos… son relativamente simples y vienen integradas, pero cuando quieres ir un poco más allá, empiezas a recorrer un camino más largo de lo deseable. Posiblemente el mayor problema viene de que el interfaz es muy flexible, y para saber qué puedes y qué no puedes hacer, tienes que probar todas las opciones: botones físicos, pulsación, doble pulsación, pulsación mantenida, arrastre… en resumen, demasiado trabajo solo para aprender cómo funciona lo que trae o cada aplicación adicional que instales.

Evidentemente, al ser un terminal de Google, la integración del teminal con los servicios de Google, va muy fina, principalmente el correo y los mapas, pero curiosamente no todo se integra integraba hasta hace poco de manera oficial. Por ejemplo, el lector de RSS más decente era una aplicación de terceros y la integración de Tareas que uso es una aplicación de terceros. Otra cosa llamativa, sobretodo viniendo yo de Palm, es el Calendario. El calendario de Android es simplemente inusable, y aun no he dado con una aplicación que permita usarlo decentemente, así que solo lo tengo para algunos recordatorios.
Por otro lado, las aplicaciones de terceros son variadas, muy variadas. Tanto como que algunas funcionan y otras no (a veces por bugs, otras por versión), pero no lo sabes hasta que las instalas (ligeramente molesto, pero indoloro). Facebook por ejemplo está muy logrado, pero los reproductores de video no se acercan ni en broma al TCPMP que reproducía prácticamente de todo y bastante bien en dispositivos en los que en principio nadie lo esperaría, y la aplicación para gestionar la conexión 3G, me obliga a reiniciar el terminal para recuperarlo. Afortunadamente parece que todo es muy robusto y el instalar y desinstalar cualquier cosa no provoca problemas de ningún tipo, quizá unos restos de carpetas en la tarjeta de memoria a lo sumo.

En cuanto a la gestión del sistema, llama mucho la atención que esté tan dispersa (ajustes, widgets, botones físicos…). Cosas como cambiar a modo de vuelo, ajustar el brillo o conectar a una red Wifi, se realizan desde lugares muy diferentes, sin una lógica clara que permita intuir donde encontrar la función deseada. Y de momento no he encontrado una manera de establecer y usar perfiles de sonido (reunión para silencio, volumen bajo para oficina, volumen alto para el coche…). Esto con Palm o Sony no pasaba, todo era fácil de encontrar y tenía sentido.

En general yo diría que se trata de un buen sistema, y desde luego está a la misma altura que el de Apple o muy, muy cerca (por delante o detrás según en que nos basemos). Sin embargo, aunque he ganado bastante funcionalidad y conectividad a multitud de servicios, queda claro que el sistema no está tan bien pensado como los de Palm. No parece que Android aspire a ser el mejor sistema operativo para dispositivos móviles, sino que su meta parece ser el convertirse en el nuevo Windows: poder hacer un poco de todo, pero nada bien, ser muy flexible y abierto hasta donde se desee.

Por último para aquellos recién desembarcados en este sistema operativo, recomendaré una página: El Androide Libre. Multitud de aplicaciones y buenos consejos, aunque en ocasiones tiende al fanátismo tipo fanboys de Apple.

NOTA: Este artículo estaba casi terminado en Agosto de 2010, pero las circunstancias me han impedido publicarlo hasta ahora.