Saltar al contenido

Blog técnico | Introduciendo un nuevo idioma

En , tenemos un equipo de desarrolladores políglota en el que los equipos individuales pueden introducir nuevas tecnologías. Sin embargo, no se trata de un post sobre cuando introducir una nueva tecnología en una organización.

Como ejemplo de tecnología, podemos hablar de Elixir: un lenguaje de programación funcional que hemos empezado a utilizar en algunos nuevos contextos delimitados en. Proporciona una sintaxis amigable para el ser humano en el paradigma de programación funcional con un modelo de concurrencia probado en la batalla. Si está interesado en aprender un nuevo lenguaje, algunos recursos adicionales se enumeran al final de este artículo.

Blog técnico | Introduciendo un nuevo idioma
Blog técnico | Introduciendo un nuevo idioma

En el momento de escribir este artículo, el Elixir no es un idioma corriente en… Podría llegar a serlo, sin embargo, así que hablemos de cómo llegar a él.

Vallas potenciales

Sin embargo, podemos hacer una suposición fundamentada e intentar abordar esos temas de frente.

Tecnológico: Corto plazo

Diversos documentos a lo largo del tiempo han planteado preguntas similares al abordar la introducción de una nueva tecnología dentro de nuestra organización:

  • ¿Cuál es la limitación técnica con la que se encuentra actualmente? O en otras palabras, ¿qué está experimentando que le ha llevado a buscar una solución? Dé un ejemplo detallado.
  • ¿Qué estás tratando de hacer? Articular sus objetivos sin usar absolutamente ninguna jerga.
  • ¿Cómo se hace hoy en día, y cuáles son los límites de la práctica actual?

Aunque estas preguntas se han respondido para los contextos específicos en los que empezamos a utilizar Elixir, seguirán planteándose en cualquier momento en que aboguemos por que el lenguaje se utilice en un nuevo contexto.tener respuestas precisas para estas preguntas puede ser difícil, especialmente cuando se trata de referir procesos y patrones de un paradigma que puede ser desconocido para algunos.

Plan tentativo : En estos debates, me centraría en los aspectos de la tecnología que tienen el mayor efecto en las capacidades de nuestro producto y en la experiencia de nuestros usuarios. En Elixir, por ejemplo, podríamos centrarnos en las características de colaboración y retroalimentación en tiempo real que permite el modelo de concurrencia. En general, estos debates deberían centrarse en el negocio y en el cliente más que en los desarrolladores.

A medida que abordamos nuevos contextos, descubrimos si estos aspectos de la tecnología siguen justificando su uso.

Tecnológico: A largo plazo

Si bien esperamos que las preguntas anteriores sigan surgiendo para diversos contextos, hay más en la historia tecnológica de la introducción de un lenguaje. Cada tecnología, especialmente un lenguaje de programación, trae consecuencias a la forma en que escribimos el código. Aunque no podemos dar cuenta de los gustos individuales, podemos observar el camino proporcionado a los desarrolladores que tratan de utilizarlo.

Plan tentativo : En estas deliberaciones, me centraría en los aspectos de la tecnología que reportan beneficios cuantificables (o casi cuantificables) durante un largo período de tiempo.

Por ejemplo:

  • ¿Tiene la tecnología un conjunto particular de características que mejoran la velocidad y la felicidad del desarrollador?
  • ¿La tecnología hace que el mantenimiento y los arreglos de seguridad sean más fáciles con el tiempo en comparación con las alternativas?
  • ¿Tiene la tecnología características que hacen que los errores sean menos frecuentes o fáciles de detectar?
  • ¿Funciona bien la tecnología con la infraestructura existente de la organización?

A medida que más individuos prueban la tecnología y descubren su utilidad, descubrimos si estos aspectos mantienen a los desarrolladores interesados en usarla.

Social: Exposición

Una de las mayores aprensiones al introducir cualquier nueva tecnología en una organización es cuando la gente está mayoritariamente o completamente desconocida con ella. Usar un término o referirse a un lenguaje del que alguien ni siquiera ha oído hablar puede ser una molestia.

Plan tentativo : Hay varias vías por las que podemos hacer que el vocabulario que rodea a una tecnología sea familiar para un gran número de personas:

  1. tiene una reunión recurrente donde la gente comparte las cosas que han aprendido. A medida que aprendemos sobre la nueva tecnología mientras la implementamos en los primeros contextos, las charlas relámpago de esta reunión son una gran oportunidad para presentar. El límite de tiempo de cinco minutos nos permite mencionar rápidamente un pequeño desafío y cómo lo abordamos, todo ello mientras usamos los términos pertinentes.
  2. También tenemos un recurrente Gremio de Arquitectura donde las nuevas tecnologías se discuten todo el tiempo. En esta reunión, es más probable que hagamos una presentación más amplia sobre nuestra experiencia en la creación de un nuevo contexto o característica de principio a fin. La asistencia incluye la representación de muchos equipos, por lo que esta presentación es una valiosa oportunidad para exponer a la gente a la tecnología y abogar por su uso.

Si tienen éxito, estos esfuerzos inyectarán términos relevantes en el zeitgeist de la organización.

Social: Recursos

Utilizando un nuevo lenguaje como ejemplo, tenemos una colección de bibliotecas compartidas en C# y Node.js que facilitan la interfaz con los sistemas compartidos de $0027s. También hay un montón de contextos que pueden servir como ejemplos de uso de estas herramientas, lo que se suma a una relativa facilidad para que los equipos puedan iniciarse con uno de estos lenguajes en un nuevo contexto.

Plan tentativo : Para ayudar a abordar este déficit, podemos intentar lo siguiente:

  1. Crear análogos de las bibliotecas de servicios compartidos. Específicamente, el desarrollo de estas bibliotecas debe centrarse en el uso de código idiomático y en la documentación de las decisiones arquitectónicas. La paridad de características es menos preocupante al principio. Cada código base puede servir como una demostración de la resolución de problemas con la nueva tecnología.
  2. Proporcionar documentación escrita sobre cómo empezar – específicamente en esta organización. Aunque puede haber maravillosos recursos en otros lugares para empezar, estos documentos deben centrarse en la solución de los problemas particulares que enfrentamos en . El uso de un lenguaje familiar y la referencia a los problemas comunes puede ayudar mucho a reducir las barreras de entrada percibidas.

En general, el objetivo es hacer que la tecnología sea accesible para cualquier equipo que quiera probarla.

Social: Conocimiento más profundo

Aunque todos los esfuerzos mencionados son importantes, no garantizan necesariamente que haya un gran corpus de posibles colaboradores en los contextos que utilizan el nuevo lenguaje, marco, plataforma o herramienta. Ninguna tecnología puede sobrevivir en una organización si sus líderes en materia de conocimientos se limitan a un área de la empresa.

Plan tentativo : Queremos crear individuos que puedan evangelizar más y proporcionar liderazgo cuando los equipos finalmente se encuentren con problemas difíciles. Este es, de lejos, el proceso más lento, pero se puede hacer:

  1. Organizar talleres para los desarrolladores para aprender la tecnología y sus patrones. Los asistentes pueden variar desde aquellos que están casualmente interesados en aprender algo nuevo hasta aquellos que lo consideran seriamente para su trabajo diario. Estos talleres deben centrarse en la profundidad del conocimiento, prefiriendo los debates sobre arquitectura a un estudio completo de la sintaxis o las características. Todos los involucrados son ya desarrolladores de software y capaces de leer la documentación.
  2. Organizar sesiones de resolución de problemas más pequeñas para los desarrolladores. Las katas de código son una gran manera de ganar familiaridad y comodidad, y siempre podemos obtener desafíos de los problemas reales que enfrentan los equipos.

Estas sesiones tienen la oportunidad de llevar a casa los beneficios técnicos a largo plazo. Al final, esperamos encontrar que podemos crear todo el talento que necesitamos en lugar de contratarlo específicamente.

Pre-mortem

Imaginemos por un momento que nuestros esfuerzos por introducir la tecnología fracasan. En un ejercicio pre-mortem nos preguntamos: “¿Por qué no logró una adopción generalizada?” Aquí hay algunas respuestas potenciales:

  • No hicimos las cosas que se mencionan arriba.
  • A pesar de nuestros esfuerzos, los individuos simplemente no estaban interesados en aprender una nueva tecnología.
  • No se ha ocupado de algunas necesidades fundamentales de nuestro negocio.
  • Un núcleo de líderes tecnológicos dejó la compañía o se rindió a la evangelización.

Ciertamente esperamos que estas cosas no sucedan, pero al pensar en ellas, podemos maximizar nuestras posibilidades de éxito.

Conclusión

Queda por ver cómo crece el uso del Elixir en… Nos imaginamos que tendremos que abordar:

  • Desde una perspectiva técnica, ¿por qué deberíamos usar este lenguaje ahora mismo, para este contexto en particular?
  • Desde una perspectiva técnica, ¿por qué deberíamos seguir utilizando este lenguaje a largo plazo?
  • ¿Cómo exponemos a los individuos a la terminología relevante del lenguaje?
  • ¿Cómo nos aseguramos de que haya amplios recursos para empezar a usar el lenguaje en nuestra organización?
  • ¿Cómo creamos líderes en la tecnología para asegurarnos de que siga siendo viable a largo plazo?

Tanto si las cosas van bien como si no, aprenderemos mucho sobre la introducción de una nueva tecnología en los próximos años.

Recursos adicionales para introducir una tecnología:

Recursos adicionales para el Elixir:

  • Empezando con el Elixir, un curso de Nate Taylor
  • Elixir: Usando Funciones, Coincidencia de Patrones y el Operador de Tubería, un curso práctico de Carlos Souza
  • Elixir: Usando Iteración, Tuplas, Mapas, Control de Flujo y la Herramienta de Mezcla, otro curso práctico de Carlos Souza

Categorías: prácticasTags: lenguajes de programación, mejora continua