Esta es una buena pregunta que está presente en muchos foros de Internet, ya que, muchos iniciados se la hacen. Ahora bien, la programación se puede aplicar para muchas cosas. Por lo que, quien desee aprender a programar, previamente debería preguntarse para qué quiere aprender. Así, por ejemplo, no es lo mismo la programación estructurada que la orientada a objetos, o programar un dispositivo electrónico que programar un videojuego. En cualquier caso, soy de la opinión de que antes de ponerse a aprender a programar en un lenguaje de programación específico (C, Pascal, JAVA, ...) se debería aprender a diseñar algoritmos y, de esta forma, familiarizarse con elementos básicos de programación, tales como: tipos de datos, variables, constantes, operadores, expresiones, instrucciones... Una vez consolidados dichos conceptos básicos diseñando algoritmos, el aprendizaje de un lenguaje de programación específico será mucho más fácil.