Menú

Lenguajes & Frameworks

Adoptar?

  • React Hooks ha introducido un nuevo enfoque para gestionar la lógica con estado; dado que los componentes en React siempre han sido más cercanos a las funciones que a las clases, Hooks ha tomado esto en cuenta y ha llevado el estado a las funciones, en lugar de llevar funciones como métodos al estado con clases. En base a nuestra experiencia, Hooks mejora la reutilización de funcionalidades entre componentes y la legibilidad del código. Dadas las mejoras en la capacidad de realización de pruebas de Hooks, por el uso de React Test Renderer y React Testing Library, y el crecimiento del apoyo de la comunidad, lo consideramos nuestro enfoque preferido.

    Historia
  • El mundo de JavaScript evoluciona rápidamente, y a medida que adquirimos más experiencia en el uso de un framework, nuestras recomendaciones van variando. La Biblioteca de Pruebas de React es un buen ejemplo de un framework que con un uso más profundo, ha ido eclipsando otras alternativas para convertirse en la opción por defecto a la hora de probar frontends basados en React. A nuestros equipos les gusta el hecho de que los tests escritos con este framework son menos frágiles que con frameworks alternativos como Enzyme, porque se les anima a probar las relaciones de los componentes individualmente en lugar de probar todos los detalles de implementación. Esta forma de pensar traída por Testing Library en la cual la biblioteca de pruebas de react es una parte, vale resaltar que esta familia de librerías también incluye otras como por ejemplo : Angular y Vue.js.

    Historia
  • Vue.js ha llegado a ser uno de los marcos de trabajo JavaScipt para frontend preferidos, confiables y que se ha utilizado con éxito entre nuestra comunidad. Aunque hay otras alternativas con buena adopción como React.js, la simplicidad del diseño de la API de Vue.js, su clara segregación de directivas y componentes (un archivo para cada componente de código) y su gestión simplificada de estados lo han convertido en una opción atractiva frente a otras.

    Historia

Probar?

  • Desde que mencionamos por primera vez CSS-en-JS como una técnica emergente en el 2007, se ha vuelto mucho más popular, y es una tendencia que también vemos en nuestro trabajo. Con una sólida experiencia de producción en nuestro historial, ahora podemos recomendar CSS-en-JS como una técnica a probar. Un buen punto de partida es el marco de trabajo denominado componentes con estilos (styled components), que mencionamos en nuestro último Radar. A pesar de todos los aspectos positivos que tiene esta técnica, puede haber una desventaja al utilizar CSS-en-JS: el cálculo de los estilos en tiempo de ejecución puede ocasionar retardos notables al usar la aplicación. Con Linaria ahora vemos una nueva clase de marcos de trabajo que fueron creados con este problema en mente. Linaria utiliza una serie de técnicas para mover la mayor parte de la carga sobre el rendimiento al tiempo de construcción. Desafortunadamente, esto trae consigo algunas dificultades, especialmente la falta de soporte para los estilos dinámicos en IE11.

    Historia
  • Con el uso extendido de Kotlin, nuestros equipos de desarrollo han ganado experiencia con más marcos de trabajo y librerías diseñadass específicamente para este lenguaje, en lugar de usar marcos de trabajo y liberías de Java con Kotlin. Aún cuando ha estado presente por un tiempo, Exposed ha llamado nuestra atención por ser un mapeador objeto-relacional (ORM) ligero. Exposed tiene dos variantes para el acceso a las bases de datos: un DSL interno con tipado seguro (typesafe) basado en SQL y una implementación del patrón de objetos de acceso a datos (DAO). Tiene las características que se esperan de un ORM maduro como el manejo de referencias de muchos a muchos, carga temprana de datos, y soporte para juntarlas (joins) entre entidades. Nos gusta también que la implementación trabaja sin clases intermedias (proxies) y no depende del uso de reflexión, lo que resulta beneficioso para el rendimiento.

    Historia
  • GraphQL Inspector te permite comparar cambios entre 2 esquemas de GraphQL. En el pasado hemos advertido sobre el uso de GraphQL, y ahora nos alegra ver algunas mejoras en las herramientas que lo rodean. La mayoría de nuestros equipos continúa usando GraphQL para la agregación de recursos en el servidor, y ahora al introducir el Inspector de GraphQL en sus pipelines de integración continua, somos capaces de identificar potenciales cambios de última hora en los esquemas de GraphQL.

    Historia
  • Dada nuestra experiencia en que las pruebas son las únicas especificaciones de API que realmente importan, siempre estamos atentos a nuevas herramientas que ayuden al desarrollo guiado por pruebas. Karate es un framework para pruebas de interfaz de programación de aplicaciones (API) con la característica singular de que los tests se escriben directamente en un lenguaje de sintaxis basado en Gherkin, sin depender de un lenguaje de programación de propósito general para implementar su comportamiento. Karate utiliza un lenguaje específico de dominio para describir pruebas de API basadas en HTTP. A nuestros equipos les agrada la especificación legible que se consigue con esta herramienta, recomiendan conservar las pruebas realizadas con Karate en los niveles superiores de la pirámide de pruebas y no sobreutilizarlo haciendo assertions demasiado detalladas.

    Historia
  • Con el mayor uso de Kotlin para el desarrollo móvil y de aplicaciones de servidor, el ecosistema asociado continúa evolucionando. Koin es un marco de trabajo de Kotlin que gestiona uno de los problemas más comunes en el desarrollo de software: la inyección de dependencias. Aunque se puede elegir entre una variedad de marcos de trabajo para la inyección de dependencias para Kotlin, nuestros equipos han llegado a preferir la simplicidad de Koin. Koin evita el uso de anotaciones e inyecta dependencias a través de constructores o imitando la inicialización diferida (lazy initialization) para que los objetos sean inyectados solo cuando se les necesite. Esto contrasta con el marco de trabajo estáticamente compilado Dagger para Android. A nuestras personas desarrolladoras les gusta la naturaleza ligera de este marco de trabajo y las capacidades incorporadas para la escritura de pruebas.

    Historia
  • El crecimiento de la popularidad de Node.js y las tendencias como Node en exceso, han llevado al uso de Node.js para el desarrollo de aplicaciones de negocio. Con frecuencia vemos problemas de escalabilidad y mantenibilidad en aplicaciones grandes basadas en JavaScript. NestJS es un marco de trabajo basado en TypeScript que hace que el desarrollo de aplicaciones Node.js sea más seguro y menos suceptible a errores. NestJS es prescrictivo y trae a la mesa, de manera predeterminada, la aplicación de los principios SOLID y una arquitectura inspirada en Angular. NestJS es uno de los marcos de trabajo que nuestros equipos utilizan regularmente al construir microservicios con Node.js; permite la creación de aplicaciones que se puedan probar, sean escalables, con bajo acoplamiento y fácilmente mantenibles.

    Historia
  • Nuestros equipos han venido usando, y les sigue gustando, el framework de machine learning PyTorch, y muchos equipos prefieren PyTorch sobre TensorFlow. PyTorch expone el funcionamiento interno de ML que TensorFlow oculta, haciendo que sea más fácil depurarlo, y contiene componentes con los que la mayoría de las personas programadoras están familiarizadas, como bucles y acciones. Los lanzamientos recientes han mejorado el desempeño de PyTorch, y nosotros lo hemos estado usando con éxito en proyectos en producción.

    Historia
  • Rust continúa ganando popularidad. Hemos tenido intensas discusiones sobre qué lenguaje es mejor, entre Rust, C++ o Go, sin un claro vencedor. Sin embargo, desde que lo mencionamos en la anterior edición del Radar, nos complace ver que Rust ha mejorado significativamente con la adición de nuevas APIs y su estabilización, incluyendo el soporte asíncrono avanzado. Además, Rust ha inspirado el diseño de nuevos lenguajes. Por ejemplo, el lenguaje Move de Libra imita la manera en la que Rust gestiona la memoria para administrar recursos, asegurando que dichos recursos digitales no pueden ser copiados o descartados implícitamente.

    Historia
  • Sarama es una biblioteca cliente escrita en Go para Apache Kafka. Si estás desarrollando APIs en Go, encontrarás que Sarama es bastante sencilla de configurar y manejar, ya que no depende de ninguna biblioteca nativa. Sarama tiene dos tipos de APIs: un API de alto nivel para la producción y consumo fácil de mensajes, y un API de bajo nivel para controlar la transmisión de los datos.

    Historia
  • Apple ha dado un gran paso adelante con su nuevo framework SwiftUI para implementar interfaces de usuario en las plataformas macOS e iOS. Nos gusta que SwiftUI va más allá de la relación un tanto rudimentaria entre Interface Builder y Xcode y adopta un enfoque coherente, declarativo y centrado en el código. Ahora se puede ver el código y la interfaz resultante lado a lado en Xcode 11, mejorando mucho la experiencia de desarrollo. El framework SwiftUI se inspira en el mundo de React.js que ha dominado el desarrollo web en los últimos años. Los valores inmutables en los modelos de vista y un mecanismo de actualización asíncrono crean un modelo unificado de programación reactiva. Esto se convierte, para los equipos de desarrollo, en una alternativa completamente nativa, similar a marcos de trabajo reactivos como React Native o Flutter. SwiftUI definitivamente representa el futuro para el desarrollo de interfaces de usuario para Apple y a pesar de ser nuevo, ha mostrado sus beneficios. Hemos tenido una gran experiencia con este marco de trabajo y su suave curva de aprendizaje. Es importante señalar que se debe conocer muy bien el caso de uso antes de empezar a usar SwiftUI, ya que no es compatible con iOS12 o versiones anteriores.

    Historia

Evaluar?

  • Con el objetivo de mejorar el rendimiento de nuestro código, las herramientas de perfilado son útiles para identificar cuellos de botella o retardos en el código que pueden ser difíciles de identificar, especialmente en operaciones asíncronas. Clinic.js Bubbleprof representa visualmente las operaciones asíncronas dentro de los procesos de Node.js, dibujando un mapa de los retardos en el flujo de la aplicación. Nos gusta esta herramienta porque ayuda a los equipos de desarrollo a identificar y establecer prioridades sobre qué mejorar en el código.

    Historia
  • Aún existen algunas brechas de herramientas cuando se aplican buenas prácticas de ingeniería de software en la ingeniería de datos. Uno de nuestros equipos, al intentar automatizar las revisiones de calidad de datos entre las distintas etapas de un pipeline de datos, se sorprendió cuando apenas encontraron herramientas en este espacio. Finalmente, se decidieron por usar Deequ, una biblioteca para escribir pruebas para conjuntos de datos que se asemejan a las pruebas unitarias. Deequ está construido sobre Apache Spark, y aunque es publicado por AWS Labs puede ser usado en entornos diferentes a AWS.

    Historia
  • En la anterior edición del Radar presentamos BERT - un hito en el panorama de Procesamiento de Lenguaje Natural. El año pasado, Baidu publicó ERNIE que mejoró BERT en siete tareas de comprensión del lenguaje GLUE y en las 9 tareas NLP para el lenguaje chino. ERNIE, como BERT, ofrece modelos de lenguaje no supervisados pre-entrenados, que pueden ser ajustados agregando capas de salida para crear modelos en estado del arte para una variedad de tareas NLP. ERNIE se diferencia de los métodos pre-entrenados tradicionales en que es un framework de pre-entrenamiento continuo. En lugar de entrenar con un pequeño número de objetivos de pre-entrenamiento, puede introducir constantemente una gran variedad de tareas de pre-entrenamiento para ayudar al modelo a aprender representaciones del lenguaje de manera eficiente. Estamos muy emocionados sobre los avances en NLP y estamos deseando experimentar con ERNIE en nuestros proyectos.

    Historia
  • MediaPipe es un marco de trabajo para construir pipelines aplicados de aprendizaje automático multimodales (como de video, audio, datos de series de tiempo, etc.), y para diferentes plataformas (por ejemplo, Android, iOS, Web, y dispositivos perimetrales). MediaPipe provee múltiples características, incluyendo detección de rostros, seguimiento de manos, detección de gestos, y detección de objetos. Aunque MediaPipe se implementa principalmente en dispositivos móviles, se comenzó a mostrar en el navegador gracias a WebAssembly y XNNPack ML Inference Library. Estamos explorando MediaPipe para algunos casos de uso de realidad aumentada y nos gusta lo que hemos visto hasta ahora.

    Historia
  • Las herramientas y marcos de trabajo de CSS ofrecen componentes prediseñados para resultados rápidos; sin embargo, luego de un tiempo, pueden complicar la personalización. Tailwind CSS propone un enfoque interesante al proporcionar clases utilitarias de CSS de bajo nivel para crear bloques de construcción sin estilos predefinidos y apuntando a una fácil personalización. La amplitud de las utilidades de bajo nivel permiten evitar escribir cualquier clase o CSS por tu cuenta lo que lleva a una base de código más mantenible a largo plazo. Parece que Tailwind CSS ofrece el correcto balance entre reusabilidad y personalización para construir componentes visuales.

    Historia
  • Si lo que se requiere es la ingesta de datos hacia un tópico de Kafka, piensa en Tamer, que se autodenomina "un conector JDBC domesticado para el origen de datos para Kafka". A pesar de ser un marco de trabajo relativamente nuevo, hemos notado que Tamer es más eficiente que el conector JDBC propio de Kafka, especialmente cuando se trata de grandes volúmenes de datos.

    Historia
  • La comunidad de Golang ha tenido su cuota de escépticos en cuanto a la inyección de dependencias, debido en parte a la confusión del patrón con frameworks específicos; y a las personas desarrolladoras con experiencia en programación de sistemas generalmente no les gusta el impacto en tiempo de ejecución causado por la reflexión. Entonces apareció Wire, una herramienta de inyección de dependencias en tiempo de compilación que genera código y conecta los componentes. Wire no produce impactos adicionales en tiempo de ejecución y su gráfico de dependencias estático es fácil de comprender. Ya sea que escribas código manualmente o utilices algún marco de trabajo, recomendamos utilizar inyección de dependencias para propiciar diseños modulares y verificables.

    Historia
  • Ya habíamos destacado varias bibliotecas para el manejo de estado en ediciones anteriores del Radar, pero XState adopta un enfoque ligeramente distinto. Es un marco de trabajo simple para JavaScript y TypeScript que permite crear máquinas de estado finito y visualizarlas como mapas de estado. Se integra con los marcos de trabajo reactivos más populares de JavaScript, como (Vue.js, Ember.js, React.js y RxJS y está basado en el estándar para máquinas de estado finito de la W3C. Otra característica notable es la serialización de las definiciones de máquina. Algo que nos ha resultado útil al crear máquinas de estado finito en otros contextos (particularmente al escribir lógica para juegos) es la posibilidad de visualizar los estados y sus posibles transiciones; nos gusta que el visualizador de XState lo vuelve realmente fácil.

    Historia

Resistir?

  • No acostumbramos a mover herramientas obsoletas a Resistir en el Radar. Sin embargo, nuestros equipos creen firmemente que Enzyme ha sido ya reemplazado, en el campo de las pruebas unitarias de componentes de UI para React, por React Testing Library. Los equipos que usan Enzyme han visto que esta herramienta se centra en probar las partes internas de los componentes, lo que genera pruebas frágiles y difíciles de mantener.

    Historia
¿No encuentras aquello que querías ver?

Cada edición del radar incluye blips que contienen la información encontrada durante los últimos seis meses. Es posible que ya hayamos incluido el tema que estás buscando en radares anteriores. Hay veces que omitimos algunos temas debido a que hay demasiado de que hablar. O también, puede faltar algo debido a que en el radar buscamos reflejar nuestra experiencia, no lo basamos en un análisis exhaustivo del mercado.

Nuevo,Modificado,Ningún cambio