Esta es una pregunta que recibo muy a menudo: ¿qué debería aprender, Flutter o Kotlin? ¿Nativo o multiplataforma? ¿Para qué aprender nativo si con Flutter puedo hacer Android y iOS?
En este artículo te cuento mi opinión y te digo cuál deberías aprender en función de tu situación actual.
Flutter vs Kotlin
Hoy me voy a centrar en desmontar todos los posibles puntos a favor y en contra sobre cada una de las distintas opciones, y también decirte cuál es mi opinión y qué aprendería yo en función de la situación en la que te encuentres ahora mismo.
Así que aquí vamos a empezar por el principio: para empezar, la pregunta está mal porque no podemos comparar Kotlin, que es un lenguaje con Flutter, que es una tecnología.
Kotlin es un lenguaje que es multiplataforma y por tanto se puede utilizar en muchos ámbitos distintos, desde hacer Android, que es lo más habitual, hasta desarrollar páginas web con Kotlin JS. También se puede utilizar para servidor, e incluso aplicaciones en iOS.
Tiene un montón de utilidades y por tanto comparar un lenguaje con una plataforma no tiene sentido.
Lo lógico sería entonces comparar Android nativo con Flutter, que sería la comparación un poco más justa. Pero como siempre me hacéis esta pregunta de esta forma, es mejor que la encontréis con vuestras propias palabras.
Vale, pero entonces ¿Aprendo desarrollo nativo en Android o Flutter?
Así que aquí vamos a comparar si debería aprender desarrollo nativo con Kotlin o aprender desarrollo multiplataforma con Flutter.
Mi respuesta corta seria: debes aprender desarrollo nativo con Kotlin .
Y ahora te voy a desarrollar por qué opino esto y en qué casos me plantearía la otra opción.
Razones para aprender Android nativo con Kotlin frente a Flutter
Para empezar, piensa que a día de hoy prácticamente todas las aplicaciones en el mundo Android están desarrolladas de forma nativa.
Puede haber algunas pocas que estén con React Native, algunas menos que estén desarrolladas con Futter y, por tanto, es algo que a la hora de buscar empleo no va a ser comprable.
Razón 1: Cantidad de oportunidades laborales
Hoy en día va a haber muchas posiciones más en desarrollo nativo que en Flutter, incluso aunque Flutter en los próximos años siga creciendo.
Mi predicción es que va a hacerlo.
Lo más probable es que incluso si Flutter tiene muchísimo éxito, para llegar a igualar las oportunidades laborales de Android Nativo tengan que pasar bastantes años.
Si quieres, vamos a hacer una comprobación a día de escribir este artículo. Buscando el número de empleos en Kotlin en LinkedIn, encontramos que a día de hoy tenemos 555 resultados solo en España:
Si hacemos lo mismo con Flutter, nos encontramos 155 resultados:
Además, si entras en las ofertas de Flutter, te encontrarás con que la mayoría de ellas también te piden conocimientos en desarrollo nativo en Android con Kotlin.
Razón 2: La base de código escrita en nativo es enorme
¿Y por qué hay esta diferencia? Muy sencillo. Porque Flutter es una tecnología que todavía es muy nueva, y por tanto hay mucha reticencia a usarlo. No se conocen todos los posibles casos en los que Flutter se nos puede quedar corto.
Y por otro lado, en cuanto a Kotlin con Android, también hay varios motivos.
Primero, es la forma oficial de desarrollar aplicaciones Android en nativo.
Y por otro lado, llevamos muchísimo tiempo desarrollando aplicaciones Android y toda esa base de código no se va a poder migrar fácilmente a Flutter. Habría formas de tener Apps con parte nativa y parte en Flutter, pero no vamos a entrar ahí de momento.
Toda esa base de código estará desarrollada en Java o en Kotlin. Y por tanto la única alternativa es o bien seguir con Java o bien saltar a Kotlin, que como puede que sepas interoperan sin ningún problema.
Entonces, ¿por qué está teniendo tanto crecimiento una tecnología como Flutter? Es muy sencillo: porque se desarrolla mucho más rápido que con una tecnología nativa.
Podemos tener la aplicación de Android y la de iOS escrita con prácticamente la misma base de código y por tanto a las empresas les sale mucho más barato.
Y es posible que por eso en Latinoamérica tenga más penetración que en otros países con mayor poder adquisitivo, porque las empresas que contratan a las que desarrollan las aplicaciones lo que están buscando es reducir costes, y por tanto en Flutter tienen esa ventaja: pueden reducir costes a cambio de acoplarse a una tecnología que en algún momento les puede dar algún problema.
¿Y por qué digo esto? Principalmente porque habrá algunas cosas que queramos hacer con Flutter que no se puedan hacer directamente por necesitemos código nativo para desarrollarlas.
Y aquí es donde entramos a un punto en el que quiero hablar contigo, ya que te interesa a ti como desarrollador y como evolución en tu carrera profesional.
Razón 3: Android con Kotlin tiene más barrera de entrada que Flutter
Vamos a ser sinceros y aprender Android nativo es muchísimo, pero muchísimo más difícil que aprender Flutter. Tienes que tener un montón de cosas en cuenta que en Flutter te puedes olvidar, porque está muy pensado para ser muy rápido, muy directo y quitarnos de los mayores problemas con los que nos encontramos en el día a día con el Framework de Android.
Cosas como los ciclos de vida, casi prácticamente te puedes olvidar de ellos en Flutter, mientras que en Android son un quebradero de cabeza.
Y todo esto hace que la barreara de entrada sea mucho mayor para un empleo en desarrollo Android que para alguien que tenga que aprender Flutter.
Una persona que sepa desarrollar en cualquier tecnología a lo mejor en un par de semanas está siendo productivo, mientras que con Android puede tardar meses.
Y eso es lo que mi intuición me dice es que en Flutter los sueldos van a ser más bajos, y además va a ser mucho más fácil que cualquier persona entre. Y por tanto la competencia va a ser mucho mayor.
Razón 4: Necesitas conocer nativo para ser un buen desarrollador móvil
Además, conociendo Flutter sin conocer el desarrollo nativo, vas a tener dos problemas. El primero es que no conoces muy bien cómo funciona la plataforma y por tanto, en cuanto que tengas algún pequeño problema te va a ser muy difícil entender de dónde está viniendo.
Por ejemplo, volviendo al ejemplo del ciclo de vida, de repente la aplicación nos da un problema relacionado con el ciclo de vida.
Si nunca lo has visto y no sabes a qué se refiere ni cómo funciona Android cuando rotas la pantalla, por ejemplo, o cuando la aplicación se va a background y vuelves. Todo esto te va a dificultar que detectes el problema cuando te ocurra algo de esto dentro del desarrollo Flutter.
Y por otro lado, en cuanto te encuentres en ese momento en el que Flutter no te es suficiente y tienes que tirar de desarrollo nativo, ya no vas a poder hacerlo tú porque no conoces lo conoces, y por tanto van a necesitar a otra persona que sí que sepa del tema.
Sin embargo, si vienes del otro lado y conoces el desarrollo nativo y tienes que empezar a aprender, en mi experiencia te digo que en un par de semanas y sin dedicarle demasiado tiempo, puedes empezar a ser productivo con Flutter.
Y ya tienes toda esa base de desarrollo nativo y por tanto eres un profesional mucho más versátil que va a ser más capaz de solucionar los problemas. Por tanto, va a ser más sencillo que te contraten. Los puestos van a ser de mayor calidad y tu salario va a ser más alto.
¿Cuándo consideraría aprender Flutter antes que aprender de desarrollo nativo?
En un par de situaciones. Si, por ejemplo, no quieres meterte con toda la complejidad del desarrollo nativo, pero quieres empezar a probar a hacer aplicaciones, Flutter muy sencillo y puedes empezar de forma muy rápida.
Por tanto, puedes tener resultados más rápidos y que eso te anime a dar el salto hacia desarrollo nativo.
Y por otro lado, si quieres crear tus primeras aplicaciones sencillas y subirlas a la Play Store, pero tampoco te apasiona tanto el mundo de la programación como para dedicarle muchas horas, sino que simplemente quieres ser práctico y tener resultados rápidos. Flutter también puede ser una solución interesante.
Ya te digo que la curva de aprendizaje es mucho más corta porque te olvidas de la mayoría de los problemas que te da el desarrollo nativo. Ya los tienen solucionados para que sean transparentes al desarrollador y por tanto vas a avanzar de forma mucho más rápida.
Pero a día de hoy, si tú me dices que quieres desarrollar profesionalmente aplicaciones en Android y quieres progresar en tu carrera profesional y alcanzar grandes posiciones laborales, la única recomendación que te puedo hacer es que aprendas Android nativo y que una vez que lo tengas dominado, pues a lo mejor como vía alternativa puedes aprender Flutter y tener una pequeña idea por si surgen proyectos en los que lo necesites, que sepas que también tienes la base y que puedes aprender muy rápido y ser productivo en pocas horas.
Con esto ya ves que no digo que Flutter no sea una buena opción, que no tenga prospección de futuro. Yo creo que va a seguir creciendo muchísimo, va a ser de las tecnologías que más crezca.
Pero eso no quiere decir que el desarrollo nativo vaya a desaparecer ni mucho menos, sino que va a ser un complemento como poco, y en muchas ocasiones las aplicaciones seguirán siendo cien por cien nativas.
Así que no puedo dejar de recomendar que aprendas Android nativo y como complemento, si te interesa, que le dediques tiempo para aprender las bases del desarrollo en Flutter con Dart
Espero que esta información te ayude a decidirte.
Hablamos pronto.
0 comentarios