Volver a la comunidad

¡Despega con Python!

De vez en cuando nos encontramos con alguien que se lanza de cabeza a aprender a programar. Carl, conocido en internet como «Meatball», empezó con la ruta de Python en Exercism... todo un logro, ¡pero a quién no le gustan los retos!

Ver en YouTube
DURACIÓN 34MIN

Jonathan: Bueno, hola y bienvenidos al pódcast de Exercism. Mi nombre es Jonathan. Es un privilegio volver a compartir la vida y las historias con vosotros, estéis donde estéis. Así que hoy tenemos un invitado que se llama Karl. Voy a ir directo al grano y pedirle a Karl que se presente un poco. Karl, cuéntame, ¿de dónde eres? ¿En qué andas ahora? ¿Y cómo conociste Exercism? Carl: Bueno, vivo en la ciudad de Gotemburgo, en Suecia, y actualmente soy estudiante a tiempo completo. Pero cuando me metí en la tecnología y la programación, usé Exercism. Empecé con la pista de Python y creo que la pista de Python es la mejor para la mayoría de principiantes porque la sintaxis de Python es bastante directa y, en mi opinión, bastante natural para los humanos. Y en cuanto a los tipos de lenguaje de programación, Python es bastante amable contigo. No tiene tantos tipos, tipos de datos, pero... Sí. Así que empecé haciendo los ejercicios de concepto y siguiendo el temario. Y lo hacía, no sé, cada dos fines de semana, haciendo uno o dos ejercicios y... Después de un tiempo, cuando en realidad... porque al principio... cometí muchos errores que ahora, al mirar atrás... Ahora que me he hecho mayor o... Ahora que llevo más tiempo programando, puedo reconocer esos errores. Así que no, tu código no tiene que ser perfecto al principio. Y lo que me gustó fue que, cuando en realidad... cuando había hecho muchos ejercicios en la pista de Python, me pasé a la pista de Ruby. Vale. Ruby es un gran lenguaje al que pasar desde Python porque hay muchas similitudes. Y, eh..., la sintaxis de Ruby es bastante similar, pero hay algunas diferencias. Por ejemplo, Ruby es mucho más POO, orientado a objetos. Así que creo que para un principiante puede ser un recorrido bastante bonito empezar con Python y luego pasarse a Ruby. Y hasta la próxima. Jonathan: Empezaste con Python. Quiero decir, a menudo, cuando la gente llega a Exercism, tiene algo de experiencia en desarrollo. Si ya tienes ciertos conocimientos y experiencia previos en desarrollo y programación, a menudo la gente usa Exercism para mejorar en un lenguaje concreto. Pero, ¿me equivoco si pienso que llegaste sin ninguna experiencia en código ni en programación y empezaste con Exercism? Carl: Había hecho algo de Scratch, programación visual, pero nunca código como tal. Es duro empezar desde cero. Y creo que eso es algo que todos los programadores comparten: que es... El principio es como una cuesta y, después de subirla, todo se vuelve más fácil. Como tú. Jonathan: Pensaba que ibas a decir que subes la cuesta y luego la cuesta se hace más grande, y subes un poco, y sigue haciéndose más y más grande. ¿Tú sientes algo así? Hubo un punto en el que las cosas tenían sentido. ¿Hubo un momento en el que pensaste: «vale, sí, lo entiendo»? Carl: Quiero decir, la verdad es que se tarda mucho en comprender algo del todo, y lo que mucha gente hace al principio es... usar muchos bucles while porque son muy..., puedes controlarlos mucho más que los bucles for, porque en el bucle for tienes que decirle antes de empezar cuánto tiene que durar el bucle. Y creo que... cuando aprendí a usar bien un bucle for y a no abusar de los bucles while, creo que la programación hizo clic, o lo que hizo clic fue cómo funcionan los bucles. Jonathan: Vale, así que fue un momento en el que sentiste: «vale, este concepto tiene sentido para mí». Y luego, ¿tu comprensión de los bucles se trasladó a otros conceptos que empezaron a tener más y más sentido? Hablaré desde mi experiencia. Yo también he estado aprendiendo Go en la pista de Go. Y los bucles no tenían ningún sentido hasta que me pasé, creo que unos tres días, repasando los ejercicios y la documentación y montándolo, desmontándolo pieza a pieza. Y la experiencia de repasar bucles e intentar entenderlos tuvo un impacto enorme en mi comprensión del código en general, y de cómo funcionaban las funciones y todo ese tipo de cosas. ¿Fue parecido para ti, dirías? Carl: En Python, para resolver distintas cosas, a menudo iteras sobre cosas. Eso es más o menos lo único que haces en Python. En Python, iteras sobre cosas para resolver problemas. Eso significa que los bucles son muy importantes para entenderlos del todo. Cuando entiendes bien los bucles en Python, puedes hacer muchísimas cosas simplemente porque todo se basa en iterar sobre objetos. Jonathan: Qué bien. Así que actualmente estudias, mencionaste brevemente antes de esta grabación, matemáticas, física. ¿Qué temas estudias ahora? ¿Qué temas o qué asignaturas estudias en este momento? Carl: Estudio programación, matemáticas y física. Jonathan: Vale, ¿cómo llevas todo eso? Carl: El caso es que hice Exercism como preparación para esos cursos de programación. Y me di cuenta de que ahora sé mucho más de lo que cubren esos cursos. Jonathan: Qué pasada. Carl: No aprendo tanto de ellos porque, en su lugar, aprendo sobre marxismo. Jonathan: ¿Entonces dices, Carl, que la gente debería hacer Exercism en vez de una carrera universitaria? Carl: Quiero decir, no es como informática; supongo que ahí aprendes algo más sobre cómo funciona un ordenador y sobre bits y esas cosas. Mientras que Exercism solo te enseña programación y resolución de problemas y toda la parte lógica que conlleva. Creo que sigue teniendo sentido ir a la universidad. Jonathan: Te estaba tomando un poco el pelo, porque creo que ofenderíamos a mucha gente con títulos universitarios si les dijeras que no saben nada. Así que evitaremos ese tema. Y Carl, cuéntame, voy a hacerte algunas preguntas más sobre tu infancia, por así decirlo. ¿Cuál era tu...? Estoy intentando formular esto. De niño, ¿disfrutabas resolviendo problemas? ¿Te interesaban cosas como Lego o ese tipo de cosas? Y la razón por la que lo pregunto es que, a menudo, cuando la gente programa, hay un disfrute bastante natural por resolver problemas. Entonces, al crecer, ¿tenías muchas aficiones o cosas más bien técnicas? Cuéntame un poco sobre eso. Carl: Quiero decir, me gustaba Lego. No... Bueno, se me daban bien las matemáticas cuando era más joven. Es resolución de problemas, intentar resolver distintos problemas matemáticos. Creo que lo que realmente me metió en la programación es, simplemente... mi interés general por la tecnología; me gustan mucho los ordenadores. Y me gusta mucho... Gracias. Cada vez que alguien tiene un problema con un ordenador, dice: «Ay, ¿puedes ayudarme?». Lo cual a veces puede ser un poco molesto, pero en realidad suele ser muy divertido. Así que me interesé mucho por los ordenadores, y eso me llevó a la interesante programación. Jonathan: Vale, entonces, según entiendo, ya has hecho entre cuatro y cinco pistas en Exercism, o has aprendido, has aprendido de verdad entre cuatro y cinco lenguajes usando Exercism, ¿es así? Carl: ¿Es así? Sí, he hecho como... He hecho, he empezado como en seis pistas. Vale. Pero solo diría que domino bien unas cuantas. Jonathan: Vale, y de esas, ¿cuáles? Serían Python, Ruby. Carl: Python, Ruby, JavaScript y TypeScript, pero también tengo un nivel decente en Elixir. Jonathan: Vale, de todos esos lenguajes, ¿cuál has disfrutado más en cuanto a aprendizaje? Carl: Me encanta Elixir. Me gusta mucho cómo se escribe en ese lenguaje. Creo que es un lenguaje muy... muy divertido de escribir, pero es muy diferente de lo que estoy acostumbrado en otros lenguajes. Es como empezar desde cero en cierto modo. Sí. Pero creo que si alguien quiere aprender un lenguaje realmente potente, JavaScript está ahí. En mi opinión, es uno de los lenguajes más potentes que puedes conocer. Jonathan: Vale, entonces JavaScript sería, corrígeme si me equivoco, un lenguaje más interpretado. ¿Sería una observación justa? Y luego Elixir es probablemente más funcional. ¿Es eso? Carl: Sí. Jonathan: Vale, así que son bastante diferentes en su forma de ser. Me parece interesante que parezcas disfrutar de todo el espectro de esos dos lenguajes. ¿Qué es lo que tiene Elixir que te resulta divertido o agradable? ¿Puedes concretarlo? Carl: Quiero decir, es esta programación funcional. Tienes estas... Tienes estas funciones y se supone que debes unirlas todas. Y con todas esas funciones, se supone que debes resolver el problema. Y eso significa que, al menos para mí, la documentación de Elixir es muy importante, eh, para poder hacer algo. Eh, y la documentación de Elixir es genial, en mi opinión. Um, así que vas buscando los métodos correctos, lo cual creo que es muy divertido. Jonathan: Así que es casi como armar un puzle, se podría decir, donde vas juntando todo para poder ver el problema. Carl: juntando todo para poder ver un puzle en conjunto. Y como he dicho, también me gusta mucho cómo se escribe el lenguaje. Así que es un puzle muy bonito. Jonathan: Vale, genial. ¿Y por dónde vas en esa pista? ¿Has pasado los ejercicios de práctica o sigues más bien en los ejercicios de concepto? Carl: Hay muchos ejercicios de concepto para ese lenguaje. Creo que son como 20 o quizá más. Creo que voy por los ejercicios de concepto; he hecho como... probablemente el 90 % o algo así, así que casi he terminado. Jonathan: Genial, qué guay. Eso está muy, muy bien. Bueno, Karl, quiero saber un poco más sobre tu vida, más allá de la programación y el desarrollo. ¿Qué cosas te gusta hacer en tu tiempo libre o como aficiones? ¿Hay algo que realmente harías, si pudieras dedicar todo tu tiempo a algo fuera de la programación, qué sería? Carl: Bueno, si no puedo decir programación, me gusta jugar a algunos videojuegos en mi tiempo libre y también me gusta montar en bici. Eso también es divertido. Jonathan: ¿Bici de montaña o bici de carretera? Carl: Bici de carretera. Jonathan: ¿Así que vas en bici? Quiero decir, cuéntame un poco, porque estás en Suecia, ¿verdad? Sí. Y donde vives, ¿es plano? ¿Es montañoso? ¿Tenéis un océano bonito? Porque esa es mi impresión de Suecia: que tenéis océanos. Carl: que tenéis océanos. Sí, donde vivo es bastante plano. Pero si vas hacia el norte, hay más colinas. Jonathan: ¿Está nevando ahora en Suecia? Parece que va a empezar a hacer frío ya. Carl: Creo que nevó la semana pasada, pero ahora hay mucha nieve. Jonathan: Vale, ¿y vas en bici con nieve? Carl: Sí. Jonathan: Vaya, sí que lo haces. Pues tenemos otro..., puede que conozcas a Brian. Brian, él es uno de los mentores de Elixir. Brian Underwood, también vive en Suecia, creo que en Estocolmo, y sale a correr en pleno invierno, corriendo en la oscuridad de la noche sueca. Así que me pareció bastante, me pareció bastante, bastante guay. ¿Y vas en bici a menudo, como una vez a la semana, dos veces por semana? ¿O es algo que haces de forma habitual? ¿O simplemente...? Carl: Yo, yo, yo, cuando viajo, voy en bici a la estación de autobuses y luego tomo el autobús desde la estación. Jonathan: Vale, y luego simplemente encuentras un sitio bonito y... Así que viajas en autobús. Carl: Voy en bici a la estación de autobuses y luego viajo en autobús. Jonathan: Entendido. Vale, vale, bien. Y Carl, ¿a qué distancia está la universidad de donde vives? ¿Vives actualmente en casa o alquilas un sitio? ¿Cuál es tu situación? Carl: ¿Cuál es tu situación? Vivo en casa. Está a 30 kilómetros. Es, es..., se tarda como, no sé. Ah, espera. Sí, 30 kilómetros, probablemente sea eso. Se tarda como 40 minutos o algo así. Jonathan: Vale, no está tan mal, pero sigue siendo bastante camino. ¿Cuántos años más te quedan de estudios antes de entrar en el mundo real, por así decirlo? Te quedan cuatro años más de estudios. ¿Estás en primero ahora? Carl: Sí. Jonathan: Vale, vaya. Así que has hecho el primer año y es una carrera de cuatro años. Vale. ¿Y qué? ¿Tienes alguna idea de cuál es tu sueño para el futuro o de lo que quieres hacer como carrera profesional o alguna idea al respecto? Carl: Quiero decir, siempre he querido trabajar con el espacio, porque creo que mola. No estar en astrofísica o algo así, sino quizá hacer algo de programación relacionada con cosas del espacio. Y tenemos una Agencia Espacial Europea, que sería algo, pero... Si no es eso, creo que algo como... No sé, un trabajo tranquilo de backend estaría bien. Jonathan: Solo un backend tranquilo, me encanta cómo lo has dicho. Suena tan directo y fácil a mis oídos. ¿Y crees que querrías mudarte alguna vez a otro sitio que no sea Suecia? ¿O te gusta Suecia? ¿Alguna idea al respecto? Quiero decir, escucha, te estoy haciendo preguntas que quizá ni siquiera te hayas planteado todavía porque aún te quedan unos años antes de tener que tomar esas decisiones. Pero lo del espacio suena fascinante. ¿Cómo lo vas a hacer? ¿Cómo vas a empezar a meterte en eso? Carl: La verdad es que no tengo ni idea. Nunca he pensado realmente cómo, pero... Quiero decir, ya veremos. Es más un sueño que un plan real. Pero para responder a tu pregunta anterior, sí he pensado en quizá vivir en Canadá o algo así, pero supongo que seguiré viviendo en la parte norte del mundo. Jonathan: Vale, así que frío, hielo y nieve. ¿Eres feliz con eso? Sí. Carl, ¿tienes hermanos, hermanas, hermanos? Carl: Tengo un hermanito. Jonathan: Vale, así que sois dos. ¿Y a él le gusta la programación? ¿Le enseñas lo que aprendes y lo que sabes? Carl: Ah, en realidad no le gusta la programación. No sé. Jonathan: ¿Ah, sí? Así que no coincidís. ¿Pero también juegas con él? Carl: A veces juego con él, sí. Jonathan: ¿Es mucho más joven o supongo que debe de ir al colegio ahora? Carl: Es como cinco años más joven que yo. Jonathan: Vale, así que hay bastante diferencia de edad. Ah, qué bien. Qué guay. Volviendo a Exercism y a tu implicación, ahora mantienes la pista de Python, si no me equivoco. Sí, o contribuyes. Contribuyes, vale, guay. Manteniéndola algún día. ¿Cómo lo llevas? ¿Qué cosas has aprendido con esa experiencia? Carl: Quiero decir, la gente de la pista de Python es genial y es muy divertido trabajar con ellos... Porque actualmente he hecho mucha documentación y aprendes de verdad cómo documentar y además a menudo tienes que investigar mucho. Sí, así que haces mucha documentación y aprendes mucho porque tienes que leerla toda a través de la documentación de mucha otra gente. Así que profundizas mucho en los conceptos. Jonathan: ¿Y has disfrutado eso en concreto como disciplina a la hora de contribuir? Carl: Sí, y quiero decir, aprendo mucho cuando leo esa documentación. Jonathan: No, es genial. Entonces, en cuanto a contribuir a Python ahora, ¿piensas que te gustaría empezar a contribuir a Elixir y a Ruby? ¿Cómo lo ves? Carl: Quiero decir, sí, me veo contribuyendo a la pista de Ruby, pero a Elixir, no creo. Tengo este plan a largo plazo de contribuir a la pista de TypeScript, pero ya veremos. Creo que me quedaré en la pista de Python los próximos seis meses, en realidad. Jonathan: Vale, guay. Cuéntame, ¿puedes explicarme un poco sobre TypeScript? Solo dame una idea de qué va. La razón por la que lo pregunto es que he oído hablar de él. Pero he oído que, en cierto modo... consolida JavaScript, aunque, de nuevo, puedes decirme si estoy completamente equivocado. Más o menos ayuda a comprobar la seguridad de JavaScript un poco, pero podría equivocarme. ¿Qué es? Carl: ¿Qué es? Quiero decir, es una descripción bastante buena. Tuve una clase de frontend y el profesor usaba JavaScript e hizo un poco de JavaScript básico en HTML. Porque copié y pegué ese código en TypeScript. Y TypeScript dijo como: «Ah, no, no deberías hacer esto. Es inseguro». Así que va mucho de eso, de hacer tu código seguro. Es como evitar fallos y cosas así. Introduce tipos, para que no tengas conflictos de tipos. Y sí, en general te dice que hagas cosas seguras y no código inseguro. Sí, es un lenguaje diferente, pero es muy similar a JavaScript. A menudo puedes pensar en TypeScript como JavaScript, pero con una armadura puesta. Así que está como protegido. Jonathan: Vale, así que es un lenguaje propio. Creo que en mi mente tenía la impresión de que era casi como un complemento de JavaScript, pero dices que en realidad es un lenguaje propio del todo. Carl: Creo que sí. Quiero decir, son muy similares, así que quizá sean lo mismo, como un complemento, pero me gusta pensar en él como un lenguaje propio porque tiene algunas diferencias clave. Jonathan: Probablemente acabo de ofender a todos los fans de TypeScript por decir que es un complemento de JavaScript. Seguro que eso hará volar algunas opiniones interesantes. Pero para ti, la parte de seguridad de TypeScript es lo que lo convierte en una funcionalidad que vale la pena explorar más. ¿Es así? Carl: Quiero decir... En realidad, lo que me metió en TypeScript fue que mi librería de React no soportaba JavaScript normal y solo soportaba TypeScript. Me he acostumbrado a TypeScript y creo que está muy bien. También hace que el código sea más claro cuando usas tipos, porque puedes ver de verdad: vale, esto recibe un número y devuelve un string. Se vuelve más fácil de leer. Jonathan: Vale, mencionaste React Native. ¿Prefieres el desarrollo frontend o el backend? Por lo que entiendo, prefieres el backend. ¿Pero tocas un poco el frontend? Carl: He tocado el frontend, pero soy muy malo con CSS. Así que normalmente intento encontrar una buena librería de UI y usarla. Jonathan: Cuando dices que eres malo con CSS, ¿a qué te refieres? ¿Que simplemente no lo entiendes, o que es confuso, o que hay demasiadas...? ¿Qué es lo que se te atraganta? Carl: se te atraganta. Es como, es como que hay tantísimas cosas que puedes asignar a un objeto, muy resbaladizo. Ah, para quitar la cosa esa, como cuando creas un enlace en CSS o en HTML, te sale una línea debajo del texto. Y luego, para quitarla, tienes que añadir text decoration y escribir none. Y eso la quita de verdad. Y son muchísimas cosas las que tienes que recordar. Y lo más molesto de CSS es que si haces un cambio en el código o en el CSS, a menudo se carga otra cosa. Así que tienes que: vale, he resuelto este problema. Ahora ha surgido este otro y tengo que resolverlo, y así todo el rato. Así que no para. Jonathan: Así que sigue pasándose el problema a otro sitio, por así decirlo. Eso debe de ser muy frustrante. Supongo que mi única experiencia con CSS fue aprender, también intentar aprender React. Y tienes tantísimas variables, como dices, tantísimas opciones. ¿Lo expandes o lo restringes? Y si haces eso, entonces eso cambia este botón. Y antes de que te des cuenta, todos tus componentes están haciendo cosas distintas si no tienes cuidado. Jeremy, en Exercism, es muy bueno con CSS, pero creo que simplemente sabe muchísimo de todos los aspectos diferentes que tiene. Así que para ti, el frontend no es algo que disfrutes tanto como el lado del backend. Carl: No tengo problema con las partes de programación del frontend, pero el aspecto visual no me gusta mucho. Pero el backend, al menos para mí, es más de: si funciona, no lo rompas. Jonathan: Sí, no lo toques, déjalo estar. Me parece interesante cómo la gente tiende a preferir... uno u otro. ¿Sabes qué es lo que tiene el lado del backend? Dices que te gusta el hecho de que simplemente funciona. ¿El pensamiento lógico y el procesamiento de cosas del backend? ¿Es ese un aspecto que es el que más disfrutas? Carl: Sí, me gusta porque es sobre todo lógica y montar distintas estructuras de bases de datos. Eso es básicamente todo, aunque no se me dan bien las bases de datos. Jonathan: Qué bien. Qué guay. Bueno, Karl, tengo un par de preguntas más para ti. Me ha gustado mucho entender un poco de dónde vienes y qué te gusta hacer. ¿Puedes identificar algunos consejos clave o cosas que recomendarías a alguien que empieza a aprender a programar? Y puedes hacerlo desde, por ejemplo, si tienen quizá un trasfondo más científico, quizá algunos consejos para ese tipo de personas a las que les gusta eso. Pero si lo afrontaras desde una perspectiva completamente distinta, ¿qué dirías que es una... una buena cosa que hacer de forma constante? Carl: ¿De forma constante? Quiero decir, creo que deberías... empezar con un lenguaje fácil. No empieces con Rust, C++ o C. Pero luego, en realidad. Como, cuando... Sé que Jun dijo algo parecido, pero... Cuando veas un problema, lee el enunciado, tómate un descanso, piensa cómo lo vas a resolver y luego vuelve y resuélvelo de verdad, porque... Es bueno dejar que tu cerebro procese cómo vas a resolver el problema. Otra cosa que creo es... intentar no ir demasiado rápido. haz un poco ahora, un poco después, porque, por ejemplo, si haces muchos ejercicios de concepto, es mejor dejar que la información se asiente que hacer todos los conceptos el mismo día, porque probablemente acabarás confundido. Jonathan: y cómo se aplica todo. Vale, guay. Así que tómate tu tiempo. Déjate espacio para pensar las cosas. ¿Y dirías que ir despacio, que las cosas se asienten profundamente, es mejor que ir rápido, y eso suena a lo que dices, es mejor que pasar rápido por la superficie? Carl: En algunos lenguajes quizá solo tienes que aprender la sintaxis y... y lo básico, y luego poder pasar a escenarios más del mundo real y profundizar más. En el caso de JavaScript, aprendí lo básico y luego hice proyectos de React, y ahí... aprendí un poco de cosas nuevas y profundicé más en el lenguaje. Jonathan: Ah, qué bien. Vale, bien. Genial. Vale, Carl, tengo una pregunta más para ti para esta semana. ¿Cuál es tu recomendación para la comunidad esta semana? Tu recomendación especial, y puede ser prácticamente cualquier cosa. Puede ser, ya sabes, salir a dar una vuelta en bici con nieve. Puede ser tirarse a un lago helado o ir a una sauna si estás en Suecia. ¿Cuál sería tu recomendación para la comunidad? Carl: Sí, quiero decir, no..., creo que es, es, es muy difícil ir en bici con nieve. Así que no, no se lo recomiendo a la gente. Jonathan: Sí. Carl: Pero creo que diré lo que dije antes. Mira, si tienes un problema en el que estás atascado, tómate un descanso. No te quedes ahí unas horas más intentando resolverlo. Es mejor que te tomes un breve descanso y luego vuelvas al problema. Jonathan: Vale, guay. Así que esta semana tu recomendación es que, si necesitas aprender algo, vayas más despacio, te tomes un descanso, te tomes un café. ¿Tú bebes café? Carl: Todavía no. Jonathan: Todavía no. Vale. Nunca. Carl: En realidad solo bebo agua. Eso es probablemente lo especial de mí. Jonathan: Vale, genial. Eso te va a ahorrar mucho dinero en la vida, te lo digo. Qué guay. Bueno, Carl, ha sido un verdadero privilegio charlar contigo hoy. Gracias por tu tiempo y gracias por todas tus contribuciones a las distintas pistas y por participar en Exercism. Lo apreciamos mucho. He disfrutado mucho conociéndote durante los últimos meses, especialmente a través del servidor de Discord que llevábamos. Creo que era el de Ex-Orts, ¿estabas en el Discord de Elixir? Carl: O la cohorte o los expertos. Jonathan: Sí, creo que estoy seguro de que te vi bastante por allí, lo cual fue genial. Y sí, gracias por contribuir. Ha sido genial. Así que espero hablar pronto y muchísimas gracias por tu tiempo. Así que quédate en la llamada y podemos cerrar desde ahí. Pero gracias a todos por escuchar. Has estado escuchando a mí, Jonathan, y a Carl. Espero volver a saludaros pronto. Adiós. Carl: Adiós.

Más historias de nuestra comunidad

Escucha, aprende e inspírate con los miembros de nuestra comunidad.