Cómo escapé del purgatorio de tutoriales y aprendí a codificar, y cómo tú también puedes.

Contexto: Soy un desarrollador de juegos de mesa y un comercializador digital y, después de haber pasado mucho tiempo entre juegos y computadoras, decidí que quería aprender a codificar hace unos 3 años.

Me puse en marcha, como muchos lo hacen, buscando, en gran medida, qué idioma debería aprender y de dónde, volviendo a este tema varias veces a lo largo de mi viaje. Encontré varios hilos que sugerían un idioma o plataforma de aprendizaje sobre otro, y pensé en compartir mi experiencia particular en caso de que sea útil para alguien más en el mismo proceso de discernimiento.

Descargo de responsabilidad: no soy un programador profesional, y aunque estoy usando mis habilidades para beneficiar mi trabajo (puede leer acerca de mi búsqueda de un marco prototipo aquí), la codificación sigue siendo aditiva para mi trabajo principal en lugar de una fuente de ingresos. , lo que sea que te diga.

También descargo de responsabilidad: no intento posicionar un idioma o plataforma de aprendizaje sobre otro, y obviamente no he intentado aprender todos los idiomas, en todas las plataformas. La siguiente es solo mi experiencia tratando de descubrir la forma más sensata de avanzar en un entorno ciertamente confuso.

También puede saltar al final para TL; DR .

Prólogo: C ++

No estoy muy seguro de si ya sabía que C ++ era y sigue siendo una piedra angular en el desarrollo de videojuegos. Quizás lo vi en una de esas infografías de "¿Qué lenguaje de programación debo aprender?" Que hay. Pero quería saber más sobre cómo se hacen los juegos y cómo hablar con la computadora. Soy bastante amigable con la tecnología y he construido o retocado mis propias PC, pensando que eso podría prestarse a la experiencia de aprender a codificar.

Santo cielo, estaba fuera de mi alcance. Hice algunos tutoriales en línea (creo que a través de learncpp o similar) y pronto me di cuenta de que necesitaría más orientación para comprender los principios básicos de programación orientada a objetos, en quizás un lenguaje más accesible, de lo que estaba encontrando al aprender C ++.

HTML, CSS, JavaScript y Python

Antes de embarcarme en esta aventura, ya tenía un poco de experiencia en HTML y me encontré con Codecademy. Me gustó mucho la posibilidad de hacer tutoriales desde el navegador y sin tener que configurar un IDE (hacerlo para C ++ había sido una experiencia difícil). Rápidamente consumí todas las lecciones de Codecademy sobre HTML y CSS. El camino natural desde ese punto fue hacer el curso de JavaScript, que disfruté. Pero pronto me encontré en el "purgatorio tutorial" (no es mi referencia), trabajando en el curso de Python y otros.

También debo mencionar que completé los cursos de Codecademy como usuario gratuito, sin querer pagar una tarifa de suscripción por lo que estaban ofreciendo en ese momento, que incluía proyectos y apoyo de mentores.

Aprendí muchos conceptos básicos de Codecademy y los principios generales de OOP, pero no terminé aplicando gran parte de ellos sin un camino claro a seguir. Regresé a mi búsqueda (a quién engaño, he pasado MUCHO tiempo investigando simultáneamente otros lenguajes, plataformas de aprendizaje y bootcamps durante todo el proceso) y decidí que quería aprender más sobre el desarrollo de juegos a través de cursos en Unity.

C#

Encontré el curso Unity de Ben Tristem en uno de los perennes 10000% de descuento en las ventas de Udemy, y trabajé diligentemente a través de los tutoriales para construir clones de romper ladrillos 2D y otros juegos. Aprendí lo suficiente C # para salir adelante, pero no lo suficiente como para sentirme seguro de hacer algo yo mismo.

La unidad en sí misma fue probablemente más un obstáculo aquí que la instrucción de Tristrem y compañía, que en realidad fue bastante buena. El editor de Unity es una bestia de motor, con muchas buenas herramientas que son impenetrables para un usuario novato (nuevamente, puedes leer más sobre mi experiencia con Unity aquí).

Todavía siento que aprendí mucho de los cursos y del simple hecho de estar expuesto al flujo de trabajo deseado de C # y Unity, pero no estaba obteniendo lo suficiente de la experiencia para continuar. Un amigo me aconsejó que echara un vistazo a freeCodeCamp, que es donde fui después.

Volver a JavaScript

A primera vista, freeCodeCamp tiene el aspecto de una Codecademy o Treehouse menos llamativa. Pero me gustó lo sencillos que eran los tutoriales y no necesitaba pasar un muro de pago para progresar. Continué donde lo dejé con el aprendizaje de HTML y CSS, progresando bien hasta que llegué a los proyectos de Diseño web receptivo que se requieren para terminar la primera sección y recibir una certificación.

Puedo decir con certeza que este fue el momento (o serie de momentos) de mi expulsión del purgatorio tutorial. Para un principiante sin experiencia real en diseño web profesional y con la voluntad de encontrar mis propias soluciones sin buscar en Google la respuesta, los proyectos fueron difíciles . Finalmente gané e hice un par de sitios tontos que cumplían con los requisitos, pero la experiencia me impulsó a trabajar con varios tutoriales de FreeCodeCamp más sobre bibliotecas de front-end de JavaScript y frameworks de back-end.

Más importante aún, comencé a trabajar en mis propios proyectos relacionados con la web en CodePen y proyectos de juegos usando varios motores diferentes. También comencé a usar Python para hacer algunos análisis sociales básicos en mi trabajo diario, y lo encontré útil.

Purgatorio posterior al tutorial

Avance rápido mucho tiempo después, y ahora estoy trabajando en varios proyectos relacionados con juegos en Phaser y Unity (en particular, un prototipo digital para un juego de cartas de mesa que estoy desarrollando). He pasado muchísimo tiempo en la documentación del marco y Stack Overflow buscando respuestas y mejores prácticas para cosas (vinculando esta publicación una vez más por si acaso). También he desarrollado amistades con algunos colegas que son programadores, y ha sido útil ejecutar código con ellos para obtener consejos y comentarios.

Una cosa que ha sido útil al trabajar en mis propios proyectos es solo la experiencia básica de configurar un flujo de trabajo. Aprender a usar la línea de comandos y Git en conjunto con la configuración de NPM y un editor de código, por ejemplo, fue revelador (particularmente viniendo de CodePen, que simplemente hace todo por usted). Para bien o para mal, la mayoría de los tutoriales no lo exponen al meollo de las herramientas que necesitará para realizar su trabajo, y hay mucho que aprender.

Si estás leyendo esto y buscas el mensaje "¡y acabo de conseguir mi primer trabajo como programador!" declaración, lamento decepcionar! Ese no ha sido mi objetivo (al menos hasta ahora), pero tengo algunos aprendizajes básicos de TL; DR para compartir que pueden ser útiles para cualquiera que también esté en la búsqueda de un lenguaje de programación o cómo escapar del purgatorio tutorial.

TL; DR

JavaScript:

  • Ventaja: un muy buen punto de entrada al aprendizaje de la programación orientada a objetos, especialmente si está interesado en cualquier tipo de desarrollo web (front o back end). Puede aprender esto a través de la mayoría de las plataformas, pero mi experiencia fue mejor servida por freeCodeCamp.
  • Desventaja: muchos sitios le dirán que "simplemente se ejecuta en su navegador", por lo que "no tiene que configurar un IDE" y, por lo tanto, es más fácil de aprender, pero esta mentalidad solo lo llevará hasta cierto punto. Si va a realizar un desarrollo significativo con marcos de JavaScript populares (React, Vue, Express, etc.), terminará configurando algo adyacente al IDE con un editor de código, administrador de paquetes, dependencias, etc., sin el tipo de soporte que obtendría, por ejemplo, al configurar .NET o similar.

Pitón:

  • Ventaja: Súper amigable para los recién llegados si las llaves en otros idiomas son intimidantes al principio, y un buen punto de entrada si está interesado en ingresar a la programación back-end o la ciencia de datos. Tuve una buena experiencia inicial de incorporación a través de Codecademy.
  • Desventaja: sus opciones son un poco limitadas si está buscando ingresar al front-end o al desarrollo de juegos. Hay marcos, por ejemplo, que te permiten crear juegos (PyGame, por ejemplo), pero si estás buscando específicamente en el desarrollo de juegos, te servirán mejor en otro lugar.

C#:

  • Ventaja: un lenguaje muy agradable que cuenta con el apoyo de Microsoft y la comunidad de código abierto. Con él, puede hacer desarrollo de back-end, crear aplicaciones de escritorio, crear juegos (principalmente con Unity, pero hay otros motores como Monogame). Puede ser una opinión impopular, pero recomendaría aprender primero C # a través de tutoriales de Microsoft o en otro lugar y luego aprender Unity para aliviar parte de la carga cognitiva impuesta por la complejidad del editor.
  • En contra: No hay mucho que hablar de aquí, a menos que realmente no lo hace como Microsoft o realmente no quieren trabajar en el desarrollo extremo frontal web (supongo que se podría mirar en Blazor, pero yo no recomendaría empezar aquí). Podría hablar mucho sobre cómo Unity puede mejorar su experiencia de usuario, por ejemplo, pero C # en sí es genial.

Pensamientos generales sobre cómo aprender y escapar del purgatorio del tutorial :

  • Una de mis frustraciones en mi proceso de hacerme la pregunta "¿qué lenguaje de programación debo aprender?" fue lo que sentí fue la respuesta insuficiente de "bueno, ¿qué quieres construir?" Encontré mucho esta respuesta y no creo que sea la manera correcta de abordar el aprendizaje de cómo programar si aún no sabe lo que quiere hacer con ella. Un principiante no tiene suficiente contexto para saber lo que puede construir, y mucho menos la ruta para llegar allí (a menos que sea el tipo de persona que solo quiere hacer juegos o simplemente quiere conseguir un trabajo como desarrollador web ).
  • Una mejor respuesta sería decir, "pruebe algunos tutoriales en diferentes sitios y en diferentes idiomas, y vea si algo le parece interesante. Si es así, quédese con él; si no es así, elija uno al azar y vea a dónde te lleve. Las cosas que aprenderás te ayudarán independientemente de lo que acabes haciendo ".
  • Además, si puedes forzarte a salir del ecosistema del tutorial y simplemente hacer cualquier cosa fuera del entorno protegido que se ha configurado para ti, esto te ayudará a enseñarte cosas que eventualmente necesitarás saber, como configurar un IDE, buscando respuestas a preguntas y compartiendo su trabajo.

Espero que esta publicación sea útil para otras personas que buscan un lenguaje de programación o una forma de escapar del purgatorio del tutorial y crear cosas interesantes. ¡Y también me encantaría conocer tus experiencias!

Si te gustó este artículo, considera revisar mis juegos y libros, suscribirte a mi canal de YouTube o unirte a Entromancy Discord.

MS Farzan, Ph.D. ha escrito y trabajado para compañías de videojuegos de alto perfil y sitios web editoriales como Electronic Arts, Perfect World Entertainment, Modus Games y MMORPG.com, y se ha desempeñado como Community Manager para juegos como Dungeons & Dragons Neverwinter y Mass Effect: Andromeda. . Es el director creativo y diseñador principal del juego Entromancy: A Cyberpunk Fantasy RPG y autor de The Nightpath Trilogy . Encuentra a MS Farzan en Twitter @sominator.