Aprender a programar con conceptos VS con ejemplos

El otro día estaba viendo un directo del famoso streamer midudev, concretamente uno en el que simula una prueba técnica de React para Juniors. Por cierto, os recomiendo seguirle. Es un puto fenómeno.

Una de las cosas que más me llamó la atención es que ambos candidatos tenían problemas para inicializar el framework desde 0, sin copiar y pegar el código. No es fácil estar en directo ante centenares de personas y los nervios juegan malas pasadas, está claro.

Esto suele ocurrir porque en el día a día sueles centrarte en dividir las tareas en pequeños problemas, y acabas acostumbrándote a buscar la solución en Google para después copiar y pegar código de Stack Overflow. Esto les puede ocurrir a Juniors y incluso a Seniors. Somos capaces de resolver problemas sin entender qué cojones estamos haciendo. A mí me pasa muchas veces. A veces, lo importante es solucionar el problema cuanto antes, y ya.

Esta es una base de ejemplo que tiene toda aplicación React. Un simple «Hola mundo»:

import React from 'react';
import ReactDOM from 'react-dom';

function App(){
   return (
      <div>
         <h1>Hello world!</h1>
      </div>
    );
}
ReactDOM.render(<App/>, document.getElementById("root"));

Entonces, Midu les decía que en caso de duda podían consultar la documentación oficial, pero no buscar en Google. Y alguno seguía con ciertos problemas porque no sabía exactamente donde encontrar la solución.

  • ¿Sabían que para arrancar la aplicación debían importar la librería React?
  • ¿Para qué sirve ReactDOM?
  • ¿Qué función básica hace que React renderice toda la aplicación en el navegador?
  • ¿Qué parámetros necesita esa función?

Es lo más básico, el pilar de implementación de React. ¿Qué ocurre? Normalmente usamos scripts para montar estas aplicaciones en las que el código base ya está incluido. No nos paramos a pensar qué hace que todo esto funcione.

Preguntarnos el porqué de las cosas, por insignificantes que parezcan. Esto logrará que, a largo plazo, seamos más autónomos y sepamos solucionar problemas más complejos.

Cuanto más claros tengamos los conceptos básicos, más fácil nos será entender los más complejos. Nos costará más tiempo al principio, pero al final seremos más rápidos y el resultado será mejor.

El camino rápido: 2 días para hacer un clon de Instagram

Hay un montón de cursos en plataformas como Udemy o YouTube sobre prácticamente cualquier tecnología, y en lugar de aburrirte con los core concepts, te enseñan en base a ejemplos y pequeñas aplicaciones. Parece mucho más atractivo y ameno que 20 o 30 horas de videos y documentos aburridos. Y lo es, claro.

Recuerdo hacer uno hace mucho tiempo para aprender Swift. Se anunciaba como «¡Podrás hacer tu propio clon de Instagram!». Y como no, era de los más vendidos. Iluso de mí, me metí. Pude hacer 8 o 9 apps para iPhone, incluso un clon del Flappy Bird. A las pocas semanas empecé a desarrollar una app con mi socio Carles, y tenía la sensación de no saber nada. No sabía ni por dónde empezar.

No aprendí a hacer un clon de Instagram. Aprendí a montar el proyecto con Xcode, copiar y pegar 4 lineas, compilar y que funcione. Nada más.

El camino lento: 15 días leyendo documentación

Cuando decidí usar Laravel, React y Tailwind como stack para desarrollar UptimeHouse, lo primero no fue buscar otro cursillo basado en ejemplos ni tenía la intención de sacar un MVP en una semana. Pasé un par de ellas leyendo únicamente documentación oficial y probando por mi mismo.

Empecé a desarrollar y notaba que podía hacer prácticamente cualquier cosa acudiendo únicamente a la documentación oficial. Entendía los conceptos básicos de cada herramienta. Sigo usando StackOverflow para dudas y problemas más complejos, sí, pero tengo la sensación de tener claros los conceptos.

Al final, si tienes claros los conceptos, acabas antes consultando la documentación que pasándote un par de horas probando distintas soluciones en Stack Overflow.

Docs? : r/ProgrammerHumor
Via: Reddit