Cómo aprender a programar de una maldita vez

Hola soy Jacin y estás leyendo Final Boss, mi newsletter sobre las fases iniciales del emprendimiento: aprender, crear y lanzar. Nuestro objetivo es cristalino: derrotar al jefe final (el mercado).

Nos da igual la facturación, al jefe final esto le suele preocupar poco. Queremos una batalla limpia. Una victoria real. Y esto sólo se consigue alcanzando la rentabilidad.

Prometo hablar solo cuando tenga algo valioso que contar. Así que es probable que te moleste poco. Si quieres recibir Final Boss considera suscribirte.


Cómo aprender a programar de una maldita vez

Si eres como yo habrás empezado, lo habrás dejado, habrás vuelto a empezar y lo habrás vuelto a dejar.

Esta cuarentena conseguí romper ese círculo de una vez. Ahora me siento capaz de desarrollar la mayoría de webs o apps que utilizo. Al menos, sé cómo funcionan y sabría cómo empezarlas.

Por supuesto mi nivel es Junior y no podemos pretender ser un hacker como Bernardo Quintero, Andres Torrubia o Joaquin Cuenca en pocos meses. Pero si podemos conseguir el nivel suficiente para lanzar.

De entre muchos proyectos que cree durante la cuarentena con el objetivo de aprender, me estoy enfrentando al final boss con este.

Tiene usuarios, transacciones, alojamiento de archivos y muchas cosas que no hubiera pensado que fuera capaz de hacer el 1 de Marzo.

La clave

Todo el mundo puede aprender. Lo creo de verdad. No se necesita un talento especial. La clave es tener un plan de aprendizaje claro y ser consistente. No hay más.

¿Y por qué tanta gente se lo deja? Pues precisamente porque aunque la clave suene sencilla llevarla a cabo no lo es.

En este artículo voy a contarte cuál fue mi plan de aprendizaje y cómo de consistente fui. Pero vamos paso por paso.

Versión ultra resumida

La verdad es que el artículo me ha quedado un poco largo. Así que si necesitas que te lo den resumidísimo… allá va:

  1. Responde a la pregunta ¿Por qué quieres aprender a programar?

  2. No te dejes llevar por las opiniones

  3. Elige un campo

  4. Haz este curso (gratis)

  5. Luego este (gratis)

  6. Elige un stack

  7. y por último haz este curso (de pago, cuidado con el precio porque es MUY variable).

  8. Haz varios proyectos propios con lo aprendido. Mánchate las manos.

Paso #1: ¿Por qué quieres aprender a programar?

Si no lo sabes estás perdido/a. De verdad, si no sabes por qué quieres aprender a programar no hay forma de que lo consigas. 

Y hay otro error: mucha gente quiere aprender a programar porque está enamorada del resultado y no del proceso. Me explico: buscan horarios flexibles, trabajo remoto y sueldos altos (resultado) y realmente no les gusta programar (proceso). No digo que esto esté mal pero es muy difícil ser consistente así.

Yo estoy enamorado de la etapa de creación de un producto. Y eso implica en la mayoría de casos programar. Aprendí a programar porque quiero ser independiente a la hora de crear productos para luchar contra el final boss.

Paso #2: Desmitificando las opiniones de expertos

Cuando empecé a trazar mi plan de aprendizaje me vi decenas de videos y me di cuenta de que había muchos desarrolladores senior muy buenos con opiniones totalmente contrarias.

  • Gurú A: Aprende YA a programar en X

  • Gurú B: NI SE TE OCURRA empezar aprendiendo en X

¿Si no lo tienen claro ni ellos cómo lo vas a tener tú? Esto nos hace estudiar con la constante duda de si estamos aprendiendo lo correcto y aniquila nuestra constancia.

Necesitas que te digan:

‘Este es el plan definitivo paso por paso. Si lo sigues ya está, eres programador y has aprendido lo mejor de lo mejor’

Pues bien, yo te voy a dar mi plan paso a paso. Un plan que hice para poder crear productos digitales y lanzarlos con el objetivo de vencer al final boss.

Pero el plan definitivo no existe. Acuérdate de los gurús. Y aquí está el secreto: no importa una mierda. Quítate la carga de pensar que has elegido el camino equivocado.

Una de las cosas que me han sorprendido es que una vez estás metido de lleno en una tecnología aprender otra es fácil. Así que no te preocupes y de nuevo: quítate la presión.

Paso #3: Antes de elegir un lenguaje elige un campo

Te será fácil si tienes claro el paso 1.

No quieres aprender c++, quieres hacer videojuegos.

No quieres aprender Python, quieres analizar datos.

No quieres aprender Flutter, quieres hacer apps.

¿Y qué campos hay? Pues sorprendentemente no tantos:

Elige uno. Yo elegí desarrollo web porque es el que te permite lanzar productos en menos tiempo.

Y desde desarrollo web es más fácil pasar a desarrollo móvil. Y a desarrollo desktop. Y a muchos otros campos. Vamos, que lo tuve claro.

Si lo que buscas es lo mismo que yo, entonces los campos que te recomiendo son: Desarrollo web, Desarrollo móvil o Videojuegos.

Si lo que buscas es un trabajo estable en una gran empresa entonces: Seguridad informática, Inteligencia artificial, Desarrollo web, Desarrollo móvil o Videojuegos.

Por favor, ten muy en cuenta que lo anterior es una opinión subjetiva. Lo que sí es importante es que elijas un campo.


Paso #4: Lo básico es igual en todos los campos. Empieza por aquí.

Da igual el campo que hayas elegido porque las raíces de todos son iguales y es importante que las tengas claras.

¿Y por dónde empiezo? Te presento el mejor curso que he hecho en mi vida: CS50 de HarvardX.

Te meterás en un aula de Harvard con un profesor que suda a chorros de la pasión que le pone a las clases. Te enseñarán a resolver problemas con programación y acabarás desarrollando proyectos interesantes. Empezarás desde 0. Y es gratis.

Lo del sudor es real.

Para que veas el nivel que tendrás al acabar el curso, aquí te dejo decenas de proyectos finales de alumnos. Este fue mi proyecto final.

Hazlo. No lo pienses y hazlo. Vas a tardar entre 2 y 4 meses dedicándole entre 1 y 2 horas diarias. ¿Ves cómo lo de la consistencia iba en serio?

¡IMPORTANTE! Es muy probable que llegues a un punto en el que no entiendas nada y pienses que no puedes continuar. Es mentira, es una trampa. Lo mejor que puedes hacer en ese momento es (1) descansar y seguir otro día y (2) pedir ayuda en comunidades como Stack Overflow o canales de discord. Ya verás como de repente lo que veías que era una pared te parece una puerta.

Te reto a que dejes de leer este artículo, te pongas a hacer el curso y sigas leyéndolo dentro de unos meses cuando lo acabes. Y si me compartes tu proyecto final del curso me va a hacer ilusión.

Paso #5: Entrando en el campo de desarrollo web

Como no quiero hablar de lo que no he vivido, a partir de ahora daré por hecho que el campo que has elegido es el de desarrollo web.

Te presento el siguiente curso que hice, también de HarvardX: CS50’s Web Programming with Python and Javascript.

Ahora el profesor ya no es un señor (David) que suda a chorros. Ahora es un joven de edad insultante (Brian) que explica igual de bien.

Aprenderás a hacer aplicaciones web con usuarios, con bases de datos, que funcionen en tiempo real y que se vean bien en todos los dispositivos. Vas a tardar entre 1 y 2 meses dedicándole entre 1 y 2 horas diarias

Este fue mi proyecto final del curso.

Paso #6: Eligiendo un stack

Ya sabes lo básico de desarrollo web. Toca elegir un stack. Esto es un grupo de tecnologías que vas a usar para crear tu producto. Pero acuérdate de que muchos gurús te quieren llevar por caminos diferentes así que ¿Qué hacemos?

Un truco para elegir un stack es asegurarse de que las siguientes dos preguntas se responden con un sí:

¿Es un stack con una comunidad grande?

Esto es importante porque si eliges un stack muy moderno vas a tener preguntas sin respuestas. Es clave que puedas encontrar respuestas usando google. Por cierto, hasta el más crack de los desarrolladores usa google constantemente.

¿Es un stack en crecimiento?

Hay stacks con comunidades muy grandes pero aprenderlos ahora no tiene sentido ya que decrece. Si está en crecimiento te aseguras aprender algo que se usará mucho tiempo.

Por lo tanto la clave es elegir un stack que use mucha gente y que esté en crecimiento. ¿Cómo averiguo esto? Buscando las los siguientes datos de las tecnologías que conforman el stack:

  • Número de preguntas en Stack Overflow (cantidad)

  • Número de trabajos en Linkedin (cantidad)

  • Número de repositorios en Github (cantidad)

  • Cómo ha cambiado lo anterior respecto al año pasado (crecimiento)

No te preocupes porque ya me he informado yo y no vas a tener que hacer esa mini investigación.

El desarrollo web se divide en dos grandes áreas que seguro que te suenan: Frontend (lo que ve el usuario) y Backend (la lógica detrás de que todo funcione).

Si eres un hipster que va en bici sin marchas y usa gafas de pasta deberías aprender Frontend. Y si te pones la capucha de la sudadera en interiores eres Backend.

Vale, fuera de coñas. Vamos a ver los stacks recomendables para cada area.

Frontend: Debes aprender HTML, CSS y después JavaScript. Una vez domines lo tres (y solo cuando lo domines). Debes aprender React.

Backend: Debes aprender JavaScript, Node, y Express. Hay alternativas a estas tecnologías también muy usadas y en crecimiento como por ejemplo aprender Python, Django y PostgreSQL (también recomendable).

Pero un momento, ¿Cómo puedo enfrentarme al final boss yo solo si solo sé una de las dos areas? Puedes pero la mayoría de productos están formados por las dos partes. Aquí es donde entra el concepto Full Stack. Es la persona que sabe hacer ambas cosas.

Full Stack: El stack más recomendado para ser Full Stack es el stack llamado MERN. Tendrás que aprender por este orden: HTML, CSS, JavaScript, React, Node, Express y MongoDB. De hecho, MERN viene de Mongo, Express, React y Node.

El camino de Full stack es más largo. Tiene mucho sentido para lanzar tu propio proyecto y emprender ya que una sola persona puede encargarse de todo. Pero no tiene ningún sentido en la gran empresa. La figura de Full Stack apenas existe en la gran empresa y se suele contratar a expertos Frontend o expertos Backend.

Pero como nosotros vamos a por el final boss, tiramos con Full Stack.

Paso #7: Objetivo convertirse en Full Stack

Con el curso del paso 5 ya tienes mucho más de lo que imaginas ¡Toca un empujón final!

El proceso de convertirse en Full Stack es (1) aprender Frontend y (2) aprender Backend.

Como averiguamos en el paso anterior para aprender Frontend nos tenemos que especializar en HTML CSS y JavasCript. Y una vez los controlemos, en React.

A mi el curso del paso 5 me bastó para controlar HTML, CSS y JavaScript así que vamos de lleno a por React. Y si todavía te ves algo inseguro en JavaScript no te preocupes porque el siguiente curso tiene una introducción de refresco.

Además, el curso te enseña tanto la parte de Frontend como la parte de Backend ¡Ya estamos casi!

React es una librería que te permite crear y controlar interfaces de usuario. Ha sido desarrollada por Facebook y actualmente tiene una comunidad gigantesca y aun así sigue creciendo muy rápido.

Vamos con el siguiente curso (esta vez en Español): React - La Guía Completa: Hooks Context Redux MERN +15 Apps

¡CUIDADO! Este curso es de pago pero ni se te ocurra pagar 199€ (el precio tope). Udemy tiene ofertas constantemente y yo pude adquirirlo por 12€.

Sé que te puede parecer eterno (son 40 horas de video) pero intenta avanzar un poco todos los días. Recuerda que este es el empujón final.

Advertencia: ninguno de los enlaces de este artículo son enlaces de afiliados. No gano nada compartiendo esto ni conozco a ninguno de los creadores de estos cursos.

Paso #8: Haz proyectos y pon en práctica lo aprendido

Durante los tres cursos no te he recomendado hacer proyectos porque en los propios cursos ya te hacen mancharte las manos. Pero ahora eres tú contra ti mismo y la mejor forma de aprender es enfrentarte a un proyecto propio.

Estoy seguro de que tienes muchas ideas que desarrollar, y si no es así háblame que yo tengo varias.

Suerte.


Si has encontrado esta newsletter valiosa, puedes compartirla con amigos o suscribirte si todavía no lo has hecho.

Muchas gracias por leerme,

Jacin.