¿Developers, developers, developers, developers? Cómo Microsoft alienó a los desarrolladores durante una década

“Microsoft loves Linux”, “Microsoft compra Github”. Este año Microsoft está haciendo una campaña bastante fuerte para atraer desarrolladores. Hablamos de una compañía que, en el año 2000 era de facto la empresa que dictaba las normas del desarrollo, ¿qué pasó?

El célrebre momento de Balmer gritando "Developers, developers!"
A principios de los 90 Microsoft se convirtió en el estándar del usuario medio: los críos de aquella época sabíamos que Apple existía y fabricaba unos equipos estupendos, pero eran caros y elitistas, algo que sólo los veíamos en las redacciones de los periódicos y en algunos laboratorios de universidades: el resto de los mortales usábamos MS-DOS y un tiempo después Windows. Todos los equipos, salvo algunas rarezas que empleaban Solaris, se programaban según dictase la compañía de Redmond, con Visual Basic sustituyendo a Basic en las aulas, si es que se podía acceder a la asignatura de informática en el colegio y se tenía la fortuna de tener un profesor competente, no alguien empeñado en que un ordenador era la nueva versión de la máquina de escribir y únicamente sometía a los alumnos a insufribles cursos de mecanografía y uso de procesador de texto. Si la cosa se ponía interesante se tocaba incluso algo de C.

Al llegar a la universidad y empezar a programar, los alumnos se dividían entre los que usaban Visual Studio 6.0 o los que usaban Turbo C y Borland, pero el principal era el primero por el soporte, una vez más, a Visual Basic… y entonces pasaron 2 cosas:

  • Microsoft decidió apostar por .NET en lugar de Visual Basic.
  • Microsoft empezó a cobrar un precio por las licencias de Visual Studio bastante draconiano, además de licencias por su .NET privativo.

Tengamos en cuenta que aquella época era un tanto diferente a la actual: no todo el mundo tenía acceso a Internet desde su casa, el software era muy escaso y consecuentemente a un precio de lujo, y la piratería era algo habitual, hasta el punto de que cuando comprabas un ordenado era bastante común que en la propia tienda te diesen el disco de sistema operativo pirata. Sin embargo en el sistema de educación de aquel entonces ya habían oído hablar del software libre y el código abierto, por lo que en vez de mantener su plan a base de copias ilegales decidieron hacer un cambio de paradigma bastante fuerte: se comenzó a cambiar el temario de las asignaturas de introducción a la programación a Java, usándose al principio Kawa (un IDE aberrante donde los hubiese, que no seguía bien las normas de codificación de Java y que era una verdadera pesadilla para instalar) y después eclipse que nos cambió la vida a todos para mejor. Los drivers, que seguían codificándose en C, se picarían en KDevelop, y empezamos a tener equipos con Debian y un primerizo Ubuntu.

Este cambio significó que las siguientes generaciones académicas de programadores estudiaron y se desarrollaron lejos de Microsoft, y 10 años después esa empresa se encontró con que carecía de nicho de programadores. Confiaron en que “las empresas serias seguirían usando su software” y así fue en ofimática, pero se perdieron un evento muy importante: la revolución web. El software libre y el código abierto abierto siguieron proliferando y aparecieron ECMAscript (especificaciones de JavaScript), PHP, Ruby… que fueron reinando en los servidores y navegadores, mientras que .NET solo se encontraba en el mundo empresarial mas rancio e inamovible. Progresivamente en las noticias cuando se hablaba de las grandes empresas tecnológicas, se ha pasado a hablar de la GAFA, que son Google, Apple, Facebook y Amazon. El gigante perdió su tren.

Con el cambio en la directiva y el fin de la etapa Balmer, Microsoft replantea su estrategia: cambió la licencia de .NET a una más abierta, se invierte esfuerzo en crear un IDE también abierto (Visual Studio Code, que está basado en Atom de Github) y se aumenta el esfuerzo en el nicho universitario, pero el daño ya está hecho: tienen una década de desarrolladores mayormente alienados, que han crecido académica y profesionalmente lejos de ellos, y que ahora que es su momento de escribir los programas actuales le están pasando factura por su codicia, siendo reacios a utilizar cualquier software que venga de ellos por miedo a que vuelva a cambiar las licencias. Esa misma generación también ha visto como las empresas que ha ido absorbiendo en el pasado han ido degradándose en cuanto a innovación, tales como Skype (que solía ser ligera y tener una conectividad magnífica: cuando en el campus universitario Internet se saturaba por exceso de usuarios, podía usar Skype para pedir a algún amigo que no estuviese en el campus que se descargase la página y me la mandase por Skype, que iba por un puerto distinto, de manera que me salvó en múltiples ocasiones compilando código y escribiendo documentación mientras me comunicaba por él. Ahora abrirlo en segundo plano me se come la mitad memoria de mi antiguo portátil) o LinkedIn (antes era una red donde se debía agregar a profesionales que trabajaron contigo generando una red útil y relevante, estando todos debidamente etiquetados. Ahora las etiquetas ya no existen y no hago más que recibir peticiones de agregación de recruiters para trabajos bastante alejados de mis intereses, lo que lo ha convertido en una monumental fuente de spam), por lo que desconfían de sus adquisiciones. La compra de Github tiene sentido porque con ella pasan a poseer al código en que se basa su IDE, y “obtiene” una comunidad de desarrolladores, pero para eso los estos deben decidir quedarse allí (junto a su código)

¿Podrá remontar? A nivel innovación lo veo difícil, pues ya no dicta las pautas. Su actual inversión, Azure, es conservadora: almacenamiento web y una nube basada en GNU/Linux, que es abrazar lo que su anterior CEO denominaba “un cáncer”. TypeScript es relativamente prometedor, pero su máximo uso es en Angular, cuyo desarrollo capitanea Google, dependiendo una vez mas de un tercero. Si algo podemos aprender de esto es que, como dice el refrán, “la avaricia rompe el saco”.

Anuncios

Bohemian Rhapsody, un tributo más que una biografía

Estas vacaciones fui a ver la polémica película sobre Queen, que la crítica molió a palos. El concepto no me entusiasmaba en demasía, pues esperaba el típico biofilm mediocre, pero en el peor de los casos era una oportunidad de escuchar la música original de Queen en un equipo de sonido gigante y sólo por eso ya merecía la pena porque los álbumes de esa banda son tremendos. Afortunadamente el producto superó mis expectativas.

El cartel de Bohemian Rhapsody

¿Tiene fallos a nivel histórico? Bastantes. ¿Está endulcorada, mostrando la historia de Freddie Mercury de forma bastante amable? Desde luego. Pero no me molestó porque la película no se llama “la vida de Freddie” ni se dedica de ir a lo escandaloso cual paparazzi, sino “Bohemian Rhapsody”, que es uno de los temas mas versionados de la historia. Y eso es lo que es, una versión más que celebra la música de Queen, dándola a conocer a las nuevas generaciones en modo “para todos los públicos”. La interpretación es más que decente y la recreación del emblemático concierto de Live Aid está muy currada, por lo que para mí cumple como homenaje a esa legendaria banda.

Que de paso gracias a esta película Queen haya desbancado al reggaeton en lo mas escuchado de las Navidades es una maravilla que no tiene precio.

Un balance sobre la discriminación en el mundo de la tecnología

No suelo dar discursos sobre cuestiones de discriminación, de hecho considero que algunas de las normas de igualdad de la llamada “discriminación positiva” nos han hecho aún mas daño que bien al minar el reconocimiento al obtener una plaza de trabajo a las minorías al poner en duda las capacidades del candidato para obtenerla, pero me siento con ganas de tratar el tema en el contexto del mundillo en que trabajo. Lo que yo defendí, y defendereé es que debemos tener acceso a las mismas oportunidades y que se nos trate a todos ecuánimamente. Hoy os voy a hablar mi experiencia en este mundillo puestro que fuí una de las primeras chicas de mi generación que decidieron estudiar una ingeniería en mi ciudad natal.

Un balance sobre la discriminación en el mundo de la tecnología

Hay una discriminación innata hacia a las mujeres en este mundillo, lo que es irónico dado que el primer protolenguaje de programación fue el desarrollado por Ada Lovelace, una mujer (os dejo un enlace al genial webcomic de Sydney Padua sobre ella en 2Dgoogles). Fui la única chica de la clase en la rama tecnológica en el instituto, siendo la primera en inscribirse en esa modalidad, y el profesor nada mas entrar e primer día me preguntó si me había equivocado de clase, seguido de la que sería su frase más recurrente: “hay que ser muy hombre para aprobar tecnología”. Pese a los intentos de hacerme sentir fuera de lugar y animarme repetidamente a abandonar, me dejé el pellejo para acabar sacando las mejores notas de la clase en todas y cada una de las asignaturas y demostrar que se equivocaba y eso era la mío, pues quería ser desarrolladora de software. En la universidad tuve un “si lo logró fue porque había algo raro con ella y debía de ser lesbiana”, y ejerciendo profesionalmente hubo intentos de desvío  a trabajo de gestión porque “es más adecuado que la tecnología pura para una chica”. Por supuesto no todo el mundo es así, pero siempre hay alguien en el “lugar adecuado” para intentar hacernos sentir que no aportamos, vedarnos el camino y hacernos sentir francamente mal. Sin embargo puedo decir que mi esfuerzo ha valido la pena y que he abierto camino a otras siendo a día de hoy una Especialista Técnica Senior, y que para cambiar las cosas alguien debe dar el primer paso y aguantar la tormenta.

El otro colectivo discriminado es el compuesto por quienes tienen algún tipo de minusvalía: se supone que legalmente todos tenemos los mismos derechos de acceso, pero al igual que muchos edificios carecen de rampas y ascensores, en el mundo de lo tecnológico muchas herramientas también les son negadas. Este año he trabajado en cuestiones de accesibilidad y ha sido muy educativo para mí, así que os ilustraré con un par de ejemplos. Los IDEs (entornos de programación) de IDEA son las herramientas mas potentes para desarrollo en el mercado actual, pero tienen una accesibilidad nula (a los detractores de eclipse les recuerdo que aunque es muchísimo menos potente es de los pocos que sí son completamente accesibles, software libre al rescate una vez mas). Como anécdota, este año tuve que desarrollar una página web meteorológica accesible, y a la hora de volcar los datos resultaba lenta porque contenía muchísimos “datos verbosos”, es decir, que hay que escribir las 1000 palabras que describen una imagen para que el lector de pantalla de invidentes lo pueda comunicar al usuario. Con los mapas web hoy en día podemos ir haciendo zoom y viendo cómo aparece información mas y mas detallada, pero cuando tenemos que hacer esa misma funcionalidad en texto podemos, o poner una única página muy lenta con una cantidad abismal de información (tened en cuenta que hablamos de mapas por continentes), o ser creativos y hacer paginaciones simulando los diferentes niveles de zoom (los principales núcleos de población del país, luego por provincias…). Pues había quien priorizaba ponerle un estilo CSS para que “se viese bonito” a hacer una paginación intuitiva, dejando solo el acceso nivel superior del mapa (2 o 3 ciudades por país). O sea, discute que un enlace que está visualmente oculto y sólo un lector de pantalla para invidentes incontrará lleva a una página “visualmente agradable” (cosa que dicho usuario obviamente no disfrutará) pero que no da la misma información que la normal. Os parecerá una situación evidente pero cuando el cliente no quiere entender el camino es muy largo.

Muchos en este mundillo nos encontramos a diario con limitaciones, no importa que sea el día de esto o el de aquello. Ojalá se recordasen estas cuestiones mas a menudo, y no solo en eventos políticos o “el día de”, concienciándonos y siendo mas respetuosos. No pedimos ningún privilegio, solo tener las mismas oportunidades de acceder al mismo lugar que el resto y ser tratados con respeto. Mucho ánimo y a no rendirse.

Por favor, dejad de intentar eliminar los cables hasta tener una alternativa fiable

Hace años que los ratones y teclados inalámbricos existen como alternativa (subrayo alternativa, las versiones cableadas no se han ido a ningún sitio extraño ni parece que vayan a irse), pero con los gamepads y auriculares la tendencia está siendo mas brusca y, en mi opinión, absurda.

Por favor, dejad de intentar eliminar los cables hasta tener una alternativa fiable

Tardé cerca de 3 meses en encontrar un mando de Xbox-One con cable nativo (sé que los hay con conversor como gadget aparte, pero no es lo que buscaba: yo quería un estándar con su plug and play para el PC como el de la Xbox360, para tener toda la compatibilidad directa de juegos), y ahora estoy observando con horror como varios fabricantes que están abandonando el jack de 3.5mm en los móviles. El colofón de esto último es que incluyen un adaptador tela de feo para recuperar la salida de audio, que no solo estropea el diseño del dispositivo que lo hace incómodo de llevar en el bolsillo además de añadir un cacharrito extra fácil de perder… La simple existencia de dicho accesorio en el paquete base es reconocer que el jack aún es necesario, así que, ¿por qué quitarlo? El criterio de hacer móvil 2mm mas plano no nos cambia la vida, y mi criterio de uso de un teléfono es que sencillamente quepa en mi mano, aplanar para luego hacerlo mas largo y requerir un manejo a 2 manos solo me entorpece.

Otra funcionalidad que siempre tuvo el auricular clásico de cable fue su uso como antena de radio analógica. A día de hoy lo han sustituido por usar los datos del móvil para acceder a la radio por Internet, pero ¿por qué perder una versión clásica, económica y mas que buena en FM? Vale que por Internet la señal es mas limpia, pero los datos son los datos.

Desde el punto de vista técnico, el uso de dispositivos inalámbricos por bluetooth da por hecho que el emparejamiento será bueno (lo que no siempre es cierto) y que la batería será hasta un cierto punto duradera (lo que tampoco tiene por qué ser cierto), pero hay muchos temas que aún no están resueltos. Cada vez tenemos más y más dispositivos inalámbricos en casa, lo que hace que la señal bluetooth pueda inestabilizarse al mezclarse tanto gadgets. Precisamente por este motivo yo voy a seguir aferrándome a la versión con cable todo el tiempo que sea posible: hay pocas cosas que me molesten mas que la señal de auriculares cortándose aleatoriamente cuando escucho mi música, o las alarmas de batería baja en los gamepads cuando estás muy metido en un juego. El futuro sin cables suena estupendo, pero hasta que sea estable y no me haga estar preocupada de una infinidad de niveles de carga, seguirá alejado en el tiempo de mi presente.

Jardinería del software

Hace tiempo leí el post de Chris Aitchison sobre el concepto de la Jardinería del software, y cada día me parece más acertado.

A día de hoy no hacemos programas acotados y bien definidos, hacemos sistemas para ofrecer servicios que deben ser transformados, actualizados y mantenidos a lo largo del tiempo. E incluso puede darse el caso en que lo que estemos creando después acabe siendo algo completamente diferente porque el cliente decide pivotar a medio camino. A esto le sumamos la falta de regulación de la formación académica requerida, que además está cada vez más devaluada por estar alejada de la realidad, y el hecho de que se menosprecie el conocimiento adquirido por experiencia en un proyecto: si ahy rotación de toda tu plantilla, hay un conocimiento (aunque sólo sea por conocer la historia de las decisiones tomadas) que se pierde, lo que lleva a repetir errores.

En el 2018, definitivamente, el trabajo en el sector de la informática ya no es cómo construir edificios, es como cultivar y mantener jardines.

El kiosko musical del Parque Maria Luisa de Sevilla, procesado por ordenador

Sin más, os dejo con la traducción al castellano:

¡No te dedicas a la Ingeniería del Software!

No te dedicas a la ingeniería del Software. No construyes rascacielos. No construyes puentes.

Cultivas jardines. Eres un Jardinero de Software.

¿Planificas tus jardines hasta el detalle de saber dónde estará cada hoja antes de plantar una sola semilla? ¿La gente espera estimaciones (o quizás en tu empresa sean compromisos) de exactamente cuántas flores florecerán al cabo de un año? ¿Recibes un bono de productividad por ello? Cosas que serían completamente razonables de planificar para un rascacielos parecen un tanto ridículas cuando hablamos de un jardín.

Probablemente tengas una idea definida sobre el aspecto tu jardín con vista a una semana. Puede que incluso tengas una idea aproximada de cómo esperas que sea tras un año. Pero no tienes ni idea de dónde estará cada rama, tallo, hoja o flor estará tras un año, y si dices que es así, estás únicamente intentando adivinarlo.

Si estuvieses construyendo un puente o un rascacielos, y me dijeses antes de empezar, que sabes exactamente el aspecto que tendrá al terminarse, te creería. Si me dijeses que sabes con un inmenso grado de precisión cuánto tardará en “estar terminado”, te creería de nuevo. Así es cómo funciona la ingeniería. Dime lo mismo sobre tu jardín y diré que ni de broma. Dime que conseguirás que crezca más rápido contratando mas jardineros y me reiré de tí.

¿Así que, por qué fracasan tantos jardines, mientras que los rascacielos tienen éxito? Con unas pocas excepciones, la técnica para construir un edificio es similar si lo construyes en Europa o en Singapur. Los jardines no funcionan así. cada jardín es diferente porque el entorno en el que está es diferente. Incluso algunos jardines cercanos en localización a otros pueden tener un suelo muy diferente. Por ese motivo quien hace la oferta más baja probablemente podría construir el mismo puente que quien hace la oferta más alta, pero tu empresa no puede cultivar el calibre de los jardines que Google puede crear.

¿Recuerdas esa ocasión en la que alguien de tu empresa empleó sin éxito metodología de jardinería Agile, y fue diciendo que esta era una mierda que no funcionaba? Bueno, pues con la mierda se abonan jardines, pero en ese caso no fue la suficiente para salvar su jardín. Su jardín estaba probablemente muerto antes de empezar, una víctima del clima de tu empresa. ¿Intentabas crear una jungla en un desierto? No puedes plantar las mismas plantas que Facebook, Flickr o Twitter y esperar que arraiguen sin importar la calidad de los jardineros o el clima de tu empresa.

A diferencia de un rascacielos, en tu jardín saldrán malas hierbas. Nunca estará “terminado”. Simplemente porque se deje de invertir dinero en él no significa que esté terminado. Si de limpiar las malas hierbas, llegará el momento en que estas asfixiarán el jardín, y será mas sencillo eliminar y re-plantar que podar. El entorno que rodea a tu jardín también será cambiante, y un jardín descuidado será mas y mas difícil de mantener vivo.

En la mayoría de los países, los Ingenieros necesitan una licencia para construir un puente. Los jardineros no tienen tal control de calidad gubernamental. Desgraciadamente, la calidad de los jardineros va a tener una fuerte influencia en las probabilidades de éxito de tu jardín por encima de otros factores, así que deberías ser bueno distinguiendo el trigo de la cebada. Solo un jardinero experimentado puede reconocer a otro buen jardinero cuando lo ve. Alguien que únicamente haya gestionado jardines no tendrá ni idea de lo que están buscando (a pesar de que no será consciente de ello). Así que si no eres un jardinero, pero necesitas buenos jardineros, encuentra deprisa un jardinero experimentado que vete candidatos. No se puede enseñar jardinería en una clase, así que recuerda enfocarte en los jardines que tus candidatos han cultivado antes, en vez de cuánta teoría de la jardinería estudiaron en la escuela (que, de todas maneras, casi nunca es aplicable al clima en el que estás).

La metáfora de la Ingeniería tuvo su época, y quizás fue acertada, pero ahora solo sirve para que personas no técnicas tengan expectativas no realistas sobre cómo se construye el software.

Soy un Jardinero del Software. Y tú también.

– Chris Aitchison