ℹ️ He creado este repositorio para actualizarlo continuamente con recursos de aprendizaje de dentro y fuera de la comunidad.
⚠️ IMPORTANTE: No dudes en sugerir cambios, hacer pull request o crear una nueva issue para compartir tus recursos y así añadirlos al repo con intención de crear una gran guía de estudio.
Debes entender que aprender programación es una carrera de fondo. Tendrás mejores y peores momentos, pero, ¿sabes qué? ¡Le pasa a todo el mundo!. Al final del trayecto te espera un sector lleno de grandes oportunidades. Te recomiendo que te unas a nuestro servidor de Discord, donde compartimos recursos y nos ayudamos.
Para mejorar nuestras habilidades publico retos de programación semanales y mensuales en estos dos repositorios. También desarrollamos nuestra aplicación real Twitimer, disponible en Google Play Store y Huawei AppGallery, con todo su código público.
🍏 Este roadmap también lo tienes disponible para desarrollo de aplicaciones en entornos Apple.
Recuerda la importancia de desarrollar habilidades para resolver problemas y encontrar información relevante. Puede sonal mal, pero Google es una de nuestras principales herramientas de trabajo, y debemos saber usarlo. Otros lugares que debes conocer son:
- Android Developer: Sitio web oficial para desarrolladores Android
- GitHub: Repositorio de código público más grande del mundo
- Stack Overflow: Resolución de problemas
- Medium y Dev.to: Artículos de interés
El roadmap estará compuesto por algunos recursos oficiales, otros creados por mí, y por los sugeridos desde la propia comunidad como comento al principio de este documento. Por supuesto, esta mi ruta personal para aprender desarrollo de aplicaciones desde cero y dedicarte profesionalmente a ello (en ningún momento quiero que pienses que es la mejor o la única, simplemente es la que yo creo que te puede ayudar).
📈 A continuación tendrás el roadmap formado por un listado de conocimientos a adquirir (así como distintos sitios web donde comenzar su aprendizaje). Este listado se irá actualizando y completando, incluso creando nuevos documentos para agrupar enlaces de interés.
Debes aprender sus fundamentos, tipos de datos primivos y estructuras, flujo lógico y paradigma de programación orientada a objetos.
- KotlinLang.org sitio web oficial
- Cursos en KotlinLang.org
- TUTORIAL Kotlin desde cero
- TUTORIAL Kotlin intermedio
Puedes usar estos dos editores de código para aprender Kotlin, eso sí, para crear aplicaciones no podrás hacerlo con el editor online.
También debes comenzar a conocer otros conceptos importantes dentro de la ingeniería de software:
- Expresiones regulares.
- Recursividad.
- Notación asintótica.
- Funciones de orden superior.
- Porgramación orientada a objetos.
Es hora de comenzar a trabajar con las librerías de código que nos proporciona Android para crear Apps. Nos centraremos en las especializadas en creación de interfaces de usuario (UI): Android Views y Jetpack Compose (el nuevo framework lanzado en 2021 diseñado para poco a poco sustituir a Android Views).
Otros conceptos importantes a tener en cuenta:
- XML
- Programación orientada a estados.
- Programación imperativa.
- Programación declarativa.
- Programación funcional.
La documentación oficial de Android es esencial para conocer sus normas, recomendaciones y procesos.
No olvides la importancia de los siguiente conceptos:
- Comentarios de código.
- Markdown como lenguaje marcador para generar documentación.
Mecanismos para resolver de forma elegante problemas comunes en programación
Estos son algunos de los principales:
- Singleton.
- Factory.
- Builder.
- Adapter.
- Facade.
- Observer.
- Iterator.
- ...
La arquitectura de software de nuestro programa hace referencia a cómo se estructura nuestro programa en capas y cuál es la responsabilidad de cada una de las piezas que conforman nuestra App.
- MVC (Modelo-Vista-Controlador): Arquitectura básica.
- MVVM (Modelo-Vista-VistaModelo): Arquitectura más avanzada.
Sigue trabajando estos nuevos conceptos:
- Principios SOLID.
- Programación en base a código limpio.
Implementaciones de características muy habituales en aplicaciones de todo tipo que debes conocer.
-
Almacenamiento de datos:
-
Conexión con servidor remoto:
-
Otras funcionalidades:
Gestor de dependencias para ayudarnos a trabajar con código de terceros y gestionar el ciclo de vida de la aplicación:
Aprender a desarrollar aplicaciones para entornos Android precisa de otras habilidades esenciales no directamente relacionadas.
- Aprende Inglés: La mayor parte de la documentación y código se escribe en este idioma.
- Cambly te permite aprender online con profesores nativos de forma online.
- Git: Es básico saber trabajar con el gestor de versiones más utilizado.
- Puedes ayudarte usando clientes gráficos como GitKraken (en vez de hacer todo por línea de comandos).
Debes adquirir habilidades de testing y debug para mantener tu código íntegro y libre de errores.
- TUTORIAL Testing en Google Play: La plataforma oficial de test de aplicaciones de Android.
Ya sólo falta cómo desplegar aplicaciones en la Google Play Store.
🎓 EXTRAS: Aquí te dejo algún recurso extra relacionado con aprendizaje y obtención de certificaciones:
Este es el roadmap básico para convertirse en Apple Developer. No olvides hacer ⭐️ para seguir sus futuras actualizaciones. Ayúdame a mejorar con tu feedback ¡MUCHAS GRACIAS!
Soy ingeniero de software desde hace más de 11 años. Desde hace 3 años combino mi trabajo desarrollando Apps con creación de contenido formativo sobre programación y tecnología en diferentes redes sociales como @mouredev.