Qué camino tomar si quiero ser Mobile Developer

Lo que me hubiera gustado saber cuando empecé

Rafael Perez
8 min readMar 4, 2023
Photo by Fotis Fotopoulos on Unsplash

Si alguna vez te haz preguntado qué necesitas saber para programar aplicaciones móviles, sigue leyendo para conocer los pasos que me ayudaron (y me siguen ayudando) a lograrlo.

Primero que nada comencemos por entender qué es un Mobile Developer:

Es un desarrollador de software que programa aplicaciones destinadas a funcionar en dispositivos móviles (smartphones, tablets, smartwatches). Resuelve problemas y crea experiencias de usuario, construyendo soluciones e interfaces funcionales que generan valor para el negocio y para el usuario.

A diferencia de una computadora, estos dispositivos son utilizados por los usuarios en el día a día, cada uno con su propia forma de interacción, y nosotros como mobile developers necesitamos entender este contexto para poder crear aplicaciones que funcionen como el negocio y como el usuario esperan y que sean fáciles de usar. Este ultimo punto es crucial, las aplicaciones móviles resuelven o satisfacen algún problema o necesidad que tiene el usuario, solución que normalmente es patrocinada por el negocio o empresa que pone el dinero que permite que esto ocurra, y nosotros como developers ponemos nuestro tiempo, habilidades y esfuerzo para construir estas soluciones utilizando de código. Si la aplicación no es fácil de usar, es confusa en su interacción o presenta errores (normalmente conocidos como bugs), los usuarios no querrán utilizarla y el negocio no verá un retorno de su inversión. En cambio, si la aplicación funciona como se espera y satisface las necesidades del usuario de una manera fácil y sencilla, habremos programado una solución que genera valor tanto para el usuario como para el negocio.

Para lograr esto, como mobile developers necesitamos aprender lo siguiente.

1. Dominar el lenguaje

Un error común cuando se esta aprendiendo a programar es saltarse los fundamentos e irse directo a lo divertido: maquetar la interfaz gráfica toda bonita llena de colores y formas y querer ver de manera inmediata que la aplicación funciona, sin antes aprender a fondo el lenguaje de programación.

Si bien no hay nada de malo en querer hacer el proceso más satisfactorio, comenzar por aprender el lenguaje de programación y programación orientada a objetos nos permitirá ser más eficientes y eficaces cuando programemos la interfaz de usuario, o cualquier otra parte de la aplicación.

2. Construir interfaces gráficas funcionales y accesibles

Una vez conocemos bien el lenguaje de programación, es momento de aprender a construir la parte visual de la aplicación, a esto se le conoce comúnmente como maquetar la interfaz de usuario. En esta etapa agregaremos a nuestras aplicaciones textos, imágenes, formas, botones, campos de texto, listas de elementos y una gran variedad de elementos interactivos.

Dentro del mundo laboral, los UI Designers suelen ser las personas que nos entregan un diseño definido de la interfaz de usuario que hay que programar, pero, ¿dónde podemos conseguir el diseño de una app cuando recién estamos aprendiendo? Una manera sencilla y rápida de lograrlo es intentar replicar interfaces de aplicaciones que ya conozcamos y qué nos parezcan visualmente atractivas.

Ahora bien, ¿qué hay de aquellos usuarios que tienen alguna discapacidad visual, motora, o intelectual que les impida utilizar las aplicaciones que desarrollamos? ¿No merecen ellos también tener acceso a la tecnología y soluciones que creamos? En este punto es cuando nos toca aprender sobre accesibilidad y aplicar sus principios para asegurarnos de que cualquier persona pueda usar nuestras aplicaciones.

3. Gestionar la navegación entre diferentes pantallas

La mayoría de aplicaciones en el mercado constan de múltiples pantallas que muestran información relevante dependiendo de lo que el usuario este haciendo en un cierto momento. Por ejemplo, en la aplicación de nuestro banco la primera pantalla que solemos ver es la de iniciar sesión, para después navegar a la pantalla principal donde se nos muestra un resumen de nuestras cuentas, tarjetas, etc, y si presiono en una de mis tarjetas se espera que la aplicación navegue hacia otra pantalla que me muestre información sobre esa tarjeta, como el saldo actual, los últimos movimientos realizados, etc.

Como mobile developers debemos asegurarnos de que en nuestras aplicaciones la navegación entre pantallas funcione correctamente y que siga un camino definido de acuerdo a cada acción que realice el usuario.

4. Gestionar el estado de la aplicación

Cuando interactuamos con la información presentada en la aplicación o nos movemos entre diferentes pantallas, la aplicación debe responder acorde a las acciones que realizamos. Retomando el ejemplo de la aplicación bancaria, suponiendo que nos encontramos en la pantalla principal, nos movemos al detalle de nuestra tarjeta de crédito y pagamos el saldo mensual, se espera que ahora el saldo que la aplicación muestra sea igual a el saldo que teníamos antes menos el monto del pago que recién realizamos, de lo contrario podríamos llegar a pensar que ocurrió algún error durante el pago. Así también, esta nueva información debe verse reflejada en todos los lugares de la aplicación donde se muestre el saldo de esa tarjeta. A esto se le conoce como el manejo del estado de la aplicación, y consiste en asegurarnos de que los datos o información que se muestran al usuario sean la última información real actualizada. Hay muchos factores a tomar en cuenta para conseguir esto, por ejemplo, puede ocurrir que la conexión a internet falle, o que el usuario salga de nuestra aplicación, se ponga a mirar memes un rato y luego regrese a nuestra aplicación a continuar con lo que estaba haciendo, y en este tipo escenarios la aplicación debe ser capaz de realizar los procesos que se esperan y mostrar información fidedigna al usuario.

5. Conectar la aplicación con Network APIs

Hoy en día casi todas las aplicaciones que tenemos instaladas en nuestros dispositivos móviles funcionan conectándose a internet, por lo que es muy importante aprender cómo hacer que el código de nuestra aplicación interactúe con los servidores que manejan los datos. Esto se logra a través de APIs (interfaces de programación de aplicaciones) que son métodos que el software que está del lado del servidor expone para que la aplicación móvil pueda interactuar con él. Hay diferentes tipos de APIs, y las más populares y recomendables de aprender (en un principio) son las RESTful APIs.

6. Persistencia de datos en local

Si alguna vez te has quedado sin datos mientras miras posts de instagram, habrás notado que aquellos posts que ya habías visto previamente siguen estando disponibles, ¿pero cómo, si el dispositivo ya no esta conectado a internet? Esto se logra a través de la persistencia de datos en local. Consiste en almacenar en la memoria del dispositivo toda aquella información que queramos continúe estando disponible para el usuario incluso cuando se pierda la conexión a internet. Sería muy frustrante para el usuario entrar a una aplicación y no poder acceder a la información, o perder todo el trabajo realizado (perder todo el avance en la escritura de un artículo de medium, por ejemplo) solamente porque se quedó sin conexión.

7. Distribución de la aplicación en las app stores

Nada de lo anterior valdría la pena si los usuarios no tuvieran acceso a las aplicaciones que desarrollamos. Aquí es donde entran en juego las tiendas de aplicaciones, siendo las principales la App Store en el caso de Apple y la Play Store en el caso de Google. Estas plataformas nos permiten subir nuestras aplicaciones para que estén al alcance del público, así que es imprescindible aprender qué procesos se requieren para hacerles llegar a los usuarios nuestras aplicaciones y sus actualizaciones.

8. Conceptos de ingeniería de software

Todo lo anterior son conocimientos específicos del desarrollo movíl, y podrían considerarse como lo básico necesario para comenzar en este ámbito. Sí queremos ir más alla y llegar a un nivel profesional, necesitamos aprender temas propios de la ingeniería de software, ya que estos son los fundamentos que nos permitirán desarrollar aplicaciones de calidad y mantenibles a través del tiempo. Necesitamos aprender sobre código limpio, programación orientada a objetos, principios SOLID, refactoring, package principles, test driven development, git, code reviews, continuous integration y continuous delivery, y otros conceptos que nos serán de mucha utilidad en nuestro camino para convertirnos en mobile developers.

9. ¿iOS o Android?

Ahora bien, sobre qué plataforma aprendo todo esto, ¿iOS o Android?. Podemos dividir el desarrollo móvil en dos categorías, desarrollo nativo y desarrollo multiplataforma. El desarrollo nativo consiste en programar aplicaciones para una plataforma específica usando tecnologías propias de dicha plataforma, que pueden ser Android o iOS. Mientras que el desarrollo multiplataforma se trata de crear una aplicaciones para dos o más plataformas utilizando la misma base de código.

En cuanto al desarrollo nativo, tenemos dos opciones, android o iOS. En android utilizamos lenguajes como Kotlin y Java, la herramienta de trabajo es Android Studio, y esta respaldado por Google. En iOS empleamos como lenguajes de programación Swift y Objective-C, el IDE es Xcode y esta patrocinado por Apple.

Una de las diferencias principales entre ambas plataformas son sus ecosistemas. Android es open source, lo que ha permitido que existan un sin fin de dispotivos móviles que funcionan con este sistema operativo, que al momento de escribir este artículo es el más utilizado a nivel mundial. Para desarrollar aplicaciones android podemos utilizar una computadora con Windows, Linux, o macOS. Y en cuanto a recursos de aprendizaje, la documentación oficial es muy buena, teniendo a la mano cursos creados por la misma Google, e incluso podemos encontrar una gran variedad de videotutoriales en YouTube en el canal oficial de android developers. Por su parte, iOS es un sistema cerrado, de forma que unicamente Apple puede crear dispositivos que funcionen con este sistema (al menos de manera oficial). Esto no es necesariamente una desventaja, pues sus dispositivos siempre han resaltado por su excelente calidad. Así también, el tener una gama más cerrada de dispositivos resulta en una experiencia más predecible para nosotros como developers, ya que en android a veces pueden ocurrir errores inesperados dependiendo de la marca y modelo del dispositivo. Sin embargo, el hecho de que necesitemos una computadora con macOS para desarrollar aplicaciones iOS puede representar una limitante para quienes no pueden adquirir tan facilmente una de estas máquinas, debido a su elevado precio. La documentación oficial tambien es muy buena, y de igual manera cuenta con sus propios cursos y videotutoriales.

Con respecto al desarrollo multiplataforma, tenemos tres opciones principales, Flutter de Google, Xamarin de Microsoft, y React Native de Facebook, cada una con sus propias ventajas y desventajas. Y una ventaja que las tres tienen en común, es que con la misma base de código, desarrollada en un solo lenguaje de programación, podemos generar aplicaciones que funcionen tanto en Android como en iOS. Y si optamos por usar Flutter, podemos generar aplicaciones que funcionen incluso en web, Windows, Linux, macOS, y cualquier sistema que funcione con un procesador con arquitectura ARM o Intel. Todo esto con un solo código base, lo que representa un gran ahorro de recursos.

Conclusión

Entonces, ¿qué camino deberías tomar?. En mi opinión, lo mejor es simplemente seguir el camino que más disfrutes. Si eres fan de Apple talvez aprender iOS sea la opción para ti, si te gusta más la flexibilidad de Android puedes irte por esa ruta, si te da igual la plataforma y quieres llegar al máximo número de usuarios puede ser que te guste más el desarrollo multiplataforma. Y si descubres que el desarrollo móvil es tu pasión, te invito a aprender las tres y sacar el máximo potencial.

Espero que este artículo te haya sido de ayuda. Gracias por leer hasta aquí. Nos vemos en la siguiente historia.

--

--

Rafael Perez
Rafael Perez

Written by Rafael Perez

Mobile developer. I’m interested on everything related to the life cycle of an app, design, development, and management.

No responses yet