Generalistas, Especialistas y Cynefin Framework

IMG_20180422_160246218

Barbie™ es especialista-general. Es (entre otras cosas) astronauta, informática, médico y cocinera. Es especialista en todo, pero desafortunadamente no es real: los seres humanos tenemos que conformarnos con ser, o bien especialista en un conjunto muy reducido de áreas, o bien generalistas en varias.

Dando vueltas a las dinámicas de trabajo de personas con diferentes experiencias, esperaba poder escribir un post que me ayudase a identificar cuándo es mejor ser un generalista o un especialista, o cuando conviene contar con más o menos de unos y otros en un equipo.

El tema podría estirarse mucho y existe una gran cantidad de información sobre muchos de los temas relacionados, pero creo que lo que he escrito en este post es suficiente para mi propósito.

Empleo el término “especialista” en lugar de “experto“, como he visto hacer en otros artículos, porque creo que la diferencia fundamental entre “generalista” y “especialista” es cómo distribuyen su experiencia: el generalista tiene mucha experiencia distribuida en muchas áreas; el especialista también tiene experiencia, pero enfocada en un solo área o nicho. Es decir, no se trata de tener mucha experiencia, sino del tipo de experiencia y conocimientos que acumulamos. Es una diferencia cualitativa.

Es importante entender que no existen los generalista o especialistas puros, todos tenemos un poco de ambos. Y también hay que tener en cuenta que nuestros conocimientos varían con el tiempo en base a experiencias pasadas, situación personal, etc. Lo que impide encasillar a alguien en uno u otro perfil de manera indefinida.

Cómo son Especialista y Generalista

El especialista puede actuar sobre algo en particular en su área de conocimiento. Cree saber mucho o todo de su área y extrapola (generalmente mal) al resto. Tiende a no saber que no sabe. Tiende a intentar actuar en solitario. Tiene seguridad en lo que hace y desconfía de lo que no conoce o se sale de sus mecánicas de trabajo. Tiene una visión parcial y busca optimizaciones locales. Evita los grandes cambios.

El generalista puede dirigir y llegado el caso actuar al tener una imagen del contexto y una base de conocimientos, pero ejecuta de forma menos eficiente que un especialista. Sabe que sabe “poco” y tiende a trabajar desde hipótesis que hay que validar. Intenta actuar en equipo. Duda de todo y tiende a anteponer las pruebas a los argumentos. Tiene una visión holística y sistémica.

Cuándo ser o emplear uno u otro

El generalista será más efectivo al ver la foto completa (o al menos una foto amplia) del problema, su contexto y ramificaciones.

El especialista será más eficiente cuando actúe en su campo, resolviendo un problema concreto y definido de forma rápida y limpia aunque tenderá a ignorar el contexto, generando eficiencia local a costa de la del sistema.

Cómo funcionan los grupos de Generalista y Especialistas

1. Equipo de generalistas. Efectivo pero lento. Dales suficiente tiempo y te resolverán los problemas para siempre. Incluso puede que problemas que ni sabías que tenías. En entornos con muchos interrogantes o cambios, o entornos con mucha integración con terceros, posiblemente funcione mejor que otros.
2. Equipo de especialistas. Eficiente pero inefectivo. Dales problemas concretos y acotados a su área y te los resolverán en poco tiempo. Si no les das instrucciones detalladas de lo que quieres, probablemente te generen problemas nuevos. En entornos estables y bien conocidos y planificados (sota, caballo y rey) posiblemente funcione bastante bien.
3. Equipo con más generalistas que especialistas. Frustración de los especialistas ante la falta de velocidad o exceso de “charla”. Efectivo pero lento. Habrá fricción entre unos y otros y puede que sobrecarga de los especialistas en determinados momentos. Parálisis por análisis en según qué casos.
4. Equipo con más especialistas que generalistas. Tendencia a actuar antes de pensar. Frustración de los generalistas al disparar antes de apuntar. Fallos de coordinación e integración. Tendencia a mantener la gente ocupada y a obtener resultados técnicos en lugar de obtener resultados de negocio.

El contexto es importante

Hace tiempo que quería hablar del marco de trabajo Cynefin tras leer sobre él en los blogs de Jerónimo Palacios y Javier Garzás. El post de Garzás me parece el más claro y simple para quien quiera echarle un ojo, pero en la Wikipedia (en inglés) hay toda una entrada el respecto para profundizar.

Este framework nació en 1999 y actualmente se emplea en ejercicios de formación de Scrum para “entender y explicar por qué distintos enfoques de trabajo y de hacer las cosas, funcionan bien en un entorno y en otro no“.

En esencia es un método de toma de decisiones, y creo que puede servir para identificar cuándo es mejor tener (o comportarse) como generalistas o como especialistas.

En mi opinión, cuando estamos en los dominios Obvio o Complicado, los especialistas son necesarios (quizá en solitario, quizá liderando un grupo o quizá siendo mayoría en el grupo). Sin embargo, para los dominios Complejo, Caótico y la zona Desordenada, parece mejor contar con generalistas.

En mi caso, puedo decir que me gusta el dominio Complejo y tiendo a automatizar todo lo que esté en el Obvio para no tener que hacerlo. La zona Desordenada es algo que detesto, por lo que trato de orientar mi trabajo para salir de ella lo más rápidamente posible. Supongo que todo esto me identifica como generalista.

Conclusiones

En el mundo del software (y todo va camino de ser software), los cambios se suceden con velocidad de vértigo, y por lo tanto la mejor opción parece ser el contar con generalistas para poder adaptarse con agilidad a lo inevitable.

Sin embargo, para poder resolver los problemas más típicos de manera eficiente y que una empresa pueda funcionar en el día a día, es necesario tener al menos un especialista en la operativa o problema más común de la empresa. Por ejemplo, merece la pena tener especialistas en gestión de proyectos si tu negocio se basa en proyectos, o en contar con un especialista de bases de datos SQL si muchos de tu trabajos usan bases de datos SQL.

Todos los trabajos que encajan en el dominio de los Obvio van a ser automatizados, así que es mejor evitar esa zona como la peste.

Para terminar

Como decía al principio, no hay perfiles puros, por lo que mi apuesta es tratar de ser especialista en al menos uno de los problemas más comunes de mi empresa y emplear el resto de mi tiempo y esfuerzo en aprender y experimentar cosas diferentes de esa especialidad. O como dicen los libros de autoayuda: salir de mi zona de confort.

Esto me ha permitido realizar una transición ordenada de algo de decadencia a algo en crecimiento y consolidación. En mi caso he realizado me he ido especializando en desarrollo .NET, despues en desarrollo y adminstración de SharePoint. Desde SharePoint a desarrollo y administración en Office 365 y de Office 365 a Azure, donde el perfil de arquitecto te exige ser un generalista.

Pero eso es otra historia. Y aun me quedan más de 40 años de trabajo. Espero.

 

 

 

Anuncios

Paradigmas de organización y estrategias de rentabilidad

Hace un par de días estuve consultando (en papel) el “Manual de la sociología del trabajo y de las relaciones laborales” (H.-D.Köhler y A. Martín Artiles) donde me topé con un capítulo titulado “Paradigmas de la organización del trabajo” que llamó especialmente mi atención.

En el capítulo se habla de diferentes paradigmas, entre ellos “taylorismo” y “lean”, muy relacionado con el mundo de la fabricación industrial y las cadenas de montaje pero también con el desarrollo ágil de software.

El libro es descriptivo, no prescriptivo, es decir: solo enumera, describe y comenta contexto, ventajas y críticas de los diferentes paradigmas y sus implementaciones. Pero aun así me ofreció una visión diferente de la que solemos ver en talleres y charlas de desarrollo ágil. Una visión más coherente con la realidad de los equipos que he conocido.

Algunas de las cosas que se comentan son:

  1. Que “ninguno de estos modelos ha funcionado según ‘el libro de texto’ de las escuelas de negocio, ni siquiera los casos de Ford, GM o Toyota”. Esto cuadra con la discusión sobre si hay que adaptar Scrum a la organización/equipo o si no funciona porque “no se está haciendo Scrum de verdad”. En la realidad ningún paradigma se ha seguido de forma “pura”, sino en formas híbridas para adaptarse al contexto.
  2. Las metodologías “lean” derivaron en un ultra-taylorismo. Aun peor que el taylorismo al que pretendía sustituir, debido al control absoluto que establece a base de visibilidad y transparencia. Este control generó diversas críticas en los entornos industriales de los ’90 por el estrés que provocaba en los trabajadores. Cuadra con el sobre nombre de “Hacienda Scrum” que he llegado a oír: Scrum vista como esclavos recogiendo algodón de sol a sol, día tras día.
  3. Existe otro paradigma (el último que comenta) denominado “sistema de producción reflexivo”, también llamado Volvoismo o Kalmarismo por la empresa (Volvo) y lugar (Kalmar) en que nació: la planta Volvo-Udevalla. Al parecer quedó solo en un experimento por diferentes motivos, entre los que están las operaciones contables en que se le imputaban costes ajenos (un clásico de muchas empresas). Al parecer los equipos eran muy autónomos, permitían una flexibilidad enorme en la producción y se asemejaban más a talleres “neoartesanos” que a naves industriales. Un modelo no exento de críticas en cualquier caso.
  4. Se pueden distinguir paradigmas de organización en función de sus “estrategias de rentabilidad”, es decir: según como buscas ganar dinero tiendes a organizar las cosas de una u otra forma. Una empresa que gana dinero por volumen (paradigma fordista) o por reducción de costes (paradigma toyotista), harán cosas diferentes y le irá mal aplicando cualquier otro paradigma. Esto cuadra muy bien con mi experiencia y sé que sin entender esto es fácil aplicar cosas que dañarán a la empresa.
  5. Parece claro que el éxito o fracaso de cualquier organización depende de muchos factores y el paradigma que emplee puede ser tanto una consecuencia como una razón de éxito o fracaso. Los contextos en que se mueven las organizaciones cambian constantemente. La política, el mercado laboral y el estado de la economía influyen y condicionan completamente los resultados y la evolución de las empresas.

Un libro interesante. Como mínimo para consultar algún que otro capítulo.

Para terminar, he generado una hoja de cálculo para tener a mano la matriz de comparación que contiene, sobre paradigmas y estrategias. Porque espero poder darle uso tarde o temprano, pero igual alguien más quiere echarle un ojo:

Paradigmas de organización y estrategias de rentabilidad

La horda (equipos)

Hoy pensaba en un patrón de comportamiento de algunos equipos que he observado una y otra vez a lo largo de los años. Lo llamo “La Horda” y es algo que experimentado tanto como observador, como miembro activo u ordo.

Qué es y cómo funciona La Horda

La horda en equipos de desarrollo suele producirse cuando sucede algo que se percibe como importante, afecta a todos y además nadie sabe qué está pasando o qué implica realmente. El motivo puede ser variado: un error raro en un entorno de producción, un merge que salió mal y se ha extendido al resto de ramas, o una decisión sobre el código común. En esos momentos, la confusión y el caos se apoderan del equipo y los individuos pierden su identidad para convertirse en una masa, un grupo con mucha actividad y pocos resultados que realiza acciones sin coordinación y de forma más automática y emocional, que meditada.

En este “modo” de funcionamiento, los miembros del equipo no tratan de coordinarse o comunicarse de forma efectiva, sino de imponer su visión al resto, ya sea hablando sin escuchar o tratando de hacerse con el control de la horda (sin éxito dado el estado alterado general). En muchos casos algunos miembros de la horda actúan sin pensar provocando aún más caos. En otros la horda se divide en facciones que solo se comunican, o bien para defender intereses o bien por afinidades personales.

Al final, algo provoca que el tema se apague: el error de código desaparece, la gente se cansa o llega la hora de irse a casa. Entonces la horda se disuelve y vuelve a sus quehaceres. Lo interesante de este punto es que nadie se preocupa de ir más allá: el peligro ha pasado y no se siente la necesidad de dedicar más tiempo al tema. De este modo el origen del problema queda sin resolver, por lo que volveremos a ver una nueva horda en semanas o meses.

No creo que todo esto sea simple desorganización. Es más, tratar de organizar no ayuda, solo empeora las cosas o cabrea a los ordos.

Territorio Horda

Parece más fácil avistar una horda en equipos de desarrollo juniors que cuando hay seniors. Me refiero a veteranos de verdad, no gente con 1 año de experiencia repetido 20 veces. Supongo que esto se debe a que los veteranos están más curtidos y entienden que ciertas situaciones no son tan importantes o urgentes como puede parecer en un principio. También debido a que la experiencia adquirida les da más confianza en resolver el problema más pronto que tarde.

También parece más fácil que se forme la horda en entornos de desarrollo, que en entornos de sistemas. Mi hipótesis es que los equipos de desarrollo son más grandes que los de IT y con más especialistas (front-end, back-end, bases de datos…), dos características que generan problemas para mantener una visión de conjunto del trabajo (el conocimiento está muy fragmentado), aumentando el caos.

Además, tradicionalmente Sistemas no crea o genera cosas, sino que las administra, por lo que tiene más documentación y procesos que ayudan a mantener las cosas bajo control. Esto unido a que tienden a correr menos riesgos, evita que las cosas se pongan feas.

Defenderse de la horda

Creo que el problema de fondo que facilita la aparición de la horda es la falta de ganas de comunicación en el grupo. Es la escasez de tiempo lo que a menudo propicia esa falta, pero hay muchos otros factores que se suman día a día, a lo largo del tiempo, lo que genera hordas de forma cíclica.

Es normal que en un grupo que haya cierta brecha entre las experiencia y conocimientos de las personas y esto provoca que la comunicación requiera esfuerzo, como en el caso de padres e hijos. También es normal que existan diferencias de valores comunes y diversidad de caracteres, lo cual es sano y deseable. Sin embargo, cuando hay falta de interés en la comunicación (de serie o por razones externas), o si las personas del grupo desarrollan celos o rencillas (por sueldos, roles, rumores…), entonces la información tiende a ser, ocultada, distorsionada y se prejuzga con facilidad. Todo esto influye en que la comunicación se resienta, desembocando en hordas más o menos regulares.

La comunicación es algo difícil, requiere esfuerzo constante de todos y, aunque algunas personas puedan facilitarla en ocasiones, suele decirse con acierto que “no hay peor sordo que el que no quiere oír”: cuando alguien no quiere comunicarse, no hay forma de comunicarse y esto es un problema para el grupo muy difícil de resolver.

En mi opinión cualquier estrategia para evitar la formación de hordas requiere de tiempo y esfuerzo constante, y no siempre funcionará o será viable. Pero merece la pena intentarlo siguiendo estos pasos:

  1. Elige la capacidad de comunicación sobre la excelencia técnica en los miembros del equipo. Leer y escribir suelen ser buenos indicadores (no garantía) de que alguien disposición e interés en ello. Otros elementos de comunicación, como la escucha activa, son más complicados de detectar, especialmente en entrevistas. Y por supuesto entrena las capacidades de comunicación, no son algo que se aprende y ya está, hay que practicar, analizar, estudiar y mejorar constantemente.
  2. La paciencia y la experiencia variada ayuda a no caer en el pánico, facilitan la comunicación y el entender situaciones nuevas. Por eso ambas características son interesantes para cualquier grupo. Cuanta más y mejor distribuida, mejor.
  3. Reserva tiempo para comunicar a menudo. Si el equipo está sobrecargado esto se va a resentir. Pero eso no significa que una sola persona o un pequeño grupo sean los únicos responsables de buscar tiempo o iniciar la comunicación. Todos deben hacerlo.
  4. Emplea todos los canales de comunicación disponibles. Hablar es el más básico de los disponibles actualmente y probablemente el peor, porque que requiere poco esfuerzo (tiende a hacerse mucho y mal), solo funciona bien de 1 a 1, necesita que las personas sincronicen agendas, etc. Hace 6.000 años que tenemos escritura y desde hace bastantes décadas podemos grabar y transmitir audio y vídeo, amén de nuevos canales de comunicación escrita (chats, wikis…). Emplear exclusivamente el “sentarse a hablar” es negligencia.

Para acabar, dejo al lector una cita de Wikipedia que encontré leyendo sobre hordas de verdad. Me parece interesante para seguir reflexionando sobre el tema y me invita a pensar que quizá haya espacio para un antropólogo en los equipos de desarrollo. Al menos en los de las grandes ligas como Google, Amazon o Microsoft.

Jared Diamond define algunas características propias a las organizaciones sociales de los seres humanos en hordas:

  • Son las sociedades más pequeñas, entre 5 y 80 personas, estrechamente emparentadas;
  • Carecen de muchas instituciones como leyes, policía y tratados para resolver conflictos;
  • No tienen base de residencia;
  • Sociedad «igualitaria». Liderazgo informal;
  • Todos los humanos presumiblemente vivieron en hordas hasta la adopción de la agricultura;

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 SwCraftersCLM GDG Toledo y los ánimos que me han dado desde esta comunidad para publicar el “timeline de desarrollo”, he terminado una versión 1.0 1.2 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 2018.

El Excel es el siguiente: Developer Timeline 1996-2017

¿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.

La que he liado – Un contexto y una disculpa

William-Adolphe Bouguereau (1825-1905) - Two Sisters (1901)

Hace unos días uno de mis tuits generó bastante actividad, entre el debate y el enfado, dependiendo del momento y del participante (no me excluyo).

No es la primera vez que esto sucede en Twitter. Ni soy el primero en provocar o sufrir esto, ni es algo raro o especial como pueden atestiguar Edin Kapić, MVP de Microsoft y una de mis referencias favoritas de esa comunidad, o Roberto Luis Bisbé al que también sigo al resultarme interesantes sus contenidos. Trato de tomarlo como uno de los gajes de la exposición pública y la tendencia al malentendido del medio escrito, inmediato y limitado a los 140 caracteres que es Twitter.

Que Edin (por partida doble), Roberto y yo compartamos este dudoso honor, no significa que seamos equiparables, amigos, ni nada por el estilo, simplemente son tres ejemplos recientes de “la-que-he-liado” en la comunidad Microsoft, en Twitter. De hecho solo he hablado en persona con Edin en un DevCamp de Apps para SharePoint 2013 de Microsoft en 2013 y con Roberto en la Iberian SharePoint Conference de 2013. Para mi, ese fue un buen año de asistencia a eventos en horario laboral.

Los que me conocen saben que vivo en Toledo, por lo que mi participación física en eventos en Madrid, donde suelen darse estos, es complicada sin una aprobación de mi empresa para hacerlo en horario laboral. Máxime cuando tengo una pequeña de 6 años a la que idolatro. Eso convierte el texto de este blog y mi perfil de Twitter en los únicos medios desde los que puedo “hablar” o al menos expresarme en público con otros desarrolladores (y otras personas con intereses similares a los míos), en particular de Microsoft, fuera de mi oficina. Fuera del mundo Microsoft lo tengo más sencillo con los Meetups de Software Craftsmanship CLM.

Entiendo que otras personas tienen otros entornos, medios y motivaciones: cada uno tiene su contexto. Y en ese contexto se enmarcan las opiniones que vertemos. De nuevo Twitter no es el mejor modo de conocer este contexto, siendo lo óptimo las relaciones cara a cara durante años, pero eso requiere de unas circunstancias laborales y personales que no tengo.

Iba a usar este texto como inicio para hablar de Eventos técnicos, Ferias, Comunidades Técnicas, Meetups, Open Spaces y demás elementos que parece que mezclamos en algunos eventos como el pasado Techsummit. Es algo en lo que me apetecía pensar (y por lo tanto escribir) tras la discusión desencadenada, pero parece que este prólogo me ha quedado demasiado largo y no estoy seguro de cuando podré terminar de escribir mis opiniones al respecto debido a mis circunstancias personales y profesionales.

En cualquier caso, me gustaría terminar este post ofreciendo mis disculpas a quien quiera que haya podido sentirse ofendido con mis palabras en esa discusión en particular y en las futuras. Al fin y al cabo todos formamos parte de la misma comunidad, y por lo tanto todos queremos lo mejor para esta. De eso no tengo duda.

¿Continuará?…

Igualdad y desarrollo de software. ¿A quién le conviene?

wp_20150201_001

Hace unos días asistía en Twitter a la conversación de varios desarrolladores, MVP, técnicos, etc. acerca de la visibilidad de las mujeres en el evento para desarrolladores Codemotion. Espoleados por nuestro particular Pepito Grillo de la comunidad Microsoft en España Edin Kápic, los comentarios no se hicieron esperar por parte de desarrolladores, MVP o evangelistas de Microsoft como Isabel Cabezas cuya opinión como representante femenina tiene especial valor.

Al final, entre tanto hilo y con la limitación de espacio que caracteriza a Twitter parece que teníamos muchas preguntas e interés en el tema de mujeres y desarrollo de software pero pocas respuestas.
Como parte doblemente interesada por ser desarrollador y padre de una hija a la que me gustaría ver en “ciencias” (STEM), quiero hablar solo un poco (el tema es extremadamente complejo por lo que parece absurdo intentar ir más allá en solitario) de mis opiniones y dudas acerca de si es necesario o siquiera buena idea esforzarse en aumentar la presencia femenina en el sector.

Empezaré diciendo que la vez que más abiertamente he escrito sobre el feminismo fue comentando en junio el documental CodeGirl  y que cobra mayor relevancia con cada evento que persigue la igualdad estadística entre sexos. Y no lo he hecho más a menudo porque es un tema “caliente” que podría volver fácilmente un texto en un problema para el autor, pero con una hija estos temas cobran cada vez más importancia. También, quizá por haber leído Universidad y Ciencia en España, de Clara Eugenia Nuñez  y La Tabla Rasa de Steven Pinker, me surgen serias dudas sobre si es buena idea lanzarse a movilizar mujeres y hombres a la búsqueda de la igualdad estadística, en parte por si estamos resolviendo un problema equivocado y en parte por si provocaremos efectos secundarios no deseados.

En cuanto a mi opinión sobre las mujeres en el software, aunque muchos comentan que todas las desarrolladoras de software con las que han trabajado eran estupendas, yo diré que también las he encontrado muy malas, pero parecen trabajar mejor en equipo en general. De todos modos no he tenido ocasión de trabajar con tantas como hombres ni de lejos así que aquí tengo un sesgo clarísimo, y eso señala un problema o una característica social o del sector que valdría la pena explorar.
Sobre mujeres dando charlas, la única vez que he insistido en que alguien nos diese una charla técnica fue de una compañera de front-end. Ella pensaba que “no era tan buena” pero yo veía evidente que sí y creo que el tiempo acabó dándome la razón. En ningún caso quería incluir mujeres (era interna) sino aprender de los más competentes y en este caso era ella.

Por último, pongamos algunas cosas sobre la mesa:

  1. Hay un interés económico claro y reconocido de aumentar el pool de desarrolladores disponibles para la industria (lean algunos comentarios, son interesantes).
  2. Hay un interés claro de determinadas empresas en aumentar la diversidad de desarrolladores (más allá del sexo) en sus plantillas en pro de la “innovación”. Sea lo que sea eso.
  3. Como sociedad, parece que España es una de las mejores del mundo, muy lejos de la estadounidense.
  4. Desarrollar software no es fácil, y requiere de una dedicación seria con una necesidad de renovación constante que no todo el mundo (sea del sexo que sea) está dispuesto a asumir y mucho menos a disfrutar. Recordemos que los jóvenes quieren ser funcionarios.
  5. Los Estados Unidos son una sociedad diferente, con problemas diferentes a la Española, de los cuales no deberíamos importar soluciones sin más, sin un poco de espíritu crítico, a riesgo de generar nuevos problemas o romper cosas que funcionan, como la sanidad pública.
  6. Hay despidos en empresas técnicas como Microsoft a nivel mundial o HP localmente.

Por tanto, mi opinión actual es que tenemos varias economías nacionales con intereses claros en aumentar y diversificar el pool de desarrolladores. Tenemos también una oleada de problemas “del primer mundo” y soluciones extraídas de la sociedad estadounidense que están siendo importadas prácticamente sin espíritu crítico por colectivos interesados como son políticos (votadme mujeres de 18 a 35 años), empresas de eventos (mujeres, venid a mi evento de pago) y empresas/profesionales de formación (hágase rica programando con mi curso). Sobre la formación además parece que estamos ante una burbuja.
Y por último tenemos a los desarrolladores sin distinción de sexo o edad, que parece que tenemos un incentivo económico para NO aumentar el pool de desarrolladores. Con ello algunos esperan conseguir sueldos un poco más altos (acordes a lo que esperaríamos en otras economías del entorno) o al menos evitar despidos como los de HP por poner un ejemplo. Este último caso deja claro que no hay escasez real de mano de obra técnica, sino de mano de obra barata.

Todo esto debería dar bastante que pensar y hace que me plantee decenas de preguntas. Tantas que he desistido de intentar articularlas o mencionarlas aquí con idea de centrarme en la más importante.

¿Qué problema queremos resolver realmente?

O a nivel más personal y concreto ¿cómo va a hacer más felices a mi mujer y a mi hija el aumento de mujeres desarrollando software?

A la primera pregunta la única respuesta evidente es que queremos abaratar costes a empresas (no a autónomos, ojo). Por favor, si alguien tiene otra, que me la diga, porque yo no soy capaz de dar una alternativa.

A la segunda pregunta no parece que aumentar el número de mujeres desarrollando vaya a tener un efecto beneficioso sobre el futuro de mi hija. A priori, siendo mujer te puede ir mejor si está dispuesta a aprovecharte del sistema y de los sesgos (leyes, micromachismos) aunque imagino (que no veo) que puede tener sus ventajas aumentar el número. Pensando en efectos secundarios lo que veo es un escenario de sueldos peores y mayor competencia, por lo que estaríamos ante la típica carrera hacia el abismo.

Así que, aunque me parece normal y deseable que grandes empresas se envuelvan en la bandera de la inclusión para mejorar ingresos, yo no veo ningún incentivo para que los trabajadores apoyen iniciativas de este tipo, fuera de los sectores de formación, organización de eventos y política (que no es poco). E incluso yendo más allá y reconectando con el tema que abría este post, me pregunto si tienen sentido los eventos técnicos presenciales a día de hoy o si deberían cambiarse a un formato más inclusivo para todos como es el remoto vía Hangouts y similares. Quizá las hololens y otras tecnologías puedan aliviar a eso y permitir que las minorías que no pueden o no quieren viajar a los eventos, formen parte de estos.

Para terminar este artículo, me gustaría dar algo de visibilidad a la iniciativa de Codemotion y a Isabel Cabezas para que aquellas mujeres que quieran dar una charla sepan que son bienvenidas en el Codemotion 2017. Yo por mi parte intentaré organizar una mesa redonda en el Meetup que hacemos regularmente en Toledo, acerca de la inclusión de niños (tenemos padres y tíos) y mujeres (no se animan a venir) en el mundo de desarrollo software.

PD: he tenido que reescribir este artículo tantas veces, para evitar problemas, no dispersarme demasiado y hacerlo digerible, que casi voy a tener que coger unas vacaciones en cuanto lo publique.

Las dos palabras que todo profesional debería usar más

Hace unos días, Manuel de la Peña twiteó un texto que comentaba una vieja historia (más bien fábula) de monos, jaulas, preguntas y procedimientos.

Eso me trajo a la memoria pequeño artículo que leí en Hardvard Business Review sobre el arte de hacer preguntas. Un artículo que en su momento me invitó a pensar en la importancia no tanto de las técnicas de hacer preguntas, como de lo esencial que es conocer el “por qué” de las cosas (y para lo que se necesita hacer preguntas, claro).

También me recordó este otro artículo sobre qué hacen las personas que son buenas escuchando y que en mi opinión es una consecuencia de interés genuino en entender los “por qué“.

La falta de interés y esfuerzo en tratar de entender las cosas, sus objetivos y contextos (esto es, el “por qué“) es un tema que me da mucha rabia observar (incluso en mi) y del que hace tiempo que tenía pendiente quejarme un poco en público. En público, porque tiene relación directa con todos los procesos que se realizan en cualquier empresa; también con las buenas prácticas (best practices) que parece que muchas personas se emperran en recomendar o exigir sin entender que dependen del contexto. Y por supuesto porque tiene que ver con los que critican (y criticamos) decisiones de terceros a nivel personal, de negocio o político casi a diario.

Hay por supuesto profesiones en las que en general se necesita hacer preguntas básicas constantemente de forma directa o indirecta, como en medicina (¿le duele aquí?, ¿puede caminar?), donde cada prueba médica es una forma de pregunta y cada mirada o toque está orientado a obtener una respuesta (el ojo clínico). Supongo que haber tenido un padre médico ayuda a ver ciertas cosas de cierta manera.

No obstante, la mayoría, durante la mayor parte del tiempo observa, juzga y condena sin conocer el “por qué” de una decisión. Pocos se molestan en hacer preguntas la mayor parte del tiempo. Mucho menos una tan básica como “¿por qué?“. Y desde luego nunca seguida de otro “¿por qué?” como en el método Toyota-Lean-Kaizen-Six Sigma de los 5 por qué para la mejora de procesos.

Me temo que hemos cogido miedo a hacer preguntas básicas, las más importantes, por miedo a parecer ignorantes y menos valiosos en nuestro entorno personal y puesto de trabajo, e irónicamente eso nos hace más ignorantes y menos valiosos.

Pero no acaba ahí el problema: como nadie hace preguntas para entender un contexto todos acabamos dando por sentado que este no importa y/o que todos tenemos la misma idea en la cabeza, lo que provoca errores y dificultad en la comunicación. Un desastre.

En fin, que las dos palabras que creo que todos deberíamos usar más son evidentemente “¿por que?”. Aunque hay otro par de palabras que, si se usasen con sentimiento real, también deberíamos usar más y mejoraría mucho nuestras vidas: “por favor”. Porque es sorprendente lo bien que responden algunas personas a un poco de interés y educación y como redunda eso en un win-win de libro.

Así que tras quejarme un poco y habiendo dejado algunos enlaces (espero) interesantes, solo puedo cerrar este post invitando a todos a preguntar más y mejor. Con inocencia y abiertos a escuchar.