Si quieres convertirte en desarrollador de aplicaciones moviles este 2024, esto es todo lo basico que debes que tener en cuenta para poder empezar.
Primero hay dos formas tipicas de desarrollar aplicaciones moviles, una es usando tecnologías Nativas y la otra es usando tecnologías Multiplatforma o tambien llamadas Cross-Platform.
El desarrollar aplicaciones moviles nativas consiste en crear apps en el que el codigo que escribes funcionan solo para una plataforma especifica, es decir o creas apps para Android o solo apps para iOS.
De hecho esta es la forma ideal de crear apps o la que siempre se esperaria para llevar un proyecto a la realidad porque aprovecha todas las capacidades que ofrece el dispositivo movil, lo que significa que tu app tendra un muy buen rendimiento ademas que tambien ofrecera una muy buena experiencia de usuario (UX).
Sin embargo, el hecho que este enfoque ofrezca ventajas para el usuario tambien significa que el desarrollador lo tiene un poco más dificil a la hora de desarrollarlas o crearlas, porque esto significa que si tienes la idea de crear una App tendras que desarrollar el doble, teniendo que escribir codigo para crear una App para Android y escribir otra porcion de codigo par acrear una app para iOS.
Y aunque suene facil no lo es porque son dos tipos de ecosistemas que no van a la par, usan distintos tipos de lenguajes, herramientas distintas, los bugs y errores que te puedes encontrar son distintos y basicamente todo lo que uses, tendras que hacerlo dos veces, y si eso conlleva tambien que el costo sea el doble.
Y Esta es una de las razones de porque el desarrollo cross-plataform o Multiplatforma se vuelve una opcion tan requerida en la practica, porque a partir de una sola base de codigo puedes producir Apps para varias plataformas, reduciendo el tiempo que toma llevar a la realidad una App, ademas de reducir el tiempo para resolver bugs o posible errores que te encuentres, y no porque no aparezcan sino porque un solo Bug que puedas resolver inmediatamente se resolvera en todas las plataformas que estes soportando.
Ahora para desarrollo de aplicaciones moviles nativas tenemos dos opciones, en iOS tenemos Objective C, el cual es un lenguaje viejo pero que aun te puedes encontrar codigo de apps escritas en este lenguaje y tambien tenemos a Swift que es un lenguaje moderno y tambien es la forma preferible que te recomiendo Apple para crear apps en sus plataformas.
Y en cuanto a Android tenemos a Java que es un lenguaje muy comun de usar en desarrollo movil o Kotlin que es mucho mas moderno y seria la forma preferible actualmente de crear apps.
Mientras que del lado del desarrollo de aplicaciones moviles multiplataforma tenemos otras opciones, entre las cuales las mas populares que podemos encontrar estan actualmente React Native, Flutter, Kotlin multiplatform, .NET MAUI.
Veamos cada una en detalle.
React Native
React Native, es un Framework de desarrollo de aplicaciones moviles creado por Facebook en el año 2015, y la idea es permitirte crear apps para Android, iOS e incluso aplicaciones de escritorio para Windows y Mac, que sean nativas, pero que esten creadas usando Javascript como lenguaje de programación, en conjunto con React, que es una biblioteca para crear las interfaces de usuario y que tambien es creado por Facebook.
De hecho para poder crear aplicaciones en React native es muy recomendado saber primero React, por lo que su publico objetivo parece ser mas los desarrolladores de aplicaciones web que ya estan utilizando esta biblioteca para crear proyectos en el navegador.
Y al ser una de las opciones con mas recorrido en este ambito al dia de hoy hay muchas bibliotecas complementarias, recursos y tambien trabajo dedicado a React Native. De hecho hasta tiene un Framework encima de React Native que tipicamente se usa para crear apps mucho más facilmente llamado Expo, que ofrece probar las apps en tu propio movil, mientras desarrollas, ofrece bibliotecas que integran caracteristicas de forma facil en tu app y hasta permite generar las apps para android y iOS en la nube lo que quiere decir que no necesitas de un Mac.
Y de hecho hay otros puntos más pero esto lo abarcaré en el video de React Native en 2024 que vendrá despues de este.
Entre algunas aplicaciones importantes que usan React Native podemos encontrar a la propia apliación movil de Facebook y Messenger, tambien aplicaciones moviles de Microsoft como Skype, Microsoft Teams u Office. Ademas de otras aplicaciones importantes por parte de empresas como Shopify, Amazon, Tesla y similares.
Flutter
Flutter este es un Software development Kit o abreviado SDK creado por Google, que surgio en 2017. Flutter usa un lenguaje de programación que no es tan popular, llamado Dart, pero que de cierta forma esta inspirado en lenguajes como Javascript, Java o C#, lo que lo vuelve una opcion facil de poder aprender. De hecho Dart tiene algunas similitudes al lenguaje Typescript creado por Microsoft, solo que este vieve parte de Google.
La Idea de Flutter es permitir crear interfaces de usuario que se puedan adaptar a cualquier tamaño de pantalla, de cualquier plataforma, ya sea Android o iOS, e incluso que ese mismo codigo se pueda converitr a una aplicacion web o aplicacion de escritorio. Es decir trata de ser la solución mas cercana a poder crear una app en multiples plataformas, el sueño de Java.
tipicamente a Flutter se le compara con React Native, al ofrecer lo mismo, de hecho Flutter esta inspirado en muchos conceptos de REact Native, pero el ecosistema de desarrollo al ser más moderno esta mucho más optimizado que el de React native, es decir que editores, herramienta y las bibliotecas con funcionalidades que ofrece el propio SDK son bastante potentes y no tiende a ir lento o generar tantos errores cmo si lo hacen entornos como los de REact ntive, asi qu es una de las formas preferidas por desarrolladores actualmente para crear aplicaciones multiplataforma.
Entre algunas aplicaciones moviles importantes creadas con este SDK podemos encontrar a Google Pay, Google Earth, y otras aplicaciones de Google, ademas de apps como ebay y alibaba, entre otras.
Kotlin Multiplatform
Kotlin actualmente es el lenguaje más recomendado para crear aplicaciones moviles nativas para Android, pero los desarrolladores de Jetbrains no han querido quedarse solo con esta idea sino que tienen una variacion del lenguaje que permite usar la misma base de codigo para generar aplicaciones para Android, iOs, apliaciones de escritorio e incluso aplicaciones web al estilo de Dart.
Es decir que kotlin multiplaform son caracteristicas del lenguaje kotlin, y tambien en la practica un conjunto de herramientas que te permite crear apps para distintos entornos usando un mismo codigo base.
Esta creado por Jetbrans, la misma empresa que desarrolla los IDEs de multiples lenguaje lenguajes como Pycharm, Intellij, WebStorm, entre una amplia lista de IDEs y herramientas.
Y entre algunas apliacione que puede encontrar desarrolladas usando Kotlin pueden ser Netlfix, Macdonals, CashApp.
.NET MAUI
.NET MAUI que viene de.NET Multiplatform App UI, es la opcion que provee Microsoft actualmente para crear apps multiplaforma y aplicacines de escritorio multiplaforma tambien, usando el lenguaje principal de la empresa, C# y su Framework .NET.
.NET MAUI es la evolución natural de Xamarin.Forms, proporcionando una plataforma más moderna y eficiente para el desarrollo de aplicaciones
Y aunque este framework puedes usarlo para crear una amplia variedad de aplicaciones, desde aplicaciones empresariales y de productividad hasta juegos y aplicaciones de entretenimiento. Por lo general es una buena eleccion en entornos empresariales donde se esta usando herramientas de Microsoft, al usar el mismo entorno de desarrolo y lenguaje de prrogramacion.
Porque multiplaforma
actualmente mucha empresas escogen la ruta del desarrollo multiplaforma porque permite llevar a cabo una aplicacion en menor tiempo para mayor cantidad de plataformas, lo que significa que si estas preparando un MVP (Minimum Viable Product), puedes enfocarte en crear la funcionalidad o la logica que tu aplicación resuelve y no tanto en tener que estar pensando en el mejor rendimiento para cada plataforma, algo que puede dejar para despues, una vez ya tengas una base de usuarios.
De hecho muchas empresas inician con apps que estan desarrolladas con frameworks multiplataforma, pero cuando necesitan optimizar su app, separan el desarrollo en 2 apps nativas con dos equipos de desarrollo, lo que lo vuelve una opción muy viable
Esto quiere decir que si vas a empezar a desarollar apps moviles el multiplaforma aunque parezca extraño puede ser un buen punto de partida, sobre todo si eres un solo desarrollador o un desarrollador Freelance.
Aunque la pregunta inicial que te debes estar haciendo es con cual empezar.
Que Framework escoger
Bueno como siempre depende de lo que necesites. y sobre todo que es lo que se te hace mas adecuado utilizar segun tu contexto.
Por ejemplo. Si eres un desarrollador web que ya conoce algo del desarrollo de aplicaciones web usando Javascript o algun Framework de Frontend, o mas especifico conoces React. Por supuesto que usar React Native es mucho más conveniente, al solo tener que aprender algo más en lugar de todo desde cero. Es decir te va a dar una transicion facil de desarrollador web a desarrollador movil rapidamene.
O si no conoces aun nada del desarrollo de apliaciones moviles pero ya conoces algun lenguaje de programación, puedes aprender Flutter directamente y empezar a crear aplicaciones en este SDK, ya que aqui tendrias que aprender un lenguaje nuevo con todo un conjunto de herramientas nuevas, aunque el entorno esta muy bien diseñado asi que seria muy comodo dedicarse a desarrollar en Flutter.
Y por otro lado si eres un desarrollador que ya conoce C# o trabaja mucho con tecnologías de Microsoft en tu trabajo y ahora tienes que crear una app o un producto interno, es más conveniente escoger MAUI.
De igual forma que si ya conoces Kotlin para desarrollo de Apps en Android, te sera mucho más facil continuar con Kotlin multiplaform en lugar de las otras opciones.
Aunque un factor a considerar escoger uno u otro por supuesto es que si hay demanda de trabajo en ese Framework, por ejemplo en Estado unidos hay mucha demanda de desarrollo en React Native, pero quizas esto sea distinto en tu pais, asi que es buena idea investigar un poco las ofertas laborales en webs de trabajo o Linkedin y tomar una decidion.
Aunque en lo personal si tuviera que escoger entre uno u otro, estaria siempre cosniderando entre React Native y Flutter, por ejemplo hay veces que tengo que llevar proyectos que solo son apps moviles y para eso prefiero usar Flutter, al usar Dart que es un lenguaje mas moderno y no tiene esas consideraciones extrañas del lenguaje cuando se trata de renderizar interfaces en REact, ademas que sus herramientas estan mejor optimizadas, pero por otro lado si tengo que desarrollar un proyecot mucho más grande que tambien lleva una aplicacion web, prefiero usar React al estar desarrollando la web tambien en este Framework. e Inlcuso muchas veces desarrolladores Frontend pueden entrar rapidamente en el desarrollo movil uando REact native, que usando Flutter.
Como y que debo aprender
- Bueno pimero aprende un lenguaje de programacion base, como Puede ser Javacript, Dart, Kotlin o Swift. Dedcandole 2 horas todos los dias y casi todos los dias es posible que en 2 meses estes dominando las bases del lenguaje
- y lo siguiente a partir de alli seria aprender el Framework o SDK que hayas escogido. Y por supuesto es empezar a crear apliaciones sencillas
- Lo siguiente que debes es aprender Git, que es un programa para poder controlar distintas versiones de tu codigo a medida que lo vas mejorando y tambien Github, que es una plataforma que te permite alojar el codigo y tambien trabajar con otras personas.
Ahora con esto podras crear aplicaciones moviles, pero en la practica las aplicaciones moviles necesita de codigo de Backend para poder almacenar datos en programas llamado bases de datos ademas que tambien necesitan utilizar servicios adicionales como para subir imagenes, obtener datos como de un modelo IA y asi.
Pero como el desarrollar backend es mas trabajo de un desarollador backend y tu eres un desarrollador de apps moviles, aqui te recomendaria aprender un servicio llamado Backend as a service.
Estos son servicios que ya te dan todo el backend hecho a cambi d eun pago mensual, y con esto podras desde tener una base de datos para conectar a tu app movil, poder subir archivos de todo tipo, tener conexion en tiempo real para crear juegos, o poder unirlo a APIs para poder por ejemplo conectarlo a un servicio de inteligencia artiicial.
- Aprender herramientas de Backend Backend as a Service Firebase Supabase AWS Amplify Headless CMS Strapi Sanity
Que tambien te permiten hacer algo muy similar. DE hecheo puedes ver mi video de Headless CMS para poder conocer mas
- Aprender estrucutras de datos y algoritmos. esto es importante porque muchas veces no hay biblioteca creadas para procesar audios, imagenes, videos y es probable que necesites crearlas para tu apps, y es aqui en donde tus habilidades de codigo requieren relucir, aunque por lo general siempe puedes ir aprendiendolo en el camino. Estos tambien son utiles sobretodo si va a tener entrevistas tecnicas en empresas. Pero no estudies mucho esto, porque puede que solo aprendas esto y con estudiar un par de meses a la par que vas creando aplicacione puede ser suficiente.
Patrones de Diseño, son soluciones comunes a problemas de codigo, hay 23 patrones de diseño documentados en el libre patrones de diseño. muchos de estos son el fundamento de muchos frameworks y como se usan por debajo asi que te dara un entendimiento profundo de como funcionan.
aunque muchos libros son viejos y escrito en lenguajes como c++ asi que tampoco pases mucho tiempo.
Otra opciones
- Por supuesto esto no son las unicas formas de llevar a cabo una aplicación, porque tambien hay otras formas en las que se puede convertir codigo o usar tecnologías web.
Por ejemplo:
- Puedes crear una PWA para que una aplicacion web tenga funcionalidades nativa, ahora algunos pueden pensar que es como una aplicacion movil pero eso es un error de concepto. En realidad sigue siendo una aplicacion web solo que es una web que tiene mas accesos a recursos nativos como la camara, las notificaciones o el ejecutar en segundo plano codigo, pero no es una aplicacion movil, sigue siendo una aplicacion web que solo hace más cosas.
- Lo otro son aplicacion moviles hybridas que son webs que se convierten en apps moviles nativas, estas si son apps nativas sin embargo no son tan populares como los framework multiplataforma como react native o flutter, sin embargo son tambien opciones solidas para crear apps, entre algunas opciones aqui podemos encontrar a ionic o Quasar Framework
Siendo un solo desarrollador es muy facil usar tecnologias multiplataforma, porque pueden ayudarte a terminar una aplicaciónen menor tiempo, pero si lo tuyo es tener el mejor rendimiento o dedicarte solo a una plataforma por supuesto que aprender un lenguaje de apps nativa es algo mas acorde para eso.
al final no existe algo como el mejor framework para todo, pero depende de ti como desarrollador saber escoger la herramienta mas habitual para pder lograr tu mejor trabajo.