minesw

Con cierta frecuencia amigos, familiares y personas en Twitter y 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 automática es la que creo que muchos otros programadores tienen, enviar unos cuantos enlaces a sites como Codecademy, CodeShool o algún libro online. Lo que nunca he hecho es sentarme y pensar cuidadosamente como fue que yo aprendí y tratar de extraer lecciones de esa 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 a 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, 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í tratando de clonar Minesweeper el juego que venía con Windows 95 o 98, no recuerdo bien.


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 nunca lo logrará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 forma que conozco y es altamente efectiva.


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 / hello@gcollazo.com y te ayudaremos con gusto.


5. No te rindas

Aprender a programar es difícil pero ahora hay muchos recursos y comunidades diseñadas especialmente para ayudarte. Sigue tratando, busca ayuda y no te rindas.


6. Proyecto #1: Done

Una vez completes tu primero proyecto todo se vuelve mucho más fácil. En mi experiencia una vez terminé 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 una primera aplicación así que ahora empieza de nuevo y repite el proceso. 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 lo que creo es el mejor camino en términos de tecnologías para aprender.

  1. HTML – Sirve para hacer páginas web estáticas.
  2. CSS – Sirve para hacer que tus páginas web estáticas se vean bien.
  3. JavaScript (para el browser) – Sirve para añadir interactividad a tus paginas web.
  4. JavaScript (para el server / Node.js / IO.js) – Sirve para añadir capacidades avanzadas a tú paginas web incluyendo persistencia usando bases de datos.
    1. HTTP / REST / JSON Web APIs – Tecnologías más importantes para hacer un backend moderno para tu aplicación web.
    2. PostgreSQL – Base de datos para almacenar la información de tu aplicación.
    3. MongoDB – Base de datos para almacenar la información de tu aplicación.
  5. Swift – Lenguaje usado para escribir aplicaciones de iOS.

¿Tienes una estrategia mejor para aprender a programar? Comparte tus sugerencias en los comentarios.