¿Cómo aprender programación?

De vez en cuando algunas personas me hablan para pedirme consejo sobre donde empezar en temas de programación, en la mayoría de ocasiones me dicen "Oye Ángel, ¿Sabes de algún tutorial de X lenguaje de programación/librería?.

Parece una pregunta simple y de rápida contestación, pero lo cierto es que me cuesta bastante dar una solución a esta pregunta. ¿Como he aprendido yo a programar? Tampoco lo se con seguridad, lo que si estoy seguro es que no aprendí a programar a través de un tutorial, sino de muchos tutoriales, a parte de mucha práctica, experiencia y Universidad.

Por tanto cuando me hacen una pregunta de este tipo intento ser lo más concreto posible y remitir a un tutorial sobre el lenguaje de programación/librería que me han preguntado, a ser posible siempre de la página oficial del lenguaje de programación/librería.

Pero esto no es suficiente para aprender a programar, para mi hay 2 partes en una buena enseñanza de programación.

  • Los fundamentos o metodologías
  • Lenguajes de programación concretos

Si aprendes los fundamentos te será relativamente simple usar varios lenguajes de programación con un mínimo de adaptación, pero si empiezas aprendiendo un lenguaje de programación carecerás de una buena base, aunque con el tiempo y debido al uso de dicho lenguaje de programación acabarás dominando los fundamentos.

Para los fundamentos no puedo más que poner enlaces a 3 asignaturas que tuve en la carrera

  • Meotodologia y Tecnología de la Programación
  • Programación Orientada a Objetos
  • Tecnologías de Desarrollo de Software

Metodología y Tecnología de la Programación

Programación Orientada a Objetos

Tecnologías de Desarrollo de Software

A continuación listo algunas librerías y lenguajes de programación que he usado, tanto personalmente como profesionalmente (se me quedan algunas tecnologías en el tintero como puede ser ObjectPascal, Ensamblador o Visual Basic, pero no descarto actualizar esta entrada en un futuro), con uno o varios enlaces hacia la documentación o tutorial, que por lo general es la documentación que yo he consultado para dicha tecnología.

PHP

Python

Ruby

HTML y CSS

Javascript

Java

C#

C++

Bases de Datos SQL

Bases de Datos NoSQL

Laravel

Django

Ruby on Rails

Angularjs

Android

libGDX

Box2D

Ogre3D

GTK

Qt

Succinctly

Succinctly son una serie de libros gratuitos editados por la empresa SyncFusion que personalmente me gustan bastante

Jesús Conde

Jesús Conde es un profesor de secundaria que realiza videos en su canal de youtube sobre distintas tecnologías y aunque, a para mi gusto, son algo básicos y se limita a seguir la documentación hay gente a la que le pueden resultar útiles

Por supuesto, falta un recurso importantísimo a día de hoy que no podía faltar y que personalmente me ha resuelto bastantes problemas

StackOverflow

Para todo lo demás Google is your friend