No soy experto programador pero creo que la costumbre antes de embarcarse en estudios superiores es empezar por c y los típicos ejercicios de matemáticas (Un programa que halle la media de tres números, que separe los números primos de los no-primos, etc), esta página tiene muy buenos ejemplos en gran cantidad de lenguajes :
Diagramas de Flujo y Algoritmos
Espero serte de ayuda
Disiento. C es muy potente pero empezaría antes por un lenguaje más esctrictamente tipado, ya que si no C puede inducir constumbres peligrosas (por ejemplo un char a = 43 te lo da por válido aunque los tipos no coincidan. Cuando estudiaba aún se ensenaba MODULA-2, que es muy bueno en este aspecto aunque no te lo recomendaría ahora porque para empezar tendrías que volver a MS-DOS
Metodología de la programación es lo que buscas. Una vez que lo domines empieza con C. Y cuando lo domines pásate a un lenguaje orientado a objetos (C++ o Java).
intercambiosvirtuales.org/libros-manuales/metodologia-de-programacion-a-traves-de-pseudocodigo-1era-edicion-mcgraw-hill
Salud
Exacto, la metodología es fundamental para poder disenar un código eficiente. Cualquier pueblerino puede aprender la sintaxis de un lenguaje en unos días, pero hacer un código que funcione bien, sea entendible por otros y además escalable y mantenible es otra historia.
Aprovecho para preguntar:
En cuanto tiempo (meses) creéis que se puede aprender a programar para trabajar de picateclas?
Pongamos una persona adulta con buena capacidad de estudio y gestión del aprendizaje autónomo y unas 20 horas de dedicación semanales.
Pues he visto gente trabajando en cárnicas tras un cursillo de Java de dos semanas (vendidos como expertos al cliente), pero su rendimiento dejaba bastante que desear. Al final dependerá de cada uno, de su pensamiento analítico, del empeno que le ponga, si disfruta haciéndolo, etc.
A todo esto, ppuedo anadir dos consejos:
1 - Si ya tienes algun oficio previo, busca un lenguaje que case bien con eso y especialízate. Por ejemplo, si vienes del mundo de las finanzas, aprende R (o en su defecto Python), que es muy potente para análisis estadístico. Si vienes del mundillo industrial, aprende a programar PLCs o microcontroladores, etc. Eso siempre te dará más oportunidades laborales que ser uno más de los millones de picateclas generalistas de Java que hay en el mercado.
2 - Como ya te han dicho antes, aprende de los demás. Descarga códigos fuente a mansalva , entiéndelos, modifícalos, mejóralos. Y si no entiendes algo, pregunta en foros especializados; hay muchísimos cracks que te pueden echar una mano. Y cuando tengas un cierto nivel, cuelga tu código en sitios como github y úsalo como carta de presentación.
Edito para anadir que solo te dediques a esto si realmente lo disfrutas de verdad. La programación puede ser MUY frustrante si estás a disgusto con lo que haces, y lamentablemente hoy en día los sueldos tampoco compensan demasiado (al menos en Espana).