¿Quieres aprender a programar? Empieza aquí

2015-03-21

Con cierta frecuencia amigos, familiares y personas en Twitter o Facebook me preguntan sobre cómo aprender a programar. Algunos me dicen “quiero aprender hacer apps” refiriéndose a las aplicaciones en teléfonos móviles y otros me dicen que quieren hacer un website para su negocio.

Mi respuesta casi automática es la que creo que muchos otros programadores tienen, enviar unos cuantos enlaces a uno de los muchos sites de cursos online o algún libro. Lo que nunca he hecho es sentarme y pensar cuidadosamente como fue que yo aprendí y tratar de extraer lecciones de mi experiencia.

Esta es la intención de este post. Compartir las lecciones de mi experiencia en los últimos 15 años tratando de aprender a programar. Este es mi mejor intento de producir una contestación correcta para la pregunta: ¿Cómo aprendo a programar?

1. Necesitas un primer proyecto
Decide que quieres construir antes de empezar a aprender. Mi recomendación es que trates de clonar un app o website que conoces bien y usas todo el tiempo. Una mala idea es querer hacer un video juego 3D, Microsoft Excel o Facebook. Escoge algo simple, no te compliques la vida.

Aprender a programar es suficientemente complicado como para tratar de ser ambiciosa / ambicioso en este punto. Si no se te ocurre nada trata con una calculadora de propinas o haciendo un website o portafolio online.

Yo aprendí mucho tratando de clonar Minesweeper, el juego que venía con Windows 95 o 98, no recuerdo bien. Años después hice un website que usaba una base de datos para generar páginas dinámicamente. Esta experiencia me ayudó a aprender a usar bases de datos en el contexto de aplicaciones web.

2. Aprende lo menos posible
Enfócate en aprender sólo lo necesario para ejecutar tu primer proyecto. Hay una cantidad prácticamente infinita de información sobre programación. Si tratas de entender todo antes de ejecutar algo concreto, nunca terminarás. Este fue mi problema principal tratando de aprender y la razón por la cual me tomó años en vez de meses. La estrategia es aprender de programación general mientras te enfocas en los problemas específicos que plantea cada proyecto que haces. Esta es la única estrategia efectiva que conozco.

3. Define una fecha de entrega
Necesitas tener una fecha concreta para terminar tu primer proyecto y tienes que esforzarte para lograr cumplir con esa fecha. Piensa que es un trabajo y que te están pagando para hacerlo. Si puedes dejar de tratar y aprender cuando se ponga difícil, nunca vas a terminar. Esto también me pasó muchas veces y como lo resolví fue prometiendo a un amigo que le mostraría la aplicación terminada en 3 semanas. Un poco de presión social ayuda.

4. Busca ayuda
Identifica personas que te puedan ayudar. Todos los programadores que conozco les encanta ayudar a personas que están empezando. Me atrevo a decir que es casi parte de la cultura. No tengas miedo, haz preguntas. Si no conoces a nadie puedes contactar a @jpadilla_, @skfroi o a mi @gcollazo / [email protected] y te ayudaremos con gusto.

5. No te rindas
Aprender a programar es increíblemente difícil, no importa lo que nadie diga. La buena noticia es que ahora hay muchos recursos y comunidades diseñadas especialmente para ayudarte. Cuando sientas que no quieres seguir porque es muy difícil o estás cansada/o, toma un descanso y cuando tengas más energía sigue tratando. Busca ayuda y no te rindas, es difícil pero posible.

6. Proyecto #1: Done
Una vez completes tu primero proyecto todo se vuelve mucho más fácil. Cuando terminé mi primero proyecto, me di cuenta que todas las aplicaciones son una combinación diferente de los mismos principios que ya había aprendido. Para hacer el segundo proyecto sólo tienes que aprender un poquito más y usar lo que ya sabes.

7. Nunca dejes de aprender
Ya hiciste uno o dos programas así que es hora de empezar de nuevo y repetir el proceso para poder aprender un poco más. Es lo que todos hacemos. Si nunca dejas de estar en este proceso serás una/uno de las/los mejores en esto.

¿Qué tecnologías debo aprender?
Aunque para mi lo más importante de este post son las 7 lecciones que están arriba no podía faltar una recomendación específica en cuanto a que tecnologías aprender. La lista de abajo está en el orden que creo se deberían estudiar pero esto puede variar para cada cual.

  1. HTML – Sirve para hacer páginas web estáticas.
  2. CSS – Sirve para hacer que tus páginas web se vean bien.
  3. JavaScript para el browser – Sirve para añadir interactividad a tus paginas web. Si dominas JS, podrás aprovecharte de todas las capacidades que tienen los browsers, que son muchísimas.
  4. Node.js – es una plataforma y no un lenguaje. Node.js te permitirá crear servers para generar páginas web dinámicamente. El lenguaje que se utiliza para programar con Node.js es JavaScript. La ventaja es que en este punto ya deberías saber suficiente JavaScript.
  5. PostgreSQL – es un programa de base de datos. Le permitirá a tu servidor guardar y buscar datos de forma fácil.