Aprendizaje clave

Después de terminar la compilación de MVP (Mínimo producto viable en español), los desarrolladores concluyeron que la Multiplataforma de Kotlin (KM) es mucho más eficiente y ahorra más tiempo que otras herramientas en el desarrollo de aplicaciones con plataforma cruzada como Flutter y React Native.

Nuestro proyecto de prueba con Multiplataforma de Kotlin

Un equipo de doce colaboradores de Distillery, con diversas habilidades, diseñaron y desarrollaron DoDos, una aplicación de lista de tareas para iOS y Android. El equipo creó la aplicación utilizando la Multiplataforma de Kotlin, una solución de desarrollo de plataforma cruzada y con función de lenguaje experimental.

Adoptaron la Multiplataforma de Kotlin para desarrollar la aplicación ya que querían utilizar la nueva tecnología y así, conocer las ventajas y desventajas para su posterior uso en proyectos de desarrollo de aplicaciones móviles.

Al responder a la pregunta sobre qué tipo de aplicación construirían, el equipo se decidió por una aplicación de lista de tareas. Aunque existen muchas aplicaciones similares, eligieron esta categoría por tres razones claves:

  1. Es una categoría de aplicaciones reconocida y respaldada en el mundo de los desarrolladores.
  2. Es sencillo implementar funciones básicas, la mejor manera de experimentar con una plataforma nueva (¡como KM!)
  3. El creador del producto, Maksim Kovalev, es un gran defensor de las aplicaciones de tareas pendientes y tiene un amplio conocimiento en este campo.

¿Por qué se eligió Multiplataforma de Kotlin?

La Multiplataforma de Kotlin permite a los desarrolladores ejecutar Kotlin en JavaScript, iOS y aplicaciones de escritorio nativas. El uso compartido de componentes lógicos reduce el tiempo dedicado a escribir y mantener el mismo código para diferentes plataformas y, al mismo tiempo, proporciona los beneficios de la programación nativa. El equipo eligió probar esta plataforma porque quería realizar lo siguiente:

  • Comprender el impacto de KM en el proceso de desarrollo de software.
  • Comprender las funciones de KM y cómo se podrían aplicar a los proyectos de los clientes.
  • Investigar las limitaciones de la plataforma y buscar soluciones.
  • Comparar y contrastar KM con otras soluciones de plataforma cruzada.

Diseño y desarrollo

Todo comenzó cuando Artyom Rudometkin, Líder del Departamento de Android en Distillery y Facilitador de proyectos, propone a sus compañeros de equipo la posibilidad de investigar la Multiplataforma de Kotlin como una solución de desarrollo para su nueva aplicación. Luego, el equipo creó un canal de Slack en el que realizaron sesiones de brainstorming sobre posibles conceptos.

Consolidaron su idea inspirándose en aplicaciones de listas de tareas ya existentes, como Google Tasks, TickTick y Microsoft ToDo. Una vez que finalizaron esta etapa, el equipo de diseño comenzó a trabajar en el diseño de UX / UI para la aplicación.

La diseñadora de UX / UI Yulia Krechetova utilizó la fase de diseño como “una oportunidad para experimentar con estilos y crear una interfaz de usuario que fuera completamente diferente de lo que hacemos para nuestros clientes”. No considera que el diseño de la aplicación esté completamente terminado, sino que se puede mejorar y evolucionar continuamente.

Al considerar los diseños potenciales, sabía la dirección que quería tomar debido al alcance básico de las funciones de la aplicación: “Elegí el brutalismo en la interfaz de usuario, que es un estilo de interfaz de usuario básico para interfaces, como sombras pixeladas, tipos de letra monoespaciadas, bordes afilados y contornos duros. Incluso intenté usar colores actuales para crear algo que se viera bien (y apropiado) para una mayor cantidad de usuarios”, dijo Yulia.

Mientras los diseñadores trabajaban en los conceptos de UX / UI, los desarrolladores de Android e iOS comenzaron a construir la aplicación usando KM. Mediante un trabajo que se realizó en el límite de tiempo establecido, el equipo identificó características clave para priorizar el lanzamiento de su producto MVP, y se guardaron funciones adicionales para lanzamientos futuros en el backlog del proyecto.

Luego de terminar la compilación de MVP, nuestros desarrolladores concluyeron que la Multiplataforma de Kotlin es mucho más eficiente y ahorra más tiempo que otras herramientas en el desarrollo de aplicaciones multiplataforma como Flutter y React Native.

Conceptos clave: Multiplataforma de Kotlin para Android

Beneficios y consideraciones clave, según nuestros desarrolladores de Android:

Ventajas

  • Buen ecosistema de bibliotecas multiplataforma
  • Muy buen soporte de Kotlin para Android 
  • Un desarrollo más rápido y sostenible

Desafíos

  • No hay utilidades comunes de Java equivalentes para ser utilizadas en código compartido y que sean compatibles con Kotlin Native e iOS (por ejemplo, el Calendario y la Fecha).
  • No funciona con algunas de las principales bibliotecas de Android (por ejemplo, Retrofit, Moshi o Dagger).

Conceptos clave: Multiplataforma de Kotlin para iOS

Beneficios y consideraciones clave, según nuestros desarrolladores de iOS:

Ventajas

  • Permite que los desarrolladores utilicen una base de código compartida en varias plataformas.
  • Permite que los desarrolladores combinen Kotlin y Swift / Obj-C, y decidan qué partes de la aplicación se escribirán con Kotlin y cuáles se escribirán en Swift / Objective-C.
  • Permite que los desarrolladores utilicen todos los marcos del sistema Obj-C y bibliotecas de terceros directamente en el código compartido de Kotlin.
  • Kotlin es un lenguaje moderno con el que los desarrolladores de dispositivos móviles se sienten cómodos.
  • Desarrollo más rápido y sostenible

Desafíos

  • Muchas funciones de Swift no son compatibles ni están disponibles en el código compartido (por ejemplo, estructuras, enumeraciones con valores asociados, genéricos avanzados, etc.)
  • Las asignaciones son limitadas y algunas clases útiles no están disponibles (por ejemplo, UIImage, Data, URL, etc.)
  • La depuración del código compartido debe realizarse en Android Studio, lo que puede dificultar la identificación de errores de iOS.
  • Los genéricos están en beta y son limitados.

Próximos pasos

El equipo disfrutó el trabajo con la Multiplataforma de Kotlin en este proyecto de desarrollo de aplicaciones de prueba, y lo ven como una opción sólida para crear soluciones de plataforma cruzada. Continúan desarrollando y experimentando otras funciones adicionales de KM y están interesados ​​en probar Kotlin Multiplatform Mobile en el futuro.

También esperan poder aplicar todo el conocimiento adquirido trabajando con la Multiplataforma de Kotlin en futuros proyectos.“[El equipo] experimentará con casos complicados e intentará crear una aplicación más compleja con KM. La idea de volver a utilizar la plataforma en el futuro parece prometedora”, dijo Artyom.