Internet nos abre las puertas a un sinfín de recursos y contenidos; de hecho, la red nos ha abierto las puertas a nuevas formas de aprendizaje que rompen con los esquema tradicionales de la asistencia física a un aula. Aplicaciones móviles, podcasts y plataformas de formación online así como artículos, blogs, guías y manuales forman parte de este nuevo gran ecosistema de la formación y el aprendizaje a través de Internet.
Además de contar con herramientas que nos permiten desarrollar aplicaciones sin saber programar, gracias a Internet es posible aprender a programar e iniciarnos en el apasionante mundo del desarrollo web o el desarrollo de aplicaciones. Hace algunos meses, Gabriela nos mostraba algunos sitios web en los que aprender a programar de manera gratuita; una interesante recopilación en la que podemos encontrar un buen número de sitios web que nos pueden ayudar a tomar nuestras primeras lecciones sobre desarrollo de aplicaciones y, quizás, abrirnos las puertas de un interesante futuro laboral.
Con la idea de seguir explorando esta idea, vamos a continuar caminando por esta misma senda del aprendizaje online. Si te has propuesto este año aprender a programar pero aún no te has lanzado a hacerlo, sitios como Coursera, Udacity o edX nos esperan con interesantes programas formativos gratuitos. De hecho, para que puedas ver la cantidad de contenidos que están a tu alcance, vamos a repasar 10 cursos online gratuitos para aprender a programar y dar nuestros primeros pasos en el mundo del desarrollo software.
Aplicaciones móviles
El sector de las aplicaciones móviles es un sector muy activo y dinámico que puede suponer una gran oportunidad para desarrolladores y startups con buenas ideas de negocio. Para hacernos una idea del estado del mercado, en España (que es el país de la Unión Europea con mayor penetración de dispositivos móviles), se descargan cada día alrededor de 4 millones de aplicaciones; una foto interesante que nos muestra las oportunidades de este sector.
Si quieres dar tus primeros pasos en el desarrollo de aplicaciones móviles, a través de Coursera, la Universidad de Maryland acaba de arrancar un curso online gratuito titulado Programación de aplicaciones móviles para sistemas portátiles Android que, en 8 semanas, nos introduce en la programación de apps nativas para Android y donde, como proyecto final del curso, pondremos en práctica nuestros conocimientos desarrollando una "aplicación compleja". Además, tras finalizar el curso, es posible adquirir un certificado oficial de aprovechamiento expedido por la propia universidad, un detalle interesante para nuestro CV.
Si sabes programar en Java (o en Objective C en el caso de desarrolladores iOS) y quieres abordar proyectos de desarrollo de aplicaciones móviles con el objetivo de ofrecer productos de calidad y una muy buena experiencia en uso, creo que la oferta del MIT a través de edX es algo que te va a interesar mucho.
En Building Mobile Experiences, Frank Bentley (responsable de proyectos de investigación de Yahoo en el campo de las aplicaciones móviles) y el profesor del MIT Ed Barrett introducen al alumno al desarrollo de aplicaciones móviles enfocándose en el desarrollo de productos innovadores, ofrecer una buena experiencia de uso, poner el foco en la usabilidad o en el testing y la evaluación y la mejora continua. Si bien en este curso el alumno tendrá que escribir código, el núcleo de este programa formativo es aprender a diseñar e implementar una "experiencia única" en movilidad.
Si quieres poner en marcha un proyecto multiplataforma, quizás el lenguaje HTML5 sea lo que estás buscando. Concretamente, en el caso que te apasionen los videojuegos, en Udacity podrás encontrar un interesante curso llamado HTML5 Game Development en el que, de manera gratuita, aprenderemos a diseñar juegos (aplicando metodologías y técnicas que se usan en las empresas) y desarrollarlos mediante lenguaje HTML5. Entre los docentes a cargo de este programa formativo hay dos empleados de Google que, precisamente, trabajan en el equipo de Google Chrome y en el desarrollo de aplicaciones sobre HTML5, así que es una buena tarjeta de presentación para este curso.
Pattern-Oriented Software Architectures: Programming Mobile Services for Android Handheld Systems es un curso ofrecido, a través de Coursera, por la Universidad de Vanderbilt y que transporta al alumno al desarrollo avanzado en Android. En este caso, el programa formativo se enfoca en el cloud computing y en las plataformas existentes en la nube para que sirvan de apoyo a las aplicaciones que desarrollemos para ofrecer más servicios a los usuarios a la vez que se disminuye la complejidad del desarrollo de la app.
Lenguajes de programación
Si antes de lanzarte al desarrollo de aplicaciones móviles prefieres empezar por algo más básico, también podemos encontrar en la red cursos específicos sobre lenguajes de programación y algoritmia (construyendo unos cimientos sólidos para ir avanzado en esta materia).
Si los idiomas no te son un problema y te manejas con el francés, la École polytechnique fédérale de Lausanne (Suiza) ofrece un par de cursos muy interesantes en Coursera. En Introduction a la programmation orientee objet (en C++), los docentes del curso nos introducirán en el lenguaje de programación C++ y en el paradigma de la programación orientada a objetos. Para este curso concreto, es necesario tener nociones del lenguaje C++ para, así, entrar de lleno en la programación orientada a objetos; de todas formas, si crees que necesitas algo de formación previa, la EPFL también ofrece el módulo previo en el curso Initiation a la programmation (en C++).
Siguiendo con los lenguajes de programación que nos pueden servir de base para el desarrollo de aplicaciones móviles, la EPFL también nos ofrece un curso de introducción a la programación orientada a objetos en Java en Introduction a la programmation orientee objet (en Java).
Con el objetivo de hacernos fácil el aprendizaje del lenguaje de programación Python, la Universidad Rice, a través de Coursera, nos ofrece el curso Interactive Python. La orientación del curso es práctica y, con el objetivo de hacerlo ameno, los docentes llevarán al alumno al desarrollo de juegos interactivos usando el lenguaje de programación Python y trabajarán en versiones del Pong, Blackjack o Asteroids.
En el caso de buscar algo aún más básico y, por tanto, comenzar desde cero; la Universidad de Toronto nos ofrece, a través de Coursera, el curso Learn to Program: The Fundamentals. Este programa formativo está orientado a alumnos que no sepan programar y quieran introducirse en este campo; se partirá de lo básico y se introduce al alumno en la algoritmia y en el procesamiento secuencial para, finalizar, en casos prácticos usando el lenguaje de programación Python.
Uno de mis cursos favoritos es Software Debugging, un programa formativo que podemos encontrar en Udacity e impartido por un profesor de la Universidad Saarland de Alemania que nos introduce en el mundo del testing de aplicaciones. Además de aprender a programar, es importante aprender a **depurar el software que desarrollamos para cazar bugs y optimizar la ejecución de nuestra aplicación. Con este curso, el alumno aprenderá a depurar software de una manera óptima y profesional; es decir, automatizando tareas y aplicando metodologías que nos permitan revisar código sin necesidad de pasar horas delante del ordenador.