Sitios gratuitos para aprender a programar

Sitios gratuitos programación

Sitios gratuitos programación

El mundo moderno se edificó sobre millones de millones de líneas de código de programación. Usted no las ve y no ocupan espacio físico, pero constituyen una presencia invisible y omnipresente que, como un hálito celestial, les da vida a todas nuestras máquinas y dispositivos, y les dice qué deben hacer.

El código de programación son los conjuntos de instrucciones de los que están hechos todos los programas: los sistemas operativos, las aplicaciones como Word o Excel, los servicios web, los virus de computador, las apps móviles, etc. Gracias a ese código, estos programas pueden decirle a dispositivos como los computadores y los smartphones cómo deben comportarse y qué deben hacer. 

Como es de suponer, en un mundo totalmente dependiente de la tecnología como el actual, ese código de programación está detrás de la mayoría de sus actividades diarias. Cada una de las apps de su teléfono inteligente, los semáforos de su ciudad, las transacciones bancarias que realiza, las páginas pornográficas que visita, las naves que enviamos al espacio, todas las funciones de su computador personal, la señal de televisión que recibe en su casa, la mayoría de los procesos en su empresa, los servicios que utiliza en Internet, su interacción con las entidades del Estado, los aviones en los que viaja y las máquinas que le salvan la vida en los hospitales, entre otros, están controlados por código de programación que dotó de ‘inteligencia’ todo tipo de objetos y elementos inanimados. Sin la magia de la programación, el mundo actual no podría funcionar.

Sin embargo, mientras muchos sueñan con aprender idiomas lejanos como el mandarín, pocas personas fuera del mundo tecnológico son conscientes de la importancia de aprender los lenguajes de programación que desde hace años dominan realmente el mundo: Java, PHP, JavaScript, Python, C, Pearl y muchos otros, que se utilizan para crear el software que mueve todas las industrias y facilita nuestra vida diaria. Con la llegada del Internet de las Cosas, que ya ha conectado 25 mil millones de máquinas, dispositivos y cosas a la Red, el peso que tendrán esos lenguajes, y las oportunidades laborales que abrirán, será todavía mayor.

Sin la magia de la programación, el mundo actual no podría funcionar.

En ese contexto, y en el de un país en donde se vive un importante boom de emprendimientos de tecnología, resulta sorprendente que pocos colombianos estén aprendiendo a programar. Menos del 2 por ciento de las 310 mil personas que se gradúan cada año como profesionales en el país son programadores de software, según César Forero, director de SectorTIC, una compañía bogotana que ofrece cursos de programación. De acuerdo con el Ministerio de TIC, en el 2018 faltarán 93 mil técnicos, tecnólogos e ingenieros de sistemas para cubrir las necesidades del país.

Por cuenta de esa escasez, los programadores buenos no solo tienen asegurados los puestos de trabajo, sino que los sueldos son muy competitivos. Una encuesta reciente realizada por la empresa Bunny Inc. –entre 1.250 programadores– reveló que en Colombia un desarrollador de software se gana entre 2,5 y 10 millones de pesos mensuales. Alfredo Ángel, cofundador de la firma de tecnología Aldeamo, dice: “Colombia está llena de gente que estudió una carrera y no consigue trabajo en eso. Pero yo no conozco una sola persona que sepa programar y no tenga trabajo en los 13 países en los que Aldeamo tiene sedes”.

Es un gran contrasentido que en un país en donde muchas personas carecen de trabajo (9 por ciento de la población), o apenas sobreviven en la informalidad, haya tan pocos programadores. Pero este fenómeno no solo se vive en Colombia: en Estados Unidos hay menos ingenieros de sistemas que hace diez años, y en la próxima década se generarán 1,4 millones de empleos en ciencias de la computación, pero solo 400 mil personas se graduarán en esa área. Por su parte, se estima que en Europa faltarán 900 mil profesionales en computación y tecnología en el año 2020.

Entre las razones con las que César Forero explica esta situación están la fobia que tienen los estudiantes a las matemáticas y el cálculo, dos materias muy presentes en la carrera de ingeniería de sistemas; la percepción de los estudiantes de que en otras ingenierías se gana más dinero; y lo costoso que puede resultar dedicar cuatro o cinco años a esta carrera.

Por eso, varias personas y entidades están tratando de cambiar la percepción de que hay que ser ingeniero de sistemas para aprender a programar. Además, como explican emprendedores como Alfredo Ángel, de Aldeamo, “nosotros no necesitamos ingenieros, sino programadores”. El enfoque que se está promoviendo es ver la programación como una habilidad que cualquiera puede adquirir, con cursos de unos cuantos meses o de forma autodidacta, sin importad la edad, ni la formación previa.

Diversos sitios web ofrecen cursos de programación en los que las personas pueden estudiar a su propio ritmo. Se consiguen cursos sobre todos los lenguajes y muchos son gratuitos, aunque la mayoría está en inglés. Entre ellos se destacan los de Codecademy, un sitio que ofrece ayudas interactivas que hacen que aprender a programar sea sencillo y divertido.

También son de primer nivel los que ofrecen los principales sitios de Cursos Masivos Abiertos en Línea (MOOCs): Coursera, Udacity y EdX. Estos sitios tienen cursos de programación (y de muchos otros temas) elaborados por profesores de las principales universidades del planeta, como las de Columbia, Princeton, Yale, Stanford y Harvard. Muchos son gratuitos, especialmente en Udacity y EdX.

Debería enseñarse desde el colegio

El iraní Hadi Partovi, cofundador y presidente de Code.org, dice en una conferencia de Ted que la suya no fue una infancia muy feliz. Pasó muchas noches con su familia en el sótano de su casa, en Teherán, rogando que las bombas no la destruyeran. “Cuando tenía seis años, una monarquía brutal fue remplazada por un régimen islámico brutal, y poco después entramos en una guerra contra el país vecino, Irak. Nosotros vivíamos al lado de una estación de televisión, que Saddam Hussein trataba de destruir cada noche con sus bombarderos”.

Uno de los mejores recuerdos que Partovi tiene de esa época es el día en que, según sus palabras, su padre le cambió la vida a los 10 años de edad. Él le regaló un computador Commodore 64 y le dijo: “Este computador no tiene juegos, pero aquí hay un libro de programación para que puedas aprender a crear tus propios juegos”. Según Partovi, no había mucho que hacer en Irán en esos días, así que él y su hermano pasaron mucho tiempo aprendiendo a manejar ese equipo.

En 1984, Partovi y su familia emigraron a Estados Unidos. Él había aprendido a programar, y ya podía ganarse la vida con esa habilidad. “Cuando era adolescente, mientras mis amigos cuidaban niños o trabajaban como meseros, yo tenía puestos como programador”, dice en una columna publicada en The Seattle Times. Tras graduarse en ciencias de la computación, entró a Microsoft, tuvo una carrera exitosa y luego se lanzó a crear su propios emprendimientos. “Como inmigrante, estoy viviendo el sueño americano”, dice Partovi.

Aprender a programar cuando era niño le cambió la vida a Partovi. Es fácil entender por qué ahora él quiere replicar su historia a través de Code.org, el sitio que fundó con su hermano en enero del 2013. Code.org busca que el aprendizaje de la programación y las ciencias de la computación se lleve a todos los niños, tal como hoy se hace con otros temas, ya que en este mundo hipertecnológico muy pocos estudiantes tienen acceso a esta materia, incluso en el país que lidera esa revolución (en Estados Unidos, solo 1 de cada 10 colegios enseña programación a sus alumnos).

Partovi dice en una conferencia: “Los escépticos podrían decir: ‘¿Todos los niños deben aprender a programar? ¿Qué pasa si mi hijo no quiere ser ingeniero?’ Pero esto va más allá. Es fundamental para los estudiantes del siglo XXI, quienes no pasan un minuto sin tecnología. Cuando yo iba al colegio, todos los estudiantes diseccionaban una rana o aprendían cómo funciona la electricidad, así no escogieran carreras como biología o electricidad. Para los estudiantes de hoy es igualmente básico aprender qué es un algoritmo o cómo funciona Internet. No puedo imaginar una carrera que no vaya a ser impactada por la tecnología en la próxima década. Sin embargo, la mayoría de los colegios no les dan a los estudiantes la oportunidad de aprenderla”.

Al respecto, Bill Gates, fundador de Microsoft, y quien aprendió a programar por su cuenta cuando estaba en el colegio (él nunca estudió una carrera profesional, pero edificó la mayor empresa de software del planeta), dice en Code.org: “Aprender a escribir programas ejercita la mente, ayuda a pensar mejor y crea una forma de razonar que me parece útil en todos los campos”.

Por su parte, Mark Zuckerberg, creador de Facebook y un hábil programador, afirma en un video del mismo sitio que “aprender a programar es más fácil de lo que la gente piensa”, y recalca que en Facebook tienen “la política de contratar tantos ingenieros talentosos como sea posible” porque simplemente “no hay suficiente gente entrenada en esas habilidades hoy en día”. Zuckerberg tampoco estudió ninguna carrera, pero creó con sus habilidades en programación –y las de sus compañeros– una red social que tiene 1.450 millones de usuarios en el mundo y que está avaluada en 250 mil millones de dólares.

Gates y Zuckerberg son solo dos de los personajes que Partovi ha reclutado para su causa. A ellos se suman empresas como Google, Amazon y Electronic Arts. En total, ellos le han donado a Code.org más de 10 millones de dólares.

El ingeniero de sistemas Jaime Arbeláez, gerente de la empresa colombiana WideTech, quien ha tenido que contratar programadores en países como Polonia para cubrir sus necesidades de mano de obra, opina que “en seis meses se puede sacar gente especializada en un lenguaje de programación”. Arbeláez agrega que “esta podría ser una opción para sectores menos favorecidos de la sociedad, ya que, con esta educación más focalizada, a la vuelta de seis meses se puede estar teniendo un nuevo empleo”.

Arbeláez opina que “en los colegios de Colombia deberían quitar materias que no aportan mucho en los grados décimo y undécimo y enseñarles a los estudiantes a programar. Así, al salir del colegio podrían conseguir empleo y tendrían ingresos para pagar el resto de sus estudios”.

¿Cómo empezar a programar?

Hay muchas razones por las que una persona podría querer aprender a programar: porque no cuenta todavía con una carrera profesional, porque quiere sumar nuevas competencias a su hoja de vida, porque no ha recibido buenas oportunidades en su campo actual, porque tiene un sitio web que quiere mejorar (más allá de lo que permiten las plantillas estándar), porque tiene una idea para un emprendimiento tecnológico o simplemente porque es fanática de la tecnología. Sea cual sea su razón, si usted es bastante disciplinado y domina algo de inglés, aprender inicialmente por su cuenta es una buena alternativa.

En Internet hay incontables recursos para aprender a programar que no le cuestan un peso. Por eso, le brindan la oportunidad perfecta para que se sumerja en el tema de la programación, evalúe si realmente le gusta (o si tiene talento para ello) y luego sí opte por una opción pagada en línea o, incluso mejor, un curso presencial o una carrera profesional o tecnológica (el estudio presencial tiene ventajas como la interacción con personas que hacen parte de la comunidad de programadores, la posibilidad de hacer contactos de trabajo o conocer emprendedores de tecnología, el trabajo en grupo, el seguimiento y la asesoría del profesor, etc.). Si en cambio descubre que no lo apasiona la programación, no perderá dinero.

A continuación, un vistazo a varios sitios web que ofrecen cursos de programación gratuitos:

Codecademy

Codecademy

Si está arrancando de ceros en el mundo de la programación, este es uno de los mejores sitios que encontrará, debido a su facilidad de uso y a que la interactividad que ofrecen los cursos facilita bastante el aprendizaje.

En Codecademy, que tiene 25 millones de estudiantes en el mundo, encontrará cursos básicos de HTML y CSS, JavaScript, PHP, Python, Java, SQL y Ruby, entre otros. También hay cursos estructurados en forma de proyectos, como ‘Cree un sitio web’ o ‘Cree un sitio web interactivo’, que le permiten trabajar en tareas similares a las de un proyecto real: por ejemplo, en una de ellas debe agregar un menú de navegación, una imagen de fondo y crear un botón para un sitio web; en otra debe crear una página web con un formulario y una galería de imágenes; en otra debe crear de ceros una landing page para una app de música, etc.

Todos los cursos son cortos, de 3 a 13 horas cada uno, aproximadamente. Y lo mejor del sitio es que, a medida que aprende los conceptos, los cursos le van mostrando los resultados en vivo. Por ejemplo, en el curso básico de HTML, el sitio le permite ir aprendiendo el funcionamiento de las diferentes etiquetas en una réplica de la página principal del portal Airbnb; cada vez que usted realiza los pequeños ejercicios que se proponen, en la parte derecha ve los cambios en la página web.

Codecademy no solamente está pensado para gente que quiere estudiar por su cuenta. También tiene recursos enfocados en profesores, que pueden hacer seguimiento a sus alumnos a través de este sitio. Es posible cambiar a español algo del contenido, pero la esencia está en inglés.

Code.org

Code.org

“No solo juegue con su teléfono; prográmelo”, dice una frase del presidente estadounidense Barack Obama en el sitio Code.org. Obama es uno de los personajes de alto nivel que están apoyando esta iniciativa sin ánimo de lucro, que busca promover entre los estudiantes de colegio el aprendizaje de programación y ciencias de la computación. Otro de los objetivos es motivar a las niñas, que no suelen ser muy devotas de la programación.

Si siempre ha tenido la idea de desconectar a su hijo pequeño del televisor, y enchufarlo en algo mucho más productivo, este es el sitio para empezar. Los cursos de Code.org están dirigidos a niños, y por eso son sencillos y lúdicos. En general, enseñan los conceptos de programación utilizando juegos (por ejemplo, en un curso hay que mover personajes de Angry Birds dentro de un tablero, y en otro se aprende a crear una versión propia de un juego); además, el código con el que se trabaja no son las habituales líneas de texto, sino que se emplean bloques gráficos que se pueden soltar y acoplar con otros bloques para generar las instrucciones (cada bloque representa una línea de código).

Pero no se deje engañar por la sencillez del método. En los cursos de fundamentos de ciencias de la computación los niños de 4 a 8 años aprenden conceptos como código binario, algoritmos, condicionales, funciones y depuración, entre otros.

Code.org también tiene una sección para educadores, que así pueden enseñar informática en sus clases, añadir alumnos y hacer seguimiento de su progreso. Este sitio web permite cambiar el contenido a español, y los videos con instrucciones aceptan subtítulos en español, pero el contenido es más completo en la versión en inglés.

Udacity

Udacity

Udacity, en donde han estudiado 1,6 millones de personas, tiene docenas de cursos relacionados con tecnología y programación. Estos fueron creados por compañías de esta industria, entre ellas Facebook, Google, AT&T y Salesforce. Hay varios cursos gratuitos. Y en el caso de los pagados, algunos permiten que la persona estudie sin costo una o dos semanas, antes de tener que pagar si quiere seguir (aunque le piden un número de tarjeta de crédito para arrancar la prueba gratuita). Algunos cursos duran varios meses, y la tarifa es de unos 200 dólares mensuales. Los cursos generalmente exigen que la persona les dedique mínimo 10 horas a la semana, pero el estudiante puede avanzar a su propio ritmo.

Entre los cursos disponibles están: ‘Emprendimiento tecnológico’, ‘Introducción a la programación’, ‘Desarrollo en Android para principiantes’ (este permite una prueba gratuita de 14 días), ‘Monetización de apps’ (este es gratuito), ‘Fundamentos de diseño web responsive’ (es gratuito, pero requiere conocimientos de HTML y CSS), ‘Cómo construir una startup’ (gratuito), ‘Desarrollador web de front-end’, ‘Introducción a los sistemas operativos’ (gratuito), ‘Desarrollo web móvil’ (gratuito), ‘Introducción a los algoritmos’ (gratuito) y ‘Diseño de programas de computador’ (gratuito). Hay que aclarar que nosotros pasamos a español los nombres de los cursos, pero en el sitio web los encontrará en inglés.

Los cursos de Udacity suelen estar en inglés, pero encontrará subtítulos en ese idioma y en algunos casos en español. En general, los cursos están basados en videos que le explican conceptos. Las lecciones son cortas y hay evaluaciones muy sencillas constantemente. También hay material que puede descargar para reforzar las lecciones, y libros o lecturas sugeridas.

EdX

EdX2

El sitio EdX fue creado por la universidad de Harvard y el Instituto Tecnológico de Massachusetts (MIT). Es una iniciativa sin ánimo de lucro, por lo que muchos de los cursos disponibles son gratuitos (aunque si quiere un  certificado, tendrá que pagar entre 50 y poco más de 100 dólares). Cerca de 4 millones de personas han estudiado en este sitio web.

Muchos cursos empiezan en una fecha específica, pero también encuentra algunos que puede tomar en cualquier momento. Algunos que ya están disponibles son: ‘Introducción a las ciencias de la computación (CS50)’, de la Universidad de Harvard (muy recomendado); ‘HTML5, parte 1: código básico y buenas prácticas’, de W3C; ‘Introducción a C++’, de Microsoft; ‘Ingeniería de software como servicio (SaaS), parte 1’, de la universidad de California, Berkeley; ‘Jugando con Android, aprende a programar tu primera app’, de la universidad Autónoma de Madrid; ‘Introducción a la programación de computadores’, del IIT de Bombay; ‘Introducción a las ciencias de la computación y la programación con Python’, del Instituto Tecnológico de Massachusetts (MIT). Todos estos cursos son gratuitos (nosotros pasamos los nombres a español; en el sitio los encontrará en inglés).

Aunque estos cursos generalmente son en inglés, tiene la opción de tomarlos con subtítulos en inglés y a veces en español (con algunos errores).

Coursera

Coursera

Coursera, por donde han pasado 15 millones de estudiantes de todo el mundo, ofrece cientos de cursos gratuitos sobre diversos temas, creados por las mejores universidades del mundo. En la sección de ciencias de la computación hay docenas de ellos, aunque si los filtra para que aparezcan solo los que están en español, salen 20, entre ellos ‘Desarrollo de aplicaciones en iOS’, del Tecnológico de Monterrey; ‘Desarrollo y diseño de videojuegos’, de la Universidad de Los Andes; ‘Introducción a la programación’, de la universidad ORT de Uruguay y la universidad de Edimburgo; ‘Introducción a Java’, de la universidad Autónoma de México; ‘Interfaz de usuario en iOS’, del Tecnológico de Monterrey; y ‘Motores gráficos en videojuegos’, de la Universidad Autónoma de Barcelona.

Entre los cursos en inglés están: ‘Phyton para todo el mundo’, de la universidad de Michigan; ‘Criptografía’, de la universidad de Stanford; ‘Seguridad del software’, de la universidad de Maryland; ‘Diseño de juegos, arte y conceptos’, del Instituto de Artes de California; ‘Diseño web para todo el mundo’, de la universidad de Michigan; y ‘Desarrollo y diseño de sitios web’, de la universidad de Londres. Como mínimo, estos cursos tienen subtítulos en inglés.

Hay varios cursos gratuitos, pero si quiere un certificado, debe pagar cerca de 50 dólares; otros cursos tienen costo (hay de 50, 100, 250 dólares, etc.). Algunos tienen una fecha de inicio definida, mientras que otros los puede empezar en cualquier momento. Hay cursos cortos –de 15 a 20 horas– y otros de varios meses. Ciertos cursos son para principiantes, mientras que otros requieren conocimientos previos en algunos lenguajes de programación.

Dash

Dash

Este sitio, creado por una entidad educativa de Nueva York llamada General Assembly, le enseña los rudimentos básicos para crear un sitio web usando HTML, CSS y JavaScript. Lo interesante es que esto se aprende a través de tareas específicas que usted debe completar en una interfaz que le muestra tres cosas: arriba a la izquierda una presentación con lo que debe aprender, abajo a la izquierda el código sobre el cual debe trabajar y a la derecha los resultados en una página web o un dispositivo móvil.

Entre las tareas en las que debe trabajar están: crear el encabezamiento y el logo de una página en HTML, insertar imágenes, hacer que esta se vea bien en diferentes tamaños de pantalla, crear animaciones simples con JavaScript, hacer que JavaScript capture y devuelva datos, etc. Todo el contenido está en inglés.

Web Platform Docs

Web Platform

Lo pensamos mucho para incluir este sitio web porque no está terminado, pero algunos de los artículos que ofrece tienen información muy relevante para alguien que está aprendiendo a programar. Por ejemplo, el sitio le da información sobre la creación e historia de Internet; cómo se desarrollaron estándares como HTML y HTTP; cómo funcionan Internet, un servidor web y un sitio web; y consejos para seleccionar un nombre de dominio, entre otros.

También tiene cursos básicos de HTML, CSS y JavaScript, pero estos carecen de interactividad. Los artículos están en inglés, pero algunos ofrecen una versión en español. Este sitio fue creado por el consorcio W3C, con el apoyo de compañías como Microsoft, Google, Apple y Facebook (W3C es una entidad que trabaja en el desarrollo de estándares para la Web).

HTML Dog

HTML Dog

Los lenguajes más usados para la creación de sitios web (desde el punto de vista del usuario o cliente) son HTML, CSS y JavaScript. Estos son el foco de este sitio web, que ofrece tutoriales fáciles de seguir. En los tres casos hay tutoriales básicos, intermedios y avanzados. El sitio no es interactivo, así que debe tener a mano un editor de texto para escribir su código en el computador y ver los resultados en un navegador. Todo el contenido está en inglés.

Bento

Bento

Más que enseñarle a programar, Bento lo guía para encuentre los mejores recursos de Internet para estudiar por su cuenta. Este sitio tiene clasificados los mejores tutoriales gratuitos y le dice qué necesita aprender y en qué orden.

Hay recursos para aprender lenguajes como Java, Ruby, Perl, C#, PHP, Python y JavaScript; también de lenguajes para crear apps para sistemas móviles iOS, Android y Windows Phone; y cursos básicos de técnicas como SEO, de fundamentos de protocolos de Internet como HTTP, de seguridad de un sitio web, etc. Todo el contenido está en inglés.

Platzi

Platzi

Platzi, que tiene entre sus fundadores al bogotano John Freddy Vega, le ofrece cursos sobre programación y desarrollo de sitios web, entre otros temas. Muchos están en español y generalmente se basan en clases grabadas en video. No todos los cursos son gratuitos (el sitio ofrece acceso a todo su contenido por una mensualidad de 77 mil pesos), pero entre los que no tienen costo hay cursos sobre programación básica, estrategias y técnicas de SEO, Java, leyes de diseño interactivo y diseño de interfaces.

Khan Academy

Kahn

Este sitio sin ánimo de lucro le ofrece varios cursos gratuitos sobre programación y computación en general (en realidad, hay sobre infinidad de temas). En los cursos de programación generalmente usted escucha un audio que le explica los conceptos, mientras va viendo en un editor de texto cómo se trabaja el código y en otra ventana qué cambios produce eso en una página web. En otras partes usted tendrá que realizar ejercicios para evaluar qué tanto ha aprendido. Casi todos los cursos son sobre HTML, CSS y JavaScript. Los audios están en inglés.

Code School

Code School

Este sitio le ofrece 50 cursos sobre temas como construcción de sitios web con HTML y CSS, buenas prácticas en JavaScript, principios de diseño para mejorar la apariencia de los sitios web, creación de aplicaciones para iOS con Objective-C, programación con Ruby, manipulación de bases de datos con SQL, etc.

Los cursos en Code School son interactivos (usted va viendo los resultados de lo que hace). Con una cuenta gratuita se pueden tomar 10 cursos introductorios; para entrar al resto se debe pagar una suscripción que vale 29 dólares al mes y brinda acceso a todo el contenido.

Su kit de herramientas

Si quiere aprender a programar, tenga en cuenta los siguientes conceptos y requisitos:

– Un editor de texto. Esta es su principal herramienta para dedicarse a escribir código de programación. Es como Word para un periodista; pero no, en Word no se programa. Lo que se utiliza es un procesador de texto sencillo, que no introduzca ningún tipo de formato en los documentos. En Windows ya tiene uno instalado, Notepad, pero es recomendable que descargue un editor más potente y enfocado en programación. Uno de los más recomendados para Windows es Notepad++ (notepad-plus-plus.org), que es gratuito.

– Navegadores recientes. Mientras aprende a programar, tendrá que escribir una gran cantidad de código, que debe probar en los diferentes navegadores web. Por ello, es importante que baje las versiones más recientes que pueda instalar de los navegadores que usa (Chrome, Firefox, Edge, Opera o Safari).

– Un horario fijo. La ventaja de los cursos en línea es que usted puede aprender sin salir de su casa y combinar sus estudios con otras actividades, como trabajar. Sin embargo, para que el aprendizaje por su cuenta funcione, debe fijarse un horario diario de estudio, que debe respetar contra viento y marea.

– Inglés. Las personas aficionadas a la tecnología –como los lectores de ENTER– suelen tener un nivel aceptable de inglés, al menos leído. Pero es importante que refuerce todavía más su inglés: el mejor contenido de Internet está en ese idioma, y se perderá clases maravillosas en varias de las mejores universidades del planeta si no tiene un buen nivel en ese idioma. Muchos de los cursos que recomendamos en este artículo tienen subtítulos en español, pero estos suelen ser confusos o estar mal traducidos (los subtítulos en inglés siempre están mejor).

– Libros. Después de agarrar las bases de un lenguaje en un curso en línea, puede seguir profundizando en los incontables libros que hay sobre programación. Algunos no son baratos, pero si los compra en Amazon para la app Kindle (en inglés la mayoría), quizá le cuesten menos. También hay muchos libros electrónicos gratuitos en la Red.

– Un mentor. Es uno de los consejos que más citan en Internet. Alguien que lo guíe o le pueda resolver sus dudas es un gran activo para aprender a programar.

– Disciplina. En algún lado leímos que la falta de voluntad es como una enfermedad mental. Estamos de acuerdo con eso, pero para esta sí hay cura: si usted tiene una buena motivación, horarios fijos y buenos hábitos de estudio, poco a poco construirá la fuerza de voluntad que necesita para sentarse a estudiar a diario por su cuenta.

¿Con qué lenguaje comenzar a programar?

Hay varios lenguajes de programación, y el que usted debería escoger para arrancar depende, por encima de todo, de qué quiere hacer con esa nueva habilidad.

Por ejemplo, si quiere aprender a programar para mejorar y pulir un sitio web que está creando (y la plantilla que usa no le da mayores opciones), los que debería estudiar son los lenguajes que se emplean para construir la parte de los sitios o aplicaciones web que interactúan con el usuario o el cliente (lo que en lenguaje técnico se conoce como desarrollo de front-end): HTML, CSS y JavaScript (no es lo mismo que Java). Apréndalos en ese orden. Los dos primeros son mucho más sencillos que JavaScript, que es el que hace su sitio dinámico e interactivo. Como esos lenguajes están integrados en los navegadores web, no necesita mayores herramientas para arrancar y puede empezar a ver resultados inmediatamente.

Del mismo modo, si lo que desea aprender es el desarrollo de sitios web desde el lado del servidor, o sea en las ‘tripas’ del sitio (back-end), los lenguajes a considerar son PHP, .NET, Phyton y Ruby, entre otros. Python y Ruby tienen fama de ser más fáciles de aprender, y por eso se los sugiere para principiantes (igual son potentes; Python es el que usan sitios como Pinterest e Instagram).

Si su motivación está en la creación de aplicaciones móviles, los lenguajes en los que debería concentrarse son Java, en el caso de Android; y Swift, para iOS (se supone que Swift, que es muy joven, terminará remplazando a Objective-C). Vale la pena mencionar que Java es uno de los lenguajes más usados en el mundo no solo en aplicaciones móviles, sino también en la Web y en la creación de aplicaciones para todo tipo de sistemas operativos y dispositivos; sin embargo, no es tan fácil de aprender.

Por otro lado, si lo que quiere es concentrarse en los lenguajes que más demanda laboral tienen hoy en día, los emprendedores tecnológicos que consultamos en el país nos dijeron que los tres lenguajes para aprender son JavaScript, PHP y .NET.

En lo que coinciden varios expertos en programación es que, una vez aprenda el primer lenguaje, los siguientes serán mucho más sencillos, ya que se basan en conceptos similares.

Sobre ese tema, hay tres artículos muy buenos que debería leer: ‘Which Programming Language Should You Learn To Make Money’, del sitio web Dev/Code/Hack, aunque tenga en cuenta que es de hace tres años (no se menciona Swift, por ejemplo, que se lanzó en el 2014); ‘Which Programming Language Should I Learn First’, del sitio web LifeHacker; y ‘Five Best Programming Languages for First-Time Learners’, de LifeHacker.

Imágenes: iStock y capturas de pantalla

Javier Méndez

Javier Méndez

A mediados de los años 80 tuve un paso fugaz por la facultad de ingeniería de sistemas de la Universidad de los Andes, pero me tomó pocos meses descubrir que escribir código era mucho menos apasionante que escribir artículos. Desde entonces pienso que la tecnología es más divertida cuando se la disfruta desde afuera que cuando se la sufre desde adentro. Y aunque mis primeros pasos en el periodismo los di en la sección deportiva de El Tiempo, era cuestión de tiempo para que aterrizara en el mundo de la tecnología. Llevo 30 años escribiendo sobre tecnología, primero en El Tiempo, y ahora en la revista ENTER y EmpresarioTek.co. Puede seguirme en Twitter en @javiermendezz

View all posts

26 comments

  • Creo que la mayoria sino todos de los que colocaron son en ingles por lo que si se pretende que desde el colegio se les enseñe a programar ya va mal la cosa. En Miriadax hay cursos en español ya que es de España https://miriadax.net o en la misma pagina del SENA hay tambien cursos para aprender a programar.

    El problema de enseñarles a programar desde el colegio es que se ve es como un negocio por parte del estado y de Microsoft porque son los que ofrecen eso y la idea es que desde pequeños esten casados con las tecnologias de Microsoft, si les eneseñaran cosa como C, Java, Python, PHP o bases de datos como MySQL, SQLITE, Posgress etc seria bueno pero todo lo que les dan es lo de Micrsoft para hacerlos dependientes de ellos

      • los cursos del SENA no son tan malos como aparentan, pero para el trasfondo digital sí que están desactualizados: quizás aprender C++ y Java no sea suficiente, pero se inicia con algo. Yo ya los hice hace más de 4 años y todavía mantengo el material de aquella época.

    • Tiene razón en su comentario, Tuxerito. Entre los sitios recomendados me faltaron opciones en español. Gracias por los que sugiere y todos los que conozca y quiera recomendar son bienvenidos.

      • En realiad si menciono 1 en español y por eso dije «Creo que la mayoria sino todos de los que colocaron son en ingles» que en español seria los de Platzi pero he visto algunos de esos cursos(de los grautitos algunos videos) pero aveces son mas carreta que contenido sobre todo los de Freddy entonces por eso no lo cuento.

        De los sitios que usted menciono, hace tiempo hice algunos cursos en Edx, Coursera, Code school y son muy buenos, por lo menos a mi me gustaron sobre todo por la forma de enseñar y de presentar las pruebas. Tambien he hecho algunos cursos en Udemy(Ingles y normalmente son de pago pero se consiguen aveces gratis algunos).

  • no recomiendo ruby ni python (apreciación personal). esos lenguajes se volvieron populares, pero por las razones equivocadas, así como sucedió con el basic hace algunos años. resulta que muchos (incluyéndome) aprendimos con el basic, peroc ogimos malos hábitos como el goto. y se volvió popular porque venía incluído en el dos, y ven´´ian juegos de ejemplo en basic. luego amedida que prueba otras cosas se da cuenta que está haciendo las cosas de forma equivocada, y que hay mejores opciones

    El cuento con estos es que por ejemplo, asíc omo el basic que yo le daba una instrucción y la ejecutaba interpretada sin pasar por compilación de todo el programa, o que simplemente indentando ya construyo bloques de código, esos uena práctico porque puedo ver los resultados de inmediato, igual que con el basic, pero eso no signifiva que salgan cosas como deben ser. un espacio no es la forma más adecuada de marcar un bloque, aparte que es arbitrario, y que lo de sacar resultados rápidos no es una buena política si se están haciendo proyectos en una empresa. cuando ud corre un programa de nómina no lo hace con un prototipo hecho a partr de ensayo y error, sino con algo que tuvo qué ser planeado y discutido, y que tuvo qué pasar por un proceso. así que porque voy ensayando y va saliendo, eso no es una razón pata hacer en esa herramienta el programa que va a correr los procesos de la empresa. por otro lado no mencionan a c++. de pronto c++ tiene fama de complicado, pero c puro no, y si aprende uno luego el otro es un paso más. en cambio, cada que alguien saca un aparato nuevo, lo primero que saca es el compilador de c++. supongamos que ud quiere hacer juegos. si nintendi saca unanueva consola, hay algfunas posibilidades para hacer juegos para esa consola. una posibilidad es usar una plataforma como el unity, que es una herramienta de desarrollo multiplataforma; es decir, ud hace el juego en el lenguaje que la herramienta le diga, y con hacerlo una vez, le queda hecho para varias plataformas (como celulare, playstation etc) y sólo tiene qué hacer el desarrollo una vez. pero eso dependa que alguna compañía saque esa plataforma y le dé soporte, y además está sujeto alo que esa herramienta pueda hacer. si ud usa unity, está sujeto a hacer los juegos con lo que el unity esté en capacidad de hacer. y si quiere sacar su juego para nintendo y unity no exporta para nintendo, pues no le sirve esa herramienta. por otro lado, sin depender de este tipo de herramientas, que son prácticas para unas cosas pero no para otras, cuando cualquiera saca algo nuevo, sea un procesador nuevo, uns istema operativo nuevo, una ueva consola de videojuegos, lo primero que saca es el compilador de c/c++, que de hecho en unix es un comando dels istema (gcc). no es lo mismo que usar una herramienta multiplataforma como unity, pero eslo quemás se le parece, y no está sujeto na los términos comercia,es (que si la herramienta le dice qe ud les debe dar unporcentaje, o si sólo lo puede publicar bajo x condiciones), y ud con el tiempo va desarrollando su propia plataforma. obvio conmucho más trabajo, pues unmity y otros le dan la mitad ya hecho. si quiere hacer juegos, al hacerlo en c/c++ le toca todo desde elprincipio. si quiere hacer juegs le gtoca hacer su prpio motor gráfco, y sus propias librerías del motor físico, o usar librerías que otros ya hayan hecho. y le toca mantener sus libreríaspara los nuevos aparatos que vayan saliendo. pero digamos que es más universal, y que no va a depender de si alguna herramienta saca para ese aparato, o esperar a que por fin la herramienta exporte para tal aparato. y que ud tiene completo control delo que está haciendo

    • Yo inicie con Basic y despues con Visual Basic hace muchos años.

      Creo que no debepende de que lenguaje se enseñe sino que se enseñe bien porque si se le enseña bien a una persona esa persona en el futuro ira probando nuevos lenguajes ya que con tener buenos fundamentos se va a poder desempeñar en otras tecnologias, si se les eneseña mal es cuando se quedan casados con un solo lenguaje y usandolo mal.

      Python no creo que sea tan malo, hay que tener en cuenta que es multiplataforma e incluso funciona para web entonces si alguien aprende Python va a poder aplicarlo en diferentes SOs y tambien para escritorio o web incluso Google lo tiene dentro de los lenguajes soprotados para la nube en AppEngine o por ejemplo es soportado en proyectos como KDE y tambien para desarrollo con QT.

      Tambien hay lenguajes web importantes muy utilizados que no son compilados como por ejemplo PHP e incluso JavaScript entonces no todo lo interpretado es malo, incluso JavaScript que paso de ser del lado del cliente ahora tambien se usa del lado del servidor y muchas empresas lo usan y lo promueven como Google con Angular

  • Soy analista de sistemas desde el año 2006, me catalogué como el mejor programador de la clase, pero desde las prácticas me fui por el lado del soporte técnico de hardware y software, lo que demanda mucho tiempo pero poco suedo. Sé que tengo un gran talento para el análisis y la estructuración de datos, pero no he tenido la oportunidad de engancharme con alguna empresa porque piden experiencia. Me encantaría trabajar para una empresa donde pudiera adquirir más conocimientos y adquirir la experiencia necesaria.

  • Soy analista de sistemas desde el año 2006, me catalogué como el mejor
    programador de la clase, pero desde las prácticas me fui por el lado del
    soporte técnico de hardware y software, lo que demanda mucho tiempo
    pero poco sueldo. Sé que tengo un gran talento para el análisis y la
    estructuración de datos, pero no he tenido la oportunidad de engancharme
    con alguna empresa porque piden experiencia. Me encantaría trabajar
    para una empresa donde pudiera adquirir más conocimientos y adquirir la
    experiencia necesaria.

  • El artículo tiene dos enfoques diferentes…. El primero es aprender a desarrollar software y ganarse la vida de esa forma. El otro es el de aprender a programar. Por supuesto para desarrollar buen software es necesario ser un buen programador.

    Pero programar no es lo mismo que desarrollar software. Programar no tiene nada que ver con conocer un lenguaje de programación o un framework de desarrollo. Saber programar es una forma de pensar, es analizar un problema y abordar soluciones desde diferentes perspectivas. Desde ese punto de vista en los colegios si deberían enseñar a programar. Y por supuesto aprender a programar en el colegio no implica que los estudiantes tengan que elegir una carrera de ingeniería o computación.

    Desde el punto de vista de desarrollo de software, mi recomendación es aprenda a programar bien. Si no lo hace se convierte en uno mas del montón, las mejores ideas que ud pueda tener sobre un servicio en la nube o una app para un smartphone van a tropezar constantemente si ud no le enseñó a su cerebro como resolver problemas. Claro… ud puede contratar a un tercero que lo pueda hacer pero ud ya no sería un desarrollador de software sino un gerente, administrador o emprendedor.

    • Este es un buen punto de discusión. Entrevisté a varios emprendedores, varios de ellos ingenieros de sistemas, y me dijeron que lo que más necesitan las empresas de tecnología del país son programadores, más que ingenieros de sistemas. Pero varios empresarios también me dijeron lo contrario, y en eso coinciden con usted, David: opinan que no basta con saber programar, sino que se necesita la formación que a veces solo tiene un ingeniero de sistemas para sacar adelante los proyectos. Está buena su explicación. Gracias, David

      • Difiero con ese planteamenato, el enfoque de la ingenieria en colombia es muy limitado y para nada actualizado, de hecho los profesores que dan clases en la mayoria de casos no tienen experiencia real en grandes proyectos o siquiera en peuqeños solo se dedican a dar clases y la realidad afuera es muy diferente, un programador es un profesional que necesita estar en constante aprendizaje y eso es lo que marca la verdadera difernecia, un ingeniero recien salido del la universidad no tiene ni idea de lo que les espera, a veces muchos salen pensando que salen a gerenciar y otros no aprenden a programar en la universidad si no afuera cuando ya sienten la necesidad de hacerlo.Con respecto a las startup tienen un enfoque mas fresco e innovador que una empresa tradicional por ende no les interesa que el que desarrolle sea ingeniero al contrario para eso estan las pruebas que se les hacen al aspirante para determinar que tan buenos son por otro lado las empresas tradicionales confian mucho en el diploma del aspirante, no quiero decir que todos los ingenieros afuera sena malos de hecho hay muchos y muy buenos pero tambien hay muchos programadores actualizados y mejor capacitados que ingenieros graduados por eso grandes empresas que han llegado a Colombia no les interesa un ingeniero si no personas con capaciades y experiencia y ante todo con la disponibiliddad de aprender y medircele a retos que no habian visto antes y sobre todo que no enseñan en ningun otro lado solo el que aprendes en tu dia a dia.

        • Si esa es la realidad. Por eso digo que una cosa es programar y otra muy diferente desarrollar. Conozco algunos estudiantes (desafortunadamente muy pocos) que son mejores programadores que muchos profesionales con experiencia, personas muy inteligentes que entrenaron el cerebro desde muy jóvenes.

          Como ud lo dice desarrollar software se aprende trabajando en proyectos reales no en el aula. Desarrollar un excelente producto o servicio necesita experiencia. Pero la experiencia es una cosa que la universidad nunca le va a poder dar.

          Sin embargo, un equipo de desarrollo debe ser balanceado. Entiendo, que por ejemplo el director de desarrollo deba tener experiencia. Pero el programador (el soldado raso) no necesita mucha. Alguna vez estuve a cargo de evaluar empleados y no me importaba la universidad, ni la experiencia. Resulta que con una simple prueba en donde el aspirante tenía que plantear un algoritmo para resolver un problema, ud ya podía tomar una decisión. Las personas que planteaban el algoritmo adecuado demostraron integrarse mucho más rápido al equipo y asimilaban mucho mas fácil las herramientas y los frameworks de desarrollo.

      • Empero no obstante, la realidad es muy multiuniversal y bastante dispareja. A los que estudian ingeniería en sistemas se les «vende» la idea de que pueden abarcar un mundo más amplio que el de computadoras; las empresas en cambio solicitan únicamente profesionales que estén «duchos» y «emperifollados» con la programación como tal. Por lo tanto, las vertientes van en caminos opuestos.

  • Sería muy útil para todos los lectores de ENTER.CO saber qué otros sitios web gratuitos sobre programación que ustedes conozcan vale la pena revisar. También sería muy valioso su aporte sobre con qué lenguaje de programación les parece que se debería comenzar, ya sea por su importancia hoy en día o por su sencillez. Les agradezco sus aportes. Un saludo cordial

  • por la sensillez, hay lenguqjes como eiffel o pascal. vale aclarar que se trata de lenguajes declarativos, como lamayoría de los lenguajes. es decir, funcionan ud diciendo una instrucción, y el computador ejecuta la instrucción. esto también implica que el computador no hace suposiciones; es decir, un lenguaje sencillo no significa que ud no le explica claramente lo que quiere hacer, y el aparato supone el resto, o que ud sólo tiene qué hacer una parte y el programa hace el resto. si ud quiere algo, sea en el lenguaje que sea (si es declarativo), no hay magia. el computador no puede suponer lo que ud quiere hacer si ud no le dice explícitamente. lo que s erefiere alenguaje sencillo es que son lenguajes claros con una sintaxis bien definida, y sin embargo son suficienteemnte potentes para hacer prácticamente cualquier cosa. tambien está el actionscript, el de flash o el de adobe. hay países como inglaterra, donde entre los 80 y principios de los 90 salieron varias compañías de renombre principalmente de jóvenes que hacían juegos caseros,c on el computador que los papás le regalarond e navidad (generalmente, el zx spectrum), y sin embargo se volvieron grandes empresas. si no es excel, uno de los grandes motivadores para aprender aprogramar son los videojuegos. la ventaja de flash es que así como el unity, es un ide. es decir, hay un lenguaje de programación, pero ese lenguaje de programación (actionscript) se combina con otras herramientas que van incluidas en la plataforma, con las cuales ud puede hacer un dibujo, y luego con el lenguaje, ud le dice cómos e mueve ese dibujo en la pantalla. flash ya no se está usando para cosas web (o mucho menos frecuente que lo que se hacía hace algunos años, por la mala prensa que le dieron otras compañías que uqe´rian competir o que teníanc onflicto de intereses con el flash), pero sís e usa para aplicaciones móvile, y junto al unity, posiblemente son las herramientas multiplataforma más usadas para este propósito
    por otro lado, si es para entrenar para la vida real, ni el eiffel ni el pascal se usan en la vida real; aunque podrían, ya que son lo sufcientemente potentes y completos para la mayoría deproyectos, pero simplemente no son populares. para esto, se puede comenzar con el c puro. el c puro puede hacer lo que cualquiera de los anteriores. la gente se empieza a echar para atrás con la cuestiónd e los apuntadores, los mallocs (manejo de memoria) ye sas cosas; sin embargo, para lo que se hace en algo como pascal, en c sería muy parecido. por otro lado, aprender con java es casi que aprueba de errores, pero para eso no sólo e s necesario aprender la idea del flujo deprograma y las condiciones y los ciclos; también es necesario aprender el concepto de objetos. sin elc oncepto de objetos simplemente no es posible aprender en java (y tal vez en eiffel tampoco, ya que sehizo precisamente para implementar la idea de programación por objetos). si la persona no tiene el concepto de condiciones y ciclos de iteración, emnos va a empezar con objetos.
    por otro lado, si es para juegos y no quiere empezar con flash, la alternativa es el javascript (html5) que es lo que todos dicen y promueven como el salvador que nos va a liberar del malvado flash. empezar con html5 para hacer lo que se haría con flash puede ser un descalabro. el html5 no es un estándard, y hacer algo en html5 no significa que vaya a correr en todas partes, o que en todas partes corra igual. no todfos los navegadores lo corren igual o soportan el mismo conjuntod e instrucciones, o en todos los navegadores se les dicen las cosas de igual manera; demanera que, haciendo a un lado que la sintaxis de html5 es mucho más complicada que la de flash, que se parece a los lenguajes declarativos conocidos, normalemnte un programa de html5 primero le pregunta al navegador qué tipo de navegador es. si es de tal marca, le dice que haga las cosas de cierta manera. si es de tal otra marca, le toca ejecutar las cosas deotra manera. para alguien que apenas quiere empezar, eso sería lo más frustrante; andar adivinando cómo hacerlo para un navegador o por que no le corre o las peripecias para hacerlo para el navegador que él o ella está usando para probar las cosas. y apesta. por otro lado, en html5, que se edita con el block de notas o si tiene suerte con la misma herramienta que usa para editar el flash, ya que es una cuestiónd e uns cript hecho en un programa de texto, para los dibujos no es tan simple como usar la línea de tiempo de flash y llamra por frames (o cuadros de animación). acá los dibujos y los estados de unmulñeco que se mueven, son zonas de dibujo en una misma gráfica, y luego llevar la cuenta del pedazo de dibujo que hay qué mostrar, en vez de simplemente decirle muestre tal dibujo, o tal personaje en tal posición. si es el futuro como lo pintam, la verdad complicaron bastante el futuro, pero ya nos tocó así
    si es para salir a ganar plata, php y java (si aprende java aprende c#, que le copió todo a java)

  • Con cuál lenguaje empezar…… la otra vez mi novia me dijo que le enseñara a manejar, pero mi carro es automático y le dije que era mejor que aprendiera en uno mecánico…. ella me dijo que no le importaba, que si ella compraba un carro iba a ser automático…… Y creo que tiene razón en cierta forma….

    Si ud no asistió a una carrera formal de ingeniería de sistemas y quiere aprender a programar, puede ser realmente doloroso aprender a programar con C++ o Java. Principalmente xq para entender el conceptos de compilación, apuntadores, objetos, clases, buffers, paso de parámetros por referencia…. usted necesita teoría la cuál no es fácil de asimilar fuera de las aulas.

    Mi consejo es…. primero aprenda JavaScript. No necesita instalar IDEs complicados o instalar compiladores. Todo lo que usted necesita es un editor y un navegador… los cuales seguramente ya están instalados en el computador de su casa.

    Una vez esté familiarizado con JS….. es hora de saber si le gusta programar o sólo fué un antojo. La mejor forma de saberlo es con un juego. Vaya a «play . elevatorsaga . com» Si completa el 70% de los niveles siga con su sueño, sino, es tiempo de evaluar la posibilidad de asistir a la U o dedicarse a otra cosa.

  • Interesante articulo, pero mas alla de eso bastante necesario, concuerdo con la innegable necesidad de aprender a programar para luego aprender a desarrollar, igualmente el ingles es recurso que se debe tener si o si almenos poder leerlo sin mucho problema, pues es en este idioma donde estan los mejores contenidos educativos al respecto, hablese de libros, manuales, documentacion de los lenguajes, etc…
    Me permito dejar un sitio bastante bueno, lo recomiendo muchisimo: http://www.theodinproject.com
    (Cabe resaltar que esta en ingles)
    Es estudio autodidacta puro y duro.

  • La pregunta filosófico-existencialista que hay que hacerse es: ¿cómo llenar los puestos de trabajo si las empresas, al menos las de acá en Venezuela, piden una cierta experiencia que las universidades no otorgan de forma completa? Más allá de dominar determinados lenguajes de programación, la experiencia humana (como ser proactivo, actuar normal bajo presión, que de por si es un bien más que escaso, saber cumplir periodos de entrega, saber trabajar correctamente en equipo, poder conocer el entorno laboral actual, y un largo etc).

Archivos