Cómo convencer a tus jefes o clientes para que usen Flutter
lunes, 19 de noviembre de 2018
Ha transcurrido más de un año desde que se publicó What’s Revolutionary about Flutter (todavía sigue siendo una buena introducción). Cuando escribí ese artículo, pocos desarrolladores de dispositivos móviles habían oído hablar de Flutter. Sin embargo, la realidad actual es muy diferente. Ahora, no puedo mantenerme al día con todos los artículos y videos de Flutter que son creados por una comunidad activa, vibrante e incluso explosiva . Los desarrolladores han descubierto Flutter y lo adoran. Aquí hay un GIF animado de solo una de las maravillosas apps creadas con Flutter, que pertenece a Reflectly:

Los desarrolladores suelen decir que uno de sus mayores desafíos actuales es convencer a la gerencia de su empresa (o si trabajan en una agencia o de modo independiente, a sus clientes) para que prueben Flutter. A estas personas que toman decisiones no les entusiasma tanto la idea de adoptar lo último en tecnología solo por capricho. Por el general, son expertos en esta área, pero esa no es su única preocupación. Quieren saber si usar un producto nuevo ayudará a su empresa a tener éxito; por ejemplo, atrayendo a nuevos clientes o reduciendo riesgos.
Este artículo está dirigido a dos grupos:
- A los desarrolladores que quieran ayudar a sus jefes a comprender por qué deben usar Flutter. Incluso si un desarrollador está familiarizado con Flutter, incluiremos argumentos sólidos para presentar como evidencia.
- A los desarrolladores que quieran decidir por sí mismos si deberían desarrollar un producto con Flutter.
¿Qué es Flutter?
El eslogan de Flutter (a modo de presentación breve) esDiseña increíbles aplicaciones nativas en tiempo récordDesglosemos esta frase en cuatro partes y discutamos una por una:
- Diseña
- Increíbles
- Aplicaciones nativas
- En tiempo récord
1. Diseña
Por el momento, Flutter se enfoca en la creación de aplicaciones móviles para iOS y Android.Sin embargo, hay una visión más amplia y a largo plazo que diferencia a Flutter de los marcos de trabajo para dispositivos móviles actuales: Flutter no es solo un marco de trabajo, sino un SDK completo para crear apps que interactúen mediante una pantalla. Eso significa que Flutter contiene todo lo necesario para crear una interfaz de usuario, incluido el procesador y los elementos que se procesarán (lo que Flutter llama widgets).
En muchos sentidos, Flutter es similar a los motores de juegos como Unity o Unreal, que también proporcionan su propio procesador y elementos (además de otro tipo de software). Sin embargo, en lugar de crear juegos, Flutter sirve para diseñar apps.
El hecho de que Flutter sea un SDK completo significa que puede portarse para que se ejecute en prácticamente cualquier hardware que incluya una pantalla. El procesador de Flutter utiliza Skia, un popular motor gráfico de código abierto que se puede usar fácilmente en diferentes dispositivos.

Si bien en Google nos hemos enfocados en las apps para dispositivos móviles, varios terceros han conectado puertos de Flutter a computadoras de escritorio (macOS que se muestran a la izquierda, Windows, Linux y otras), TVs (aquí hay un video de Flutter ejecutándose en una TV Nvidia Shield) y Raspberry Pis (que se muestra en la parte inferior izquierda). De forma interna, Flutter también se utiliza a fin de crear interfaces de usuario para Fuchsia.
Las apps se seguirán expandiendo más allá de los teléfonos celulares. Será común acceder a apps en múltiples dispositivos, como asistentes domésticos (Google Home Hub, Lenovo Smart Display, etc.), pantallas interactivas de vehículos, electrodomésticos (refrigeradores), wearables (relojes o ropa) y otros dispositivos de IoT. En 2017, había 8,400 millones de esos dispositivos en línea. En 2020 (menos de dos años), IDC estima que habrá más de 30,000 millones (en comparación con 5,000 millones de teléfonos celulares). Muchos de estos dispositivos tendrán pantallas interactivas. La arquitectura de Flutter tiene todo lo necesario para crear interfaces de usuario robustas y atractivas que puedan adaptarse a estos nuevos dispositivos.

Y, por supuesto, Flutter es gratuito y de código abierto.
2. Increíbles
¿Cómo puedes asegurarte de que la aplicación para dispositivos móviles que estás creando tenga éxito cuando compita con 3.8 millones de apps en Google Play Store y 2 millones en App Store? Incluso si logras convencer a un usuario para que descargue tu app, solo hay un 3% de probabilidades de que la siga usando de forma activa después de 30 días. Según Gartner Inc., solo el 0.01% de todas las apps publicadas se convierte en un éxito financiero. Los desarrolladores necesitan toda la ayuda que esté a su alcance.

Los estudios demuestran que es muy importante incluir un diseño atractivo. Si analizas las apps para dispositivos móviles más populares de los últimos años, notarás que cada una tiene su propia estética visual. Además, las apps atractivas ganan premios, lo que también sirve como publicidad.
A modo de ejemplo, entre las apps creadas con Flutter que se muestran a la izquierda, aparecen Alibaba (la empresa de comercio electrónico más grande del mundo), Topline (la app de grabación de Abbey Road Studios) y una demostración de 2Dimensions, que incluye increíbles animaciones en tiempo real.
Cada vez más, las empresas quieren que las apps que diseñan complementen su marca, al igual que lo hacen con su sitio y aplicaciones web, lo que requiere un alto grado de personalización.
Por último, los diseñadores suelen tener grandes ideas que, para el momento en que se implementan, están muy diluidas debido a las limitaciones del kit de herramientas. Flutter te permite decirle a tu diseñador que podrá crear apps que implementen su visión.
Puedes ver más apps creadas con Flutter en el escaparate (y muchísimas otras en el sitio de It’s All Widgets). Entre estas, se incluye la visualmente increíble app de diario Reflectly, que se muestra al principio de este artículo con un GIF animado, pero que deberías instalar en tu dispositivo desde la tienda de aplicaciones correspondiente a tu teléfono Android o Apple. Asegúrate de leer acerca de qué ocurrió cuando implementaron Flutter en su app.
3. Aplicaciones nativas
Es posible que, a esta altura, haya desarrolladores sorprendidos. En el mundo de las apps para dispositivos móviles, se usa el término "aplicación nativa" con el objetivo de definir a la aplicación que se orienta a las API de plataformas de forma directa usando lenguajes específicos. Y solo para confundirte aún más, los marcos de trabajo como React Native y Xamarin usan el término "nativo" para indicar que pueden usar los widgets de la plataforma.Otras áreas de la informática no usan el término "nativo" con el significado que se le atribuye en el campo de los dispositivos móviles. Por ejemplo, puedes instalar Linux en computadoras Windows y macOS (y muchos otros tipos), pero no llamarías "nativo" a un sistema operativo como Windows o macOS, ni solución "multiplataforma" o "híbrida" a Linux. Se considera que Linux es un sistema tan nativo como Windows o macOS porque realmente lo es.
Una definición más precisa de "nativo" en el campo de la informática es:
"Diseñado para un sistema específico o integrado en este, que denota el lenguaje asociado con un procesador, computadora o compilador determinado, junto con los programas escritos en él".Las apps de Flutter se compilan en código de máquina nativa (ARM), tanto en iOS como en Android.
Las apps nativas ofrecen muchísimas ventajas. Se inician más rápido y, lo que es más importante, se ejecutan de forma fluida y son menos propensas a sufrir fallas o bloqueos (lo que no es atractivo). Las aplicaciones nativas también le dan al desarrollador más control sobre el comportamiento de su contenido.
Para aprovechar las ventajas de las aplicaciones nativas, los desarrolladores suelen crear dos apps separadas utilizando herramientas y lenguajes diferentes. A menudo, esto implica tener equipos de desarrolladores distintos para cada plataforma, que luego deben coordinarse, lo que encarece los costos significativamente, aumenta los riesgos y ralentiza el tiempo de comercialización. Por el contrario, Flutter permite a los desarrolladores consolidarse en un solo código base, unificar sus equipos de desarrollo, reducir riesgos y acelerar el tiempo de comercialización mientras se aprovechan los beneficios de una aplicación nativa.

¿Qué ocurre con los widgets? Debido a que Flutter proporciona sus propios widgets, es posible que tengas miedo de que las apps se vean o se sientan diferentes a las desarrolladas con los widgets y herramientas de la plataforma.
A la izquierda, la pantalla de configuración de la plataforma iOS se compara con la misma pantalla creada con Flutter. A pesar de que hay algunas pequeñas diferencias en el nivel de píxeles, se puede concluir que Flutter facilita la creación de pantallas que se ven y se sienten como las de la plataforma.
Debido a que las plataformas cambian entre las diferentes versiones del sistema operativo, incluso una aplicación nativa de la plataforma se verá diferente en las distintas versiones de un SO. Por lo tanto, no tiene sentido que Flutter intente "mostrar los píxeles de forma perfecta".
Los widgets de Flutter se adaptan a la plataforma en la que se ejecutan para proporcionar la apariencia adecuada, incluidos los íconos, los colores, el diseño, las fuentes, el comportamiento de desplazamiento, etc. En lugar de "mostrar los píxeles de forma perfecta", un objetivo aún más importante para una app de Flutter es cumplir con los lineamientos de diseño de la plataforma y que el usuario la sienta cómoda.
Las apps de Flutter logran una alta fidelidad porque este es un SDK completo que se procesa directamente en el lienzo de la plataforma. Tu app no depende de los widgets, las fuentes y demás elementos de la plataforma que podrían modificarla en segundo plano.
Flutter también evita la necesidad de usar bibliotecas de compatibilidad. Por ejemplo, aquí hay una app de Flutter que usa widgets de Material Design en un teléfono con Android Jelly Bean (4.1.2). Como este teléfono salió al mercado dos años antes de que se creara Material Design, no tiene widgets incorporados. Sin embargo, tu app de Flutter se ejecutará de la misma manera que en un teléfono más moderno con un sistema operativo más reciente, y se verá genial.

Sin Flutter, tendrías que resolver estos problemas por tu cuenta, lo que implicaría realizar más pruebas en versiones anteriores del sistema operativo e implementar soluciones alternativas para plataformas que no proporcionan las funciones que utiliza tu app. Según los desarrolladores, es mucho más fácil ejecutar pruebas usando Flutter.
En resumen, Flutter no solo ofrece las ventajas de las aplicaciones nativas, sino que también proporciona importantes beneficios adicionales:
- Las apps de Flutter se ejecutan en versiones anteriores del SO de todas las plataformas. Por ejemplo, si el desarrollador prueba su app en una versión reciente de Android, se verá igual en versiones anteriores. Esto permite que, con muchas menos pruebas, las apps de Flutter se ejecuten correctamente en teléfonos antiguos.
- Las nuevas versiones del SO de la plataforma no romperán tus apps, a menos que un cambio afecte a un elemento del que dependa Flutter (sería un caso extremadamente raro de un error de Flutter, no de tu app).
- Tu app no se verá diferente debido a las modificaciones hechas al sistema operativo por fabricantes o proveedores (un ejemplo común son los cambios en las fuentes predeterminadas).
- Lo más importante es que Flutter le da al desarrollador un control completo sobre el aspecto de su app, hasta en lo relacionado a píxeles, en todas las plataformas y versiones.
- Si lo deseas, puedes hacer que una app de Flutter tenga un aspecto diferente en iOS y Android. Incluso si no lo quieres, los widgets de Flutter se adaptan a los lineamientos de diseño de cada plataforma.
- Para ello, Flutter usa un código base único para ambas plataformas. También puedes agregar código nativo para cada plataforma a una app de Flutter, si así lo deseas.
4. En tiempo récord
Por último, aunque no menos importante, Flutter te permite desarrollar mejores apps más rápido. La función más popular (e incluso publicitada) de Flutter es su recarga de estado en caliente. No solo es increíblemente rápida (por lo general, tarda menos de un segundo), sino que es estable, lo que significa que si cambias líneas de código en lo más profundo de tu app, después de recompilar no tendrás que navegar de nuevo al mismo lugar o recrear de forma manual el estado para ver el efecto del cambio.
La recarga de estado en caliente de Flutter es posible gracias a la tecnología de compilación avanzada (desarrollada por algunas de las mismas personas que crearon el compilador V8 para JavaScript y Strongtalk para Smalltalk) y al hecho de que Flutter es nativo y se basa en vistas reactivas.
Además de acelerar los procesos, muchos desarrolladores informan que Flutter cambia drásticamente la forma en que codifican, ya que pueden probar nuevas ideas y diseños rápido, lo que les permite implementar los cambios solicitados por las partes interesadas delante de estas.
También descubrimos que ayuda a los diseñadores a obtener exactamente lo que quieren. Pueden jugar con varios parámetros hasta que ese contenido se vea bien. De hecho, los diseñadores que saben cómo usar CSS en aplicaciones web nos dicen que les resulta fácil aprender a modificar diseños en Flutter.
A modo ilustrativo, mira una app de Flutter codificada en tiempo real, o prueba Flutter para crear una aplicación de verdad. Únete a un hackatón de Flutter y descubre qué tan rápido puedes dominarlo y crear apps en su plataforma.
Como se discutió en la sección anterior, las apps de Flutter también requieren menos pruebas, lo que significa que puedes probar y publicar nuevas funciones para tu app mucho más rápido. Por ejemplo, JD.com nos dice lo siguiente:
Desarrollamos las mismas funciones con la mitad de los recursos que solíamos usar. Con la misma cantidad de ingenieros, cada versión ahora puede tener más funciones.Del mismo modo Alibaba nos dice que al usar Flutter, el tiempo promedio para agregar una nueva función pasó de un mes a dos semanas.

En la app de Hamilton, los desarrolladores hicieron un cambio importante en ella la noche anterior a su lanzamiento, seguros de que sería estable. Esa app, diseñada en solo tres meses, fue destacada en ambas tiendas de aplicaciones. Además, Flutter hace que sea más fácil para ellos continuar agregando nuevas funciones con frecuencia, lo que permite mantener activos a sus usuarios y con ganas de más.
Así se diseña una app para dispositivos móviles exitosa.

Con Flutter, no solo es fácil y rápido construir y modificar apps, sino que también es sencillo actualizar sus widgets. Una preocupación común acerca de que Flutter no use los widgets de la plataforma es que tendrá dificultades para mantenerse al día con las plataformas a medida que lancen nuevos widgets o mejoren los antiguos.
Sin embargo, cuando Apple anunció el iPhone X y su recorte, Flutter agregó compatibilidad con esa pantalla antes de que se lanzara el teléfono.
Y esto no solo se aplica a funciones de iOS. Cuando Google anunció una renovación significativa de Material Design en I/O 2018, Flutter ya estaba actualizado para implementar las nuevas funciones. Todo fue posible gracias a la capacidad de personalizar Flutter rápidamente.
A modo de conclusión, los desarrolladores nos cuentan que son entre dos y tres veces más productivos con Flutter, y que crean mejores apps que tienen más éxito.
Riesgos y limitaciones
Todas las herramientas tienen aspectos negativos, y Flutter no es la excepción. Estas son algunas de las razones por las que Flutter podría no ser la mejor herramienta para una app específica.Debido a que las apps de Flutter incluyen los widgets y el procesador de este SDK, son un poco más grandes que las apps que utilizan los widgets y el procesador de la plataforma. Hasta hace unos meses, una app de Flutter tenía un tamaño mínimo de 6.7 MB, pero se redujo a poco más de 4 MB y tenemos pensado hacer más optimizaciones en el futuro.
Una de las principales ventajas de Flutter es que se puede usar un código base único para lanzar apps en ambas plataformas móviles (aunque Flutter también se usa para crear aplicaciones en una sola plataforma). Sin embargo, hay algunas apps que están estrechamente ligadas a una plataforma específica o que funcionan como contenedor de una vista proporcionada por la plataforma, como un servicio en segundo plano que se usa para enviar notificaciones. Si bien es posible escribir estas apps en Flutter, no se apreciarán tanto los beneficios de ello.
Una pregunta que nos suelen hacer es si Flutter está aquí para quedarse. Hay varias razones por las que la respuesta es un enfático sí. Primero, Google usa Flutter, incluso para apps internas y orientadas al cliente (y está desarrollando muchas más). Por ejemplo, la app para dispositivos móviles recientemente lanzada de Google Ads (antes llamada AdWords) está escrita en Flutter. Por lo tanto, Google está detrás de Flutter y bastante comprometido con su éxito.
En segundo lugar, el hecho de que las apps principales se hayan construido en dos plataformas separadas significa que las empresas consideran que es menos riesgoso, por ejemplo, crear primero una app para iOS y, luego, una para Android más adelante si hay suficiente demanda. Con Flutter, las apps pueden lanzarse simultáneamente en ambas plataformas con funciones prácticamente idénticas, evitando ese riesgo y aumentando el mercado potencial de una app. Esto puede ser un gran beneficio para Android.
Otro problema potencial es que Flutter es relativamente nuevo. Por lo tanto, le llevará tiempo ponerse al día con las herramientas establecidas, tanto en términos de funciones como de asistencia comunitaria. En la actualidad, hay algunas funciones proporcionadas por las plataformas que Flutter tardará en implementar. Sin embargo, Google está haciendo todo lo posible para que Flutter las incorpore.
Para obtener información más detallada sobre por qué vale la pena probar Flutter, lee What’s Revolutionary about Flutter y Why Flutter uses Dart. También te recomendamos que consultes los resultados de nuestro último estudio de usuarios para ver qué se piensa sobre Flutter.
Cómo comenzar
Cuando estés listo para probar Flutter, ten en cuenta lo siguiente:- Consulta https://flutter.io/get-started/, una guía que te ayudará a instalar Flutter, configurar el editor, realizar una prueba y escribir tu primera app.
- Mira algunos videos de Flutter en YouTube.
- Hay un conjunto de guías para desarrolladores familiarizados con uno (o más) de los siguientes sistemas: Android, iOS, React Native y Xamarin.
- Si eres nuevo en el campo del desarrollo móvil, también puedes consultar algunos instructivos, entre los que se incluyen: Building Layouts in Flutter, Add Interactivity y A Tour of the Flutter Widget Framework (incluye los principios reactivos, si no estás familiarizado con ellos).
- Un recurso valioso es la guía de soluciones de Flutter. También consulta el catálogo de widgets y las Preguntas frecuentes.
- Del mismo modo, consulta las apps disponibles en It’s All Widgets. Muchas de estas son de código abierto, por lo que podrás ver el código de las apps publicadas. Y, una vez que escribas las tuyas, asegúrate de enviarlas para que se las incluya.
- Para obtener una lista de los mejores artículos sobre Flutter en tu bandeja de entrada semanalmente, suscríbete a Flutter Weekly.
- Hay un montón de encantadores codelabs para Flutter, y si eso no es suficiente, hay un curso de video gratuito en línea sobre Flutter de Udacity.
- Por último, consulta otra documentación aquí.
Conclusiones
Flutter proporciona un proceso de desarrollo de alta velocidad que aumenta tu productividad y te ayuda a crear mejores apps. Es un conjunto de herramientas expresivas, altamente flexibles y personalizables que te brinda un amplio control. También permite crear, desde un solo código base, aplicaciones nativas para iOS y Android que son rápidas y fluidas.Con Flutter, ahorrarás dinero y reducirás riesgos. Es gratis, de código abierto y te ayudará a obtener más ingresos. Puedes orientar tu contenido simultáneamente a iOS y Android, así como crear mejores apps en menos tiempo.
Según los desarrolladores (y este es uno de mis aspectos favoritos), Flutter hace que desarrollar contenido para dispositivos móviles sea divertido. Un destacado 92% de los desarrolladores que usan Flutter dicen que están satisfechos o muy satisfechos con él. Este número ha ido aumentando constantemente, y recuerda que estos resultados corresponden a las versiones Alfa y Beta de Flutter, anteriores a la versión 1.0.
Por último, Flutter mira hacia el futuro. Es el único kit de herramientas que admite vistas reactivas, que permite crear mejores apps y que incluye funciones como la recarga de estado en caliente superrápida. Y, debido a que es un SDK completo, puede seguir siendo relevante, ya que podrá portarse a nuevas plataformas a medida que se vuelvan populares.