La programación tiene muchas áreas en las que puedes dedicarte como el desarrollo de videojuegos, la inteligencia artificial o la seguridad informática. Y aunque son muchas las áreas las dos con mayor demanda son el desarrollo web y el desarrollo móvil. Es decir, crear sitios y aplicaciones web y desarrollar aplicaciones para teléfonos celulares. Pero, ¿en qué se diferencian? ¿Qué tecnologías, lenguajes o frameworks se utilizan en cada tipo de desarrollo? ¿Qué debes aprender si quieres dedicarte a alguna de ellas?
Si tenías dudas sobre cómo funcionan estas áreas y no estás seguro por cuál especializarte, este blog es el adecuado para ti. Bienvenido a la guía completa sobre el desarrollo web y el desarrollo móvil, porque en español, nadie explica como EDteam.
1. ¿En qué consiste el desarrollo web y el desarrollo móvil?
En ambos casos hablamos de desarrollo de software, cuya diferencia son las tecnologías que se usan para su creación y las plataformas sobre las que éstas funcionan.
El desarrollo web consiste en crear sitios y aplicaciones web, que se consumen desde un navegador, a través de una dirección de internet o URL. En pocas palabras, estas aplicaciones no necesitan ser instaladas, solo necesitas un navegador y entrar a su URL. Esta es una de las mayores ventajas de este sistema, porque no tienen barrera de entrada. Esto se debe a que no dependen del sistema operativo ni de instalar requerimientos adicionales. Estas aplicaciones funcionan en la pestaña del navegador, cuando cierras esa pestaña, se termina el proceso. Por ejemplo Spotify, Figma, EDteam, YouTube, Facebook, Netflix, entre toras.
Por su parte, el desarrollo móvil consiste en crear aplicaciones para teléfonos, que funcionan sobre un sistema operativo como Android de Google o iOS de Apple. A diferencia de la web, existen barreras de entrada, porque una app para iOS no funciona en Android y viceversa. Además, necesitan ser instaladas (a diferencia de las aplicaciones web). Sin embargo, tienen acceso a los recursos del sistema operativo, como batería, cámara, acelerómetro, entre otros, lo que las ayuda a tener mejor rendimiento.
Existen apps que nacieron en su versión web, como Spotify, Netflix, Facebook o YouTube y que luego lanzaron su versión móvil. Y viceversa, apps móviles como WhatsApp, Instagram, TikTok o Telegram, que después lanzaron su versión web.
Y existen casos muy raros (pero que demuestran el poder de la web) como Google Stadia o Xcloud de Microsoft, que quisieron ser móviles pero no pudieron, porque Apple no quiso competencia en el mundo de los videojuegos, así que se convirtieron en web. Por ejemplo, de esa manera, dos años después de ser baneada de los iPhone, Fortnite volvió, vía web.
Otra diferencia entre ambos desarrollos, además de las tecnologías, es que la web es una plataforma abierta, en la que no tienes que pedirle permiso a nadie para desarrollar lo que te dé la gana. Pero en móvil, tienes que seguir las reglas de Apple o Google (que suelen ser abusivas, pero han empezado a relajarse tras investigaciones del Gobierno de EEUU) o te vas para tu casa.
1.1. Origen del desarrollo web y desarrollo móvil
La web se crea en los años 90 como una plataforma abierta, por lo que solo necesitabas un navegador para ingresar a todo un universo de información. Por eso Netscape, el primer navegador comercial de la historia, a pesar de ser gratuito, volvió millonarios a sus creadores cuando salió a la bolsa. Luego Microsoft destruyó a Netscape con Internet Explorer, el navegador que dominó la web por una década (y nos hizo sufrir a todos los desarrolladores web de esos años). Luego vendrían Opera, Safari, Firefox, Google Chrome, Brave, Edge, entre otros. Nadie te obliga a usar un navegador en específico (salvo que uses iPhone, ahí usas Safari quieras o no).
Por su lado, el desarrollo móvil comienza con el primer smartphone, el iPhone que se lanzó en 2007. Sin embargo, no tenía tienda de aplicaciones porque Steve Jobs planeaba que las apps para iPhone fueran web y por eso Apple lanzó el meta viewport
, una propiedad de HTML que inició el Responsive Web Design.
Recién al año siguiente, en 2008, aparece la primera tienda de aplicaciones de Apple con el nombre App Store. Tenías que pagar 100 dólares al año (hasta ahora) para poder publicar tus apps y por cada venta Apple se llevaba el 30% y el desarrollador el 70%. Para los tiempos era un trato justo, hubo desarrolladores ganando cientos de miles de dólares en pocos meses, una completa locura.. En menos de un año, la App Store había alcanzado 100 millones de descargas y fue la revolución más grande desde la web en los 90.
Luego vendría Android Market (que se renombró más tarde a Google Play). La principal diferencia es que en iOS solo hay una tienda de Apps: la App Store, pero en Android se permiten otras como la Galaxy Store de Samsung, la AppStore de Amazon (Amazon le ganó un juicio a Apple para poder usar el nombre App Store), la AppGallery de Huawei, entre otras.
1.2. ¿Qué tipos de desarrollo web y desarrollo móvil existen?
El desarrollo web se divide en dos áreas: el backend y frontend. Backend es la programación que se ejecuta en el servidor y frontend, la que se ejecuta en el cliente o navegador. Esto es así porque la web funciona con una arquitectura de cliente - servidor. El cliente solicita la web (por ejemplo, cuando escribes ed.team en tu navegador para estudiar en EDteam) y el servidor responde a esa solicitud, con todos los recursos de dicha página web. Si quieres saber más de frontend y backend, tienes que ver nuestro video en Youtube: ¿Qué es Backend y Frontend? (guía completa)
En cambio, en el desarrollo móvil, no se usan los conceptos de backend y frontend; aunque si hacemos una analogía, el desarrollo móvil es más parecido a la parte del frontend, puesto que principalmente se crean las interfaces. Es más, una aplicación web y una app móvil pueden consumir el mismo backend (las mismas APIs, bases de datos y lógica de negocio). De hecho, es lo usual, piensa en Facebook web y Facebook móvil, sería una locura que haya datos diferentes en ambas apps.
Entonces, si el desarrollo móvil no se divide en backend y frontend, ¿significa que hay un solo tipo? No, el desarrollo móvil puede dividirse en dos tipos: desarrollo nativo y desarrollo multiplataforma. El nativo es propio de un sistema operativo; por ejemplo, las apps para Android no funcionan en iOS y viceversa, así que si quiero que mi app funcione en ambos sistemas, necesito desarrollar dos aplicaciones.
Por otro lado, el desarrollo multiplataforma consiste en usar una sola base de código para crear una app que funcione tanto en Android como en iOS. Es decir, desarrollar una vez en lugar de dos, y compilar para cada sistema. El desarrollo nativo tiene como ventaja un mejor rendimiento y comunicación con el sistema operativo, mientras que el multiplataforma tiene como ventaja un menor costo de desarrollo.
En el desarrollo nativo, iOS tiene la ventaja de que existen menos dispositivos, así que los tamaños de pantalla, procesador, memoria, entre otros, están documentados y tú como programador sabes para qué dispositivo estás desarrollando. En Android no existen esas normas, así que no tienes idea en qué tamaño de pantalla o procesador se ejecutará tu app, aunque, por otra parte, el mercado Android es mucho más amplio.
1.3. ¿Qué rutas de aprendizaje debo seguir?
Para desarrollar en web existen muchos caminos, tantos que toda persona que comienza en la web se marea con todas las opciones disponibles. Hay una gran cantidad de tecnologías, lenguajes de programación y stacks disponibles para hacer desarrollo web.
En este blog haremos un repaso breve por estas tecnologías, pero si quieres entenderlo más a fondo, toma nuestro curso La ruta del desarrollador web. Es el único curso en español que te desenreda la madeja del desarrollo web y te da un mapa para moverte en este laberinto. ¿Y lo mejor? es gratis.
Por su lado, el desarrollo móvil, aunque también tiene más de un camino, no tiene tantos como la web, pero la ruta está mucho más definida.
Comencemos con los lenguajes que puedes usar para cada tipo de desarrollo (móvil o web).
2. Lenguajes para desarrollo web y desarrollo móvil
2.1. Desarrollo web frontend
La web fue creada en 1989 por Tim Berners Lee con el objetivo de ayudar a los investigadores en su trabajo con documentos que se enlacen entre sí, creando una gigantesca red de información. Para que estos documentos puedan enlazarse, creó el lenguaje HTML, que le da estructura a la información y permite agregar links.
Años después, en diciembre de 1996, se crea CSS, para darle color y diseño a las páginas web y en 1997, se lanza el primer standard de JavaScript (aunque empezó su desarrollo en 1995). En resumen, las tres tecnologías web son: HTML, CSS y JavaScript. (Y las tres las puedes aprender en EDteam).
JavaScript es el único lenguaje de programación que entiende el navegador, pero como fue diseñado de forma apresurada, tenía varios problemas y carencias. Así que en 2012, Anders Hejlsberg (el mismo creador de C#y .NET), creó TypeScript, un lenguaje que agrega funcionalidades a JavaScript (pero que debe traspilarse a JavaScript para que el navegador lo entienda). Domina las bases de uno de los lenguajes más populares de la web en nuestro curso: JavaScript desde cero.
Algo similar ocurre con CSS, que tiene limitaciones por no ser un lenguaje de programación, por lo que se crea Sass para darle esas funciones extra. Así que, aunque no son tecnologías web nativas, TypeScript y Sass deberían estar en tu lista de lenguajes de frontend. Domina el lenguaje que hace hermosa a la web en nuestro curso: CSS desde cero.
Además, existe una tecnología llamada Web Assembly, que permite escribir lógica para el navegador con lenguajes como C++, C#, Rust o Go, compilarlas y enviar esa compilación al navegador. Gracias a esto, las apps web se acercan cada vez más a las apps del sistema operativo. Por ejemplo, Figma.
2.2. Desarrollo web backend
En backend, la opción de lenguajes es más amplia. Básicamente cualquier lenguaje que pueda ejecutarse en el servidor puede ser un lenguaje de backend. Sin embargo, los más usados son Java, Python, Ruby y PHP, estos son los clásicos que aparecieron en los 90.
De los años 2000 en adelante, tenemos a C#, Go y JavaScript. Y aunque JavaScript se lanzó en los años 90, es recién en 2009 cuando puede utilizarse como lenguaje de backend gracias a Node.js. ¡Recuerda que todas estas tecnologías las puedes aprender en EDteam!
En ese sentido, con cualquiera de esas opciones puedes desarrollar un backend robusto y acceder a muchas opciones laborales.
2.3. Desarrollo móvil nativo
Para iOS nativo, el lenguaje que se usó desde el inicio fue Objective C, una variación de C que le agregaba programación orientada a objetos y que usaba Next, la compañía que fundó Steve Jobs luego de ser despedido de Apple. Así que cuando Apple compró a Next, Objective C pasó a ser el lenguaje oficial para desarrollo en MacOS y luego en iOS.
Sin embargo, Objective C tiene una sintaxis muy complicada y es uno de los lenguajes que menos le gusta a los programadores. Por eso en 2014, Apple anunció su nuevo lenguaje que pasaría a ser su lenguaje oficial para desarrollo móvil, e incluso de escritorio: Swift.
Swift es interoperable con Objective C, por lo que puedes empezar a escribir Swift en un proyecto que use Objective C y funcionará. Además, Swift se liberó como Open Source en 2015.
Para Android, el lenguaje escogido en sus inicios fue Java, porque tenía la gran ventaja de escribirse una sola vez y ejecutarse en cualquier parte, así que era una excelente opción para Android. Todo iba muy bien hasta que en 2010, Oracle compra a Sun Microsystems, la empresa creadora de Java y como nuevos dueños del lenguaje, Oracle demandó a Google por más de 9 mil millones de dólares acusándolo de copiar partes del código de Java para construir Android.
Este juicio duró 11 años y finalmente Google ganó en 2021. Puedes ampliar esta noticia en nuestro video de Youtube: Google vence a Oracle en el juicio tecnológico de la década. Por esta razón, Google no le convenía seguir usando Java y necesitaba una opción.
Para su suerte, en 2011, la empresa Jetbrains creó un lenguaje llamado Kotlin, interoperable con Java. Jetbrains es conocida por desarrollar IDEs como IntelliJ Idea, WebStorm, Pycharm, entre otros, y estos IDEs están desarrollados con Java, por lo que Jetbrains buscaba con Kotlin un lenguaje menos verboso y más sencillo de escribir pero compatible con Java.
Kotlin poco a poco fue creciendo, se escribieron librerías para integrarlo a Android Studio y en 2017, Google nombró a Kotlin lenguaje oficial para el desarrollo Android y creó una fundación para financiar su desarrollo. ¿Y sabes qué? puedes aprenderlo en EDteam: Kotlin desde cero.
Esto no significa que no se pueda seguir usando Java en Android, pero al igual que con Objective C en iOS, ya no es la opción predeterminada para nuevos proyectos. Así que podemos concluir en que el lenguaje oficial para iOS es Swift y para Android, es Kotlin.
2.4. Desarrollo móvil multiplataforma
Para desarrollo multiplataforma, los lenguajes que puedes usar son Dart de Google, C# de Microsoft o JavaScript. Más adelante hablaremos un poco más de estos lenguajes porque se apoyan en frameworks para crear aplicaciones móviles.
3. Tecnologías para web y móvil
En esta sección hablaremos de tecnologías como frameworks, librerías y las herramientas adicionales para el desarrollo web y móvil.
3.1 Desarrollo web frontend
Del lado del frontend, las tecnologías más populares son React, Angular, Vue o Svelte. Todas estas tecnologías las puedes aprender en EDteam. En ese sentido, React es la más popular y la que tiene más ofertas de trabajo, mientras que Svelte es de las más recientes y de las más puristas, por lo que le encanta a muchos programadores. Sin embargo, su mercado laboral actualmente es reducido.
Además, si estas en Lima, te esperamos en el bootcamp presencial de frontend con React este 13 y 14 de octubre. Para participar, debes conocer React, porque iremos directo a la práctica y crearemos un ecommerce completamente funcional. Inscríbete ya en ed.team/edcamp ¡los cupos son limitados!
3.2 Desarrollo web backend
El backend tiene dos formas de trabajar:
- Desarrollo de APIs.
Esta forma de trabajar es muy flexible porque no estás atado a ninguna tecnología, ni en el frontend ni en el backend. Incluso puedes crear microservicios para dividir el backend en pequeñas aplicaciones que se comuniquen entre ellas, sin importar el lenguaje que se use.
Las API son la capa de comunicación entre el frontend y el backend, pueden desarrollarse con cualquier lenguaje y puedes aprender a crearlas en EDteam. Tenemos varios cursos para que decidas, pero si no sabes nada de API, tienes que ver Introducción a API REST (es gratis).
- Desarrollo “fullstack”, puesto que te entregan tanto el backend como las vistas (el frontend).
Del lado del desarrollo fullstack, tenemos a Java Enterprise Edition, Flask y Django para Python, Laravel para PHP, ASP.NET para C#, Rails para Ruby, Buffalo con Go y Node para JavaScript. Y aunque este último no es un framework, permite tener a JavaScript tanto en el backend como en el frontend.
Según la última encuesta de Hired, Go es el lenguaje de backend más solicitado por las empresas, y si estás en Lima, puedes participar del bootcamp presencial de backend este 13, 14 y 15 de octubre, en el que desarrollarás las API de un ecommerce 100% funcional. Luego de este bootcamp, estarás listo para postular a cualquier oferta de trabajo con Go. Inscríbete ya en ed.team/edcamp antes que se agoten las entradas.
3.3. Desarrollo iOS nativo
Ya sabes que en iOS desarrollas con Swift, por lo que, como tal, no existen frameworks para Swift (como era Cocoa Touch para Objective C) sino que se desarrolla con Xcode, el IDE oficial que incluye todas las herramientas necesarias para el desarrollo, testing y distribución. Además, con Xcode puedes desarrollar no solo para iOS, sino para todos los sistemas de Apple: iPadOS, MacOS, tvOS y watchOS.
Xcode, además, incorpora SwiftUI, una librería para construir interfaces usando componentes nativos del sistema. Así, en vez de ponerte a construir de cero cada elemento de la interfaz, las traes desde SwiftUI. También es interoperable con las antiguas soluciones para iOS como UIKit.
Un detalle importante: si quieres desarrollar para iOS, necesitas una Mac. Puedes desarrollar en otro sistema operativo pero la compilación debes hacerla desde una Mac. Así que, o te compras una Mac, o compilas en servicios en nube.
3.4. Android nativo
De forma similar al desarrollo en iOS, no existe un framework para Android, sino que todas las herramientas necesarias como el compilador, emulador o la librería de componentes, viene dentro del IDE: Android Studio. En Android Studio está el compilador, Gradle, además de la librería de componentes Jetpack Compose, que es el equivalente en Android para SwiftUI en iOS y que también ayuda en el desarrollo en wearOS (el sistema operativo de Google para relojes).
Si vienes del desarrollo web, te sorprenderá lo claro que es el camino en el desarrollo móvil nativo. Tienes lenguajes específicos, librerías oficiales e IDEs que traen todo lo que necesitas. Esa es la ventaja que empresas específicas sean dueñas de estas plataformas, mientras que, aunque la “desventaja” de la web es que hay muchas tecnologías, su ventaja es que es abierta y no tienes que rendirle cuentas a nadie. Te toca elegir qué modo de trabajar te gusta más.
3.5. Desarrollo multiplataforma “nativo”
Tenemos tecnologías que nos prometen compilar a código nativo, es decir, código que va directamente al procesador móvil. Para el desarrollo multiplataforma, la tecnología recomendada es, sin duda alguna, Flutter, un framework Open Source creado por Google y que comenzó para crear apps móviles, pero que actualmente puede usarse para escritorio y desarrollo web. Flutter está enfocado en las interfaces utilizando widgets que se combinan para interactuar entre ellos y crear las pantallas de la aplicación. Además, compila a código nativo en iOS y en Android, usa el lenguaje de programación Dart y lo puedes aprender en EDteam. Toma nuestro curso: Fluttler desde cero.
Una segunda opción es Xamarin de Microsoft, que también permite crear apps multiplataforma. Xamarin usa Xamarin forms para crear interfaces nativas para Android y iOS, similar a Swift UI, Jetpack Compose o Flutter. Aprende a crear apps nativas multiplataforma utilizando C# con el SDK de Microsof: Xamarin desde cero.
Sin embargo, Microsoft está en proceso de unificación de sus tecnologías y la siguiente versión es .NET MAUI, que busca seguir el camino de Flutter y crear interfaces no solo móviles, sino también de escritorio.
3.6 Multiplataforma web
Además de Flutter y Xamarin, existen tecnologías que se apoyan en la web (HTML, CSS y JavaScript) para crear aplicaciones móviles multiplataforma y que prometen rendimiento nativo (aunque las interfaces son procesadas por el webview del sistema). Estas son React Native, que extiende los componentes de React para el desarrollo móvil. Aprende React Native en EDteam. Otra opción es Ionic, un framework que comenzó para el desarrollo móvil usando Angular, pero que actualmente soporta desarrollos en React y Vue.
Por último, tenemos a las Progressive Web Apps o PWA, que son aplicaciones web que no requieren compilarse y que pueden ejecutarse desde un navegador móvil, al igual que una aplicación web, pero que pueden instalarse como apps del sistema desde el navegador o desde la tienda de aplicaciones (App Store o Google Play).
Las PWA tienen funciones y rendimiento nativo a diferencia de una página web gracias a los service workers, que permiten que la aplicación web siga funcionando aunque se cierre el navegador o la pestaña. De esa manera, una PWA se puede ejecutar en segundo plano, lanzar notificaciones e incluso funcionar en modo offline como una app nativa. Moderniza y lleva tu sitio web la siguiente nivel con el curso de EDteam de PWA: Tu primera Progressive Web App (PWA).
Cuando empezó el desarrollo móvil, también empezó el Responsive Web Design, un conjunto de estrategias para que una página web se vea bien en los teléfonos. En los inicios, muchas apps en realidad eran páginas web empaquetadas como si fueran móviles, que tenían un rendimiento terrible. Hoy, la web es tan potente que puedes crear apps móviles con tecnologías web (recuerda que la web hoy por hoy es tan poderosa que incluso juegos como fortnite pueden ejecutarse desde un navegador móvil).
Y así como pueden crearse apps móviles con tecnologías web, también pueden usarse las tecnologías móviles como Kotlin, Flutter o Swift para el desarrollo web. Al final, tu eliges qué tipo de programador ser: móvil o web. Y si no sabías en qué se diferencia el desarrollo móvil del desarrollo web, hoy lo aprendiste en EDteam.
Y si estás en Lima, no te pierdas el EDcamp este 13, 14 y 15 de octubre. Aprenderás frontend y backend avanzado mientras creas una aplicación completa de Ecommerce con pasarela de pagos incluida. Te llevarás todo el código listo para subirlo a producción para que tengas tu ecommerce funcional y empieces a ganar dinero. Compra tus entradas antes que se agoten en ed.team/edcamp porque los cupos son limitados.