Si en alguna ocasión hemos hablado de cómo introducir a los niños en el mundo de la programación, hoy vamos a plantear un artículo similar pero con un enfoque diferente. Como aprender programación en verano siendo adultos.
La programación, una vez más, como herramienta que ayuda a estructurar la mente, a plantear nuevas formas de solucionar problemas de la vida diaria o, por qué no, a enseñar a tu hijo/a a dar sus primeros pasos en este mundo. La programación también puede ser un excelente tema que aprender durante este verano, y hoy te vamos a dar algunas pistas y trucos para ponerte con ello.
No queremos que te conviertas en profesional
En primer lugar debemos hacer un pequeño disclaimer: no buscamos convertirnos en programadores profesionales, nunca, bajo ningún concepto. El que quiera encontrar su camino laboral como programador no encontrará aquí el post definitivo.
Hoy ahondaremos en cómo dar los primeros pasos en la programación como afición, aprovechando el punto divertido que tiene y las consecuencias de la fase de aprendizaje que son compartidas con las que ya mencionamos cuando hablábamos de la programación educativa. Se mejoran ciertas aptitudes tales como la resolución de problemas, el pensamiento lógico-matemático y, más en general, todo lo relacionado con el pensamiento computacional.
Daremos por hecho que un adulto no necesita socializar, compartir y dialogar con otros iguales, aunque por supuesto esto puede ser interesante en ciertos casos puntuales. Un adulto puede aprender de forma más individual e independiente del grupo, y éste será el enfoque que plantearemos con los siguientes consejos.
Puedes empezar igual que los niños
Nos referimos a los programas y la metodología. Scratch como herramienta principal y que te proporcionará una base sobre lo que es un algoritmo y la forma como "piensan" los ordenadores. Si no tienes conocimiento alguno sobre programación, debes empezar primero en los tutoriales de Code.org, para así aprender las nociones básicas.
Una vez las hayas obtenido Scratch es una muy buena segunda-opción, dada la variedad de programas y proyectos que nos permitirá crear. Aquí debemos activar nuestra mente para iniciar nuevas ideas que tengamos en la cabeza y, si es posible, añadir incrementos iterativos. Por ejemplo, a un simple Pong podemos añadirle marcadores, tiempos de duración de la partida, ranking, estadísticas, nuevos movimientos especiales, objetos de bonus... y será un Pong con esteroides, perfecto para aprender.
Si ya dominas Scratch con cierta soltura podrás abandonar los lenguajes 'de juguete' y pisar a fondo hacia lenguajes más serios y formales, de tipo texto. Opciones como Python que es para muchos el gran entorno 'real' después de los lenguajes visuales y de colores, o Arduino, sobre el que hablaremos específicamente más adelante al ser una opción genial.
Arduino: buscando la utilidad 'real' con robótica
Estamos acostumbrados a programar frente a una pantalla, y a que los resultados de esta programación aparezcan en el terminal. Con Arduino las cosas cambian, y precisamente uno de sus grandes atractivos es poder sacar resultados 'reales' a partir de la programación en pantalla.
Crear robots con Arduino es algo más complejo que hacerlo con LEGO MindStorms (si tuviese que recomendar un kit de robótica que no estuviese relacionado con Arduino ese sería, sin duda, MindStorms), pero también mucho más económico y en el camino aprenderemos mucho más. En Arduino deberemos reiniciar nuestra cabeza y poner el contador a cero, ya que es un mundo separado que requerirá que nos informemos sobre el mundo de la electrónica, motores, sensores y posibilidades.
Arduino puede ser la mejor opción en la que pasar varios meses aprendiendo, tirando del hilo y evolucionando nuestras ideas. De un sencillo robot con ruedas podemos pasar a robots rastreadores, y luego a arañas. A medida que vayamos avanzando se irá abriendo el camino con el siguiente paso a realizar.
El horizonte, más lejano
Es algo obvio pero que muchas veces puede pasar inadvertido. Márcate metas, y estas metas deberán estar mucho más lejos que las que un niño/a se pone cuando aprende este campo.
Por ejemplo crear una impresora 3D con Arduino puede ser un interesante proyecto a largo plazo, y con él puedes tanto aprender cuestiones de hardware (componentes, drivers, compatibilidad) como software (toda la programación necesaria que rodea al hardware). Igualmente en Arduino hay robots extraordinariamente complejos:
Obviamente antes de llegar a tener un robot araña que interprete nuestras órdenes de voz es necesario 'aprobar' todas las fases anteriores: los robots rastreadores pueden ser un primer paso interesante, para luego ir creciendo a partir de ellos.
Con la programación más tradicional ocurre algo parecido: un adulto puede llegar a crear programas más complejos que los realizados por un niño, pero igualmente deberá ir evolucionando de forma progresiva, y paso a paso. Empezar con las bases de un lenguaje e ir evolucionando, creando tu propio software. Un interesante enfoque es crear software de gestión para uso propio, como pueden ser agendas de contactos, recetarios, etc. Son relativamente sencillos de implementar, completos y tienen una utilidad clara y específica.
Una vez hayas obtenido una cierta base de programación puedes ir a por opciones cuyos resultados son mucho más atractivos que el código directo. Por ejemplo Unity es una herramienta gratuita para uso personal de la que existen decenas de tutoriales muy sencillos de seguir y cuyos resultados son geniales, permitiendo sacar partido al lado creativo además del lógico-matemático.
¿Ideas? ¿Libros? ¿Tutoriales?
Internet es un gran aliado para aprender a programar, tengas la edad que tengas. Por ejemplo, aquí tienes una recopilación de 125 proyectos de programación que puedes empezar a realizar, desde ejercicios básicos como invertir una cadena de caracteres, contar vocales, comprobar si una palabra es palíndromo; hasta cosas más complejas como sistemas de gestión, sistemas de descarga, gestores de Telnet, pizarras 'blancas'... y mucho más. También tienen por aquí 49 ideas de juegos para 'clonar' y, de paso, aprender programación.
Sobre programación existe mucha literatura. Cientos y cientos de libros y manuales, con editoriales especializadas como O'Reilly y sus imprescindibles Head First. Son manuales típicamente caros, pero habitualmente son herramientas esenciales si lo que buscamos es un libro físico. O'Reilly también tiene los Cookbooks que abarcan mucho más conocimiento, también divididos en lenguajes.
Los recursos gratuitos también pueden ser muy importantes, y ejemplos hay muchos: Learn Python, Codecademy, Khan Academy, CodeSchool...
Los recursos gratuitos también pueden ser importantes, en muchas ocasiones mejores que cualquier libro físico aunque nos costará dar con la tecla adecuada. Hablamos de guías y tutoriales como por ejemplo Learn Python, los de Codecademy (Python, JavaScript, HTML+CSS, PHP, Ruby) o el excelente curso de Khan Academy sobre ciencias de la computación. También hay webs especializadas que ofrecen algunos cursos gratuitos y otros de pago, pero que merecen mucho la pena: CodeSchool (Ruby, iOS, HTML+CSS) es un imprescindible. Si quieres más alternativas, en Quora tienen un hilo con decenas de estas otras opciones.

Si vamos a por algo más visual podemos optar por videotutoriales en Youtube, que pueden servir perfectamente en las primeras fases del aprendizaje. Tutoriales, vídeos y primeros pasos en un lenguaje o una tecnología que podremos seguir rápidamente; por ejemplo uno para Scratch, unos cuantos para Python o cómo construir tu primer robot en Arduino.
Al final, como casi todo, aprender a programar es una cuestión de práctica. De probar, fallar, reorientar, solucionar, aprender y repetir todo lo anterior. Y así indefinidamente.
Es fundamental ir marcándose metas para ir creciendo y evolucionando, y no quedarse anclado. Internet es un apoyo imprescindible, donde podremos encontrar prácticamente cualquier respuesta que busquemos. Google nos sacará de muchos apuros con una búsqueda correcta; si por ejemplo tenemos una duda sobre strings en Python podemos encontrar excelentes guías de forma rápida e indolora.
Por último, y aunque inicialmente habíamos planteado un aprendizaje individual, las comunidades de 'amigos' de la programación existen. Tanto en el mundo físico, con grupos que periódicamente ponen en marcha iniciativas como charlas o clases específicas sobre ciertos lenguajes o tecnologías, como por supuesto en el mundo digital.

/r/learnprogramming
, fundamental
En Internet encontramos foros, redes sociales, grupos de noticias, webs especializadas y de todo. Imprescindible la comunidad de StackOverflown para resolver dudas y problemas; si lo que quieres es empezar desde cero en Reddit encontramos el /r/learnprogramming) donde incluso tienen un Wiki muy completo con una sección de 'cómo empezar'. Como siempre, los comentarios están abiertos para que podáis añadir y recomendar cualquier comunidad que pueda servir de ayuda para aprender a programar.
Ver 67 comentarios
67 comentarios
azielinsky13
Algo que siempre me ha llamado la atención que casi nunca se menciona en los artículos es que para programar necesitas es lógica y saber abstraer procesos.
El saber un lenguaje de programación es como decir que sabes inglés, alemán o chino, pero si no tienes ni idea de lo que quieres comunicar no te sirve de nada.
Estoy cansado de ver scripts/código que está hecho por alguién que efectivamente sabe la sintaxis de PHP, JS, C++ (o el lenguaje que sea) pero luego no tiene ninguna estructura y se ve que ha ido metiendo código sobre la marcha a medida que iba consiguiendo librerias o funciones que hicieran una u otra cosa.
Creo que la educación informática debería empezar a focalizarse (sobre todo en etapas tempranas) a enseñar a PENSAR y ABSTRAER, y menos a enseñar un lenguaje u otro.
arion1984
Para programar lo que se necesita es tener buena capacidad de abstración y esquematizar los problemas. Para mi es como montar un puzzle. Si no tienes esa capacidad... te va a costar mucho muchisimo. Pero poco a poco y con voluntad, se puede ir consiguiendo y cada vez podras gestionar en tu mente proyectos mas grandes.
Los lenguajes de programación vendrían a estar en un plano secundario ya que si sabes programar "en tu mente" (pseudocódigo) entonces puedes programar en cualquier lenguaje. Un lenguaje de programación se aprende en pocos dias.
Abrir la mente, ese es el único secreto.
dago.pa1
Lo que importa realmente es la lógica, conocer las estructuras de control universales y la forma de hacer algoritmos. El punto es transformar problemas reales en modelos matemáticos que posteriormente se expresan en algún lenguaje de programación para que puedan ser resueltos por una computadora.
josemicoronil
Ojo, la mayoría de tutoriales que vais a ver por internet, YouTube, etc., lo que enseñas es a codificar más que a programqar, es decir, a escribir código que al ejecutarlo va a realizar una acción u otra.
A menos que te enseñen en la escuela, facultad, etc., los mejores recursos que podéis tener son libros, más que tutoriales, ya que en un tutorial puede que esa persona tenga ganas de enseñar algo y no tenga la capacidad para ello o puede que sí, mientras que hay libros creados por gente bastante cualificada que te explica desde cero cómo funciona el ordenador, cómo se compilan los programas, cómo se ejecutan, cómo afecta ciertas acciones a la memoria utilizada por el programa, etc.
En lo que me corresponde, el lenguaje que más utilizo es C++, y de forma secundaria Python3, y a la hora de aprender o mejorar tus conocimientos de C++ os recomiendo el libro "Cómo programar en C/C++" de Deitel, Editorial Prentice Hall, ya que ahí os van a explicar no sólo librerías estándares y funciones más comunes (lo que se hace en la mayoría de tutoriales) sino que además prácticas "sanas" de programación, errores comunes, cómo afecta los tipados, manejos de memoria, etc. al propio programa, y la verdad no sólo sabes codificar, sino que además sabes de verdad programar, ya que sólo con leer/escribir el código sabes lo que la máquina va a hacer con dicha información.
Una vez sepaís lo básico de cualquier lenguaje podréis utilizar infinidad de APIs, bibliotecas no estándares de todo tipo, y todo lo que se os ocurra.
Saludos !
lhfever
Aprendía a programar BASIC allá con un MSX, en el cole, y allí lo dejé, siempre tengo la raspa metida. Y allí si que empezábamos con los Rombos/Rectángulos (lo siento pero no se como se llama) primero te sientas y haces el árbol, y después empiezas a rellenarlo. Me sirvió de mucho para otras cosas,un gran problema lo reparas en pequeños.
Usuario desactivado
Como primerísima toma de contacto yo recomendaría Code.org por encima de cualquier otro y creo que hablando de programación se le podría dedicar algo más que una frase, sus actividades guiadas están genial para una primera toma de contacto con la mecánica de la programación y la abstracción de cualquier lenguaje.
Sporty
Solo comentar que bajo mi opinión la programación es desagradecida.
Para hacer algo valorado en 1x tienes que saber 5x. No vale con rascar, debes profundizar.
Y si llegas a hacer un buen código, igual no te lo valoran, igual uno a 20.000kms lo hace por la mitad etc
Y cada nada de tiempo a actualizarte, aprender nuevos lenguajes etc
Bonito pero desagradecido
doctor_crisis
Muy interesante el articulo y lo que comentáis de la lógica.
Entonces la duda y pregunta. Para alguien que se quiere introducir en la programación como pone el articulo ¿Por donde empezar con la lógica e iniciarse en la programación?
Saludos.
josemazcorro
muy interesante! Yo soy filosofo y con el tiempo he desarrollado una logica propia con reglas y principos basados en convicciones propias.. es complicado pero que me recomendarian para empezar a programar esta logica? Quiero decir me interesa lo mas basico de lo mas basico y claro uno que otro programa para administrar mis contactos o mis mensajes y textos.
hellgadillo
¿Y porqué no convertirnos en profesionales?
Yo a mis años empecé comprando un arduino y varias cositas, apenas empiezo pero ha sido tal el gusanito que se me metió que apenas hace una semana me aceptaron en una universidad en linea para estudiar desarrollo de software, no creo que forzosamente se necesite tener 18 años para empezar en este mundo.
konamiman
Es Stack Overflow, no Stack Overflown, aunque el significado sea parecido :-) (y se escribe separado, por cierto, no "StackOverflow")
Ah, y no olvidéis que también tenemos un sitio en español: https://es.stackoverflow.com
imf017
Para programar hay que valer, y eso es algo con lo que se nace o no se nace. No se trata de aprenderse un lenguaje de programación concreto, sino de lógica de procesos. No todo el mundo vale para ello.
Antonio Carvajal
Pablo y donde o como recomiendas aprender a programar arduino?? Yo hice hace poco un siguelineas y me fue bastante bien pero me gustaria aprender bien la programacion en arduino para proyectos futuros.
PD: muy buen post!!
el-henry
Yo creo que el mejor metodo es comenzar un projecto y despues guiarte con foros para realizarlo. Aprendi excel y su vba haciendo una hoja de gestion de referidos para una cierta web. Ahora pienso aprender java creando un programa que haga eso mismo
xen
Personalmente recomiendo usar Pic de microchip antes que arduino.
Por lo que se, arduino se programa en C, y los pic por ejemplo el 16f84a se puede programar en basic, C, etcétera.
Se aprende mas usando Pic, arduino te lo da todo hecho y con pic haces los proyectos a tu medida sin que sobre nada. Si compras una tarjeta arduino, pagas por un conjunto ya establecido que quizás no uses todo o no necesites el 50% de la placa pre diseñada. Es más grato diseñarse uno mismo su placa. Hay muchísima documentación sobre Pic.
Recomiendo usar mikrobasic y un pic 16f877a. En la pagina de mikrobasic hay ejemplos tutorial es para empezar y puedes bajártelo gratuito perfectamente funcional. En la propia página explican el pic 16f887 a fondo. Y lo aprendido puedes extrapolar lo a otros campos.
joaquin.8000
Hola, quiero aprender a programar, tengo 16 años, últimamente tengo bastante tiempo libre y prefiero invertirlo a algo a futuro en vez de seguir jugando al counter. ¿Dónde podría empezar? Tendría que empezar siendo hobby, y un par de años podría seguir una carrera relacionada con esto.
Gracias!
Jaime
Yo creo que como base se debería aprender programación en C o C++ y luego probar con más lenguajes de programación
naturality
Mi opinión como programador profesional de PLCs industriales, la mejor forma de aprender es tener que sacar por obligación un proyecto adelante. Todo lo que he aprendido, a sido a base de no cerrar la mente y buscar los multiples caminos que te ofrece el mundo de la programación para llegar a un mismo objetivo.
Solo la experiencia os llevará a conseguir que el camino para alcanzar algo sea cada vez mas corto y ha adentraros en proyectos mas complejos.
alexispiquer
Gracias por compartir este tipo de contenido. Estoy interesado y me parece muy útil. Estaré atento a los próximos. Un saludo
fdotal
Donde y como aprender a programar robots para recopilar información disponible y gratuita de diferentes fuentes en internet para generar informes?
gnb3
Creo que lo primero que debes saber para programar es tener lógica ya que es lo que más usas a la hora de programar.
josearegui
Hola, tengo 47 años, soy desempleado y la verdad no veo muchas salidas, paso bastantes horas al ordenador cada día y suelo arreglarme problemas que van saliendo de virus, controladores, etc y llevo unos días pensando en aprender a programar porque creo que tiene una buena salida laboral, aparte que me gusta pasar horas al ordenador, así que leyendo todo esto quería aprovechar y preguntar como puedo orientarme para empezar desde cero ya que en youtube veo mucho de todo y no se por donde cojer. Gracias de antemano por vuestras respuestas.
d00rs
Hola a todos, que tal. Espero enten bien. Veo que hay muchos programadores aqui y personas interesadas en el mundo de la programacion. Queria pedirle un consejo a ustedes que ciertamente se que tienen mas experiencia. Tengo 29 años, y tengo 10 años trabajando y dedicandome a lo que es el area de networking, infraestructura Linux y los ultimos 5 años a lo que es el area de cyberseguridad. Tengo conocimientos basicos en Programacion (Python/Html), manejo lo que es el shell scripting. Los ultimos meses vengo pensando en que ya no me basta seguir trabajando sobre sistemas o IOS creado por otros. quiero Aprender la programacion a fondo para entender como funciona mejor un sistema, una aplicacion y por sobre todo lo que es la programacion para pentester (Hacking). Me llama mucho la atencion Python, he leido muchos scripts en python para herramientas de penetracion muy buenas y me ha gustado mucho. No quiero dedicarme a la programacion 100%, solo quiero aprenderla para el desarrollo y entendimiento de herramientas y protocolos de comunicacion. Que me recomiendan por aprender teniendo 29 años es posible lograrlo? dedicacion tengo y mis ratos libre los uso para lo que es tecnologia, me apasiona todo esto. Desde ya muchas gracias y que la fuerza los acompañe.
bmw56321
Buenas tardes.
Me gustaría empezar a programar pero enfocado a actividades de la economía: estadística, econometría, macroeconomías, etc... entonces, qué lenguaje me recomendarías para ir empezando? Qué estrategia utilizarías? Es decir, si empezar con Python y luego ir a C++, un ejemplo. No tengo ni idea al respecto de la programación y si me ayudáis me ahorraréis uno o dos años de pelo seguro.
Muchas gracias y buenas tardes!
gerytheone
Hola a todos. Me leí toda la nota, justo es la data que estoy buscando!!... pero sobre todo, los comentarios, me han ayudado mucho! Gracias a todos los que escribieron, todos, de alguna manera preguntaron mis dudas y las respondieron ☺
sanamarcar
Y ya si hubiera un lenguaje para todo, es que yo me voy a pasar a binario. Si solo hay 2 tipos de procesadores, y de seguir así solo ARM. En fin mucha mierda. Yo apusto por C++ vitaminado el resto es tan aburrido y mediocre para un electronico... Es más las cosas guay siempre están hechas en C++ y ensamblador. El resto es pasar el tiempo y no pagar por nada o arrimarse a empresas que seducen por algo.
Y aun como electrónico perder tiempo haciendo cosas que ya han hecho otros, digo hardware lo veo un poco innecesario, lo mismo en software. Lo ideal sería poder coger de todo y que implicitamente se pudiera monetizar todo lo que se pueda.