elprogramadormediocre/chapter06.md

36 KiB

El mapa no es el territorio

El panorama cambiante de la programación

La única constante en el campo de la programación, es que siempre está en constante cambio. Los lenguajes de programación llegan a tener mucho renombre y después desaparecen con el paso del tiempo. Lo que una vez fue tomado como un hecho ahora está considerado obsoleto (o incluso "considerado dañino" como señalan algunos ensayos).

Cuando me gradué en la universidad, aprendí Pascal, Modula2 y Ada. Desafortunadamente esos lenguajes empezaron a decaer en popularidad en favor de C. Cuando comencé en mi primer trabajo de programación como "profesional", Perl era el lenguaje de elección (en parte porque Perl podía ser transformado de manera sencilla en scripts CGI de la época y era considerado superior a herramientas para realizar scripts como awk y los tradicionales scripts para la shell). En el momento de escribir esto estoy utilizando Python como mi lenguaje de desarrollo principal y preveo que tendré que buscar otros lenguajes de programación para expandir mi carrera como programador.

Programar requiere flexibilidad. Es difícil aprender solo una manera de hacer las cosas y mantener eso de manera relevante durante 20 años. Recuerda cual era la tecnología actual hace 20 años y no tendrás ninguna duda en darte cuenta que las cosas eran bastante diferentes entonces. Si quieres poner en práctica un ejercicio divertido, busca artículos describiendo la tecnología puntera de hace 20 años y ver en ellos cuanto de aquello reconoces.

Aprender a aprender

Aprender metodologías y tecnologías específicas no es una buena estrategia a largo plazo para los programadores. Es más recomendable si aprendemos a aprender y, lo que es más importante, cómo aprendemos nosotros mismos. Eso suena simple: una vez que hayamos descifrado cómo aprender de manera efectiva, seremos programadores efectivos. Desafortunadamente, no existe una manera infalible de aprender que funcione para todas las personas. Personas diferentes, aprenden de maneras diferentes. Todos tenemos estilos de aprendizaje que funcionan mejor cuando se enfatizan ciertas cosas. Algunas personas aprenden mejor en el aula de una clase, mientras que otras aprenden mejor con el estudio auto dirigido (libros, grabaciones de vídeo, etc.). Algunas pueden leer un libro y entender perfectamente la materia, mientras que otras pueden necesitar enfoques más visuales. Si tienes el lujo de poder probar varias metodologías diferentes para aprender, te animo a que uses todas las que puedas para descubrir cuál funciona mejor en tu caso. Comprender lo que funciona para ti, será clave para ayudarte a progresar y crecer.

He encontrado que algunos principios sencillos funcionan mejor en mi caso. El primero es la repetición. Aprendo mejor cuando hago algo de manera diaria, una y otra vez, en pequeñas dosis. La segunda manera es teniendo una pequeña meta que pueda conseguir. Así que para mí tener una práctica diaria en un proyecto donde pueda trabajar y conseguir un objetivo es lo que mejor me funciona. Cuando estaba aprendiendo Python me uní a la PyWeek, una competición de una semana de duración de programación de un juego, donde el tema a tratar se anuncia al comienzo y toda la programación transcurre en una semana. Durante esa semana entera encontré tiempo para completar mi juego y al final de la semana había aprendido más sobre Pygame (la biblioteca que utilicé para mi juego) y Python que lo que había conseguido en semanas anteriores al PyWeek. Realizar una semana de duración de esta game jam (como lo llaman) es un poco extremista, pero me dio un objetivo claro (un juego funcional completo) y un tiempo dedicado para conseguirlo (una semana). Con el paso del tiempo he aprendido más sobre Python con varios proyectos (tanto profesionales como personales) que tenían una práctica diaria y objetivos claramente definidos.

Necesitarás experimentar para ver qué es lo que mejor funciona en tu caso. El principio que subyace es que el proceso de aprender debería ser algo que tu puedas utilizar para cualquier lenguaje o concepto en programación. También debe ofrecer la menor cantidad de resistencia a su aprendizaje. Tu capacidad para aprender y adaptarte será vital para tu experiencia como programador, así que entender tu propio proceso de aprendizaje y qué funciona mejor en tu caso te ayudará en este proceso.

Como mínimo, reserva 10 minutos al día para un contenedor (consulta el capítulo anterior) para una lectura y el aprendizaje enfocados. Hay mucho que aprender en programación y crear un hábito de aprendizaje te ayudará a mantenerte al día. Recuerda, sin embargo, mantener tu aprendizaje contenido en pequeños fragmentos. Mucha información puede abrumarte y hacerte pensar que no puedes aprenderlo todo. Tienes razón, no puedes aprenderlo todo de una sola vez. Si alguien te dijera que bebieras uno de los Grandes Lagos de una sola vez, sería difícil completar la tarea (nota: ¡no intentes esto!). Sin embargo, si llenaras un vaso de agua varias veces al día de uno de los Grandes Lagos y lo bebieras (10 minutos cada vez), comenzarías a hacer una mella apreciable en la reducción de ese lago a lo largo de tu vida. (Claro, puede que no parezca mucho desde el exterior, pero ese es el cruce donde la realidad y las metáforas se rompen).

Cada día tienes una oportunidad de aprender más sobre ordenadores y su programación. Realizar una pequeña parte cada día para aprender un poco más, te ayudará en tu viaje.

Cómo escoger qué aprender

Hay muchas oportunidades para aprender, ya sea mediante libros, tutoriales, vídeos o cursos a distancia con tu ordenador. También hay una gran variedad de temas sobre los que aprender. ¿Cómo decides qué es lo más importante para aprender? ¿Cómo gestionas lo que estás aprendiendo? ¿Cómo conseguir evitar sentirse abrumado con las opciones disponibles?

Esto nos vuelve al tema de centrarse en una cosa cada vez y entender cómo aprendes de una manera eficiente. Esta retroalimentación te ayudará a decidir qué será lo próximo a aprender. Una manera puede ser pensando en las cosas que más te apasionan ahora mismo, ¿qué te motiva en este momento? Si hay algo por lo que estás ansioso por aprender empieza por eso. Si tienes múltiples cosas que te apasionan o te interesan entonces colócalos en una lista y observa si estás más interesado en unos temas que en otros. Si aún tienes problemas para decidir de los temas de la lista entonces escoge uno al azar (lanza un dado o crea un generador de números aleatorios para seleccionar uno, eso podría ser en sí mismo un proyecto).

Si tienes problemas para pensar en algo para aprender y estás luchando para encontrar un elemento que te resulte interesante, entonces date permiso para navegar por la red y encontrar qué hay disponible. Observa las conversaciones de otros programadores y descubre de qué están hablando. Acude a una reunión de programadores para seguir las discusiones de lo que están hablando. O, si realmente estás atascado, explora algunas listas de ofertas de trabajos para averiguar qué es lo que buscan las personas que ofrecen trabajo y observa si algo de eso te despierta algún interés.

Esto no trata de escoger lo más útil o la cosa más importante, aunque tu situación actual puede hacer que algunos temas tengan más relevancia sobre otros, se trata de averiguar qué capta tu atención y dónde enfocarte. No te preocupes con realizar la elección perfecta que te proporcionará tu siguiente trabajo o impulsará tu carrera. Este ejercicio trata sobre hacer una elección para aprender algo interesante y que te enganche el tiempo suficiente para aprender más sobre ello.

Una vez que hayas escogido qué quieres aprender es el momento de centrarte en aprenderlo. Si tienes una metodología preferida (libros, vídeos, tutoriales, clases, etc) entonces dedica un tiempo (no más de una hora) a buscar qué recursos hay disponibles. Algunos temas tienen recursos disponibles para los principiantes que enumeran las cosas que la comunidad cree que son útiles para los programadores que están empezando, mientras que para otros puede ser necesario preguntar a la comunidad por dónde comenzar. A menudo algo tan simple como un tutorial puede ser una buena manera de comenzar con este ejercicio.

¡Si puedes encontrar algunos recursos en un corto periodo de tiempo será genial! Comienza tu proceso de aprendizaje con esos recursos. No te preocupes si son los recursos adecuados o quizás te lleven por un camino equivocado, simplemente comienza con ellos y ya los evaluarás más tarde. Por ahora es más interesante simplemente comenzar.

Una de las trampas en la que soy culpable de caer, es en tratar de encontrar los mejores recursos para aprender un tema. Paso horas buscando el libro perfecto, los vídeos adecuados, los cursos idóneos, lo que sea, trato de encontrar los mejores materiales disponibles. Quiero reducir la cantidad de comienzos en falso cuando aprendo de un tema. Esto que parece una búsqueda correcta (después de todo, ¿por qué no ibas a querer los mejores materiales que haya disponibles?) es una trampa que puede llevarte a pasar más tiempo buscando sobre cómo estás aprendiendo en vez de estar ya aprendiendo. Incluso peor, si el material comienza a confundirte (lo que es altamente probable cuando estás aprendiendo algo nuevo) pasarás tu tiempo de aprendizaje pensando si escogiste la decisión adecuada escogiendo este material. Te preguntarás si escogiste el material idóneo y continuarás buscando el mejor material (quizás esas buenas y excelentes críticas realmente no sabían después de todo de lo que estaban hablando). Esto disminuye tu habilidad para aprende sobre el tema porque estás más enfocado en tratar de discernir la calidad de lo enseñado y no en dedicar tiempo en la enseñanza actual.

Después de unos días de sesiones prácticas date la oportunidad de comprobar y ver cómo estás aprendiendo. ¿Te sientes atraído o no estás disfrutando de esto? Si no te sientes atraído (el material no está organizado, el instructor es confuso, los ejemplos no funcionan, el material asume que ya estás familiarizado con otro tema, etc) entonces date permiso para buscar un material mejor o un tema diferente que te interese más. Incluso si la experiencia de aprendizaje no fue óptima, tendrás una mejor idea de lo que buscar cuando escojas algo nuevo. Tendrás un conocimiento de cuales son tus lagunas con este tema y tendrás un mejor conocimiento de lo que estás buscando en los materiales de aprendizaje.

Si encuentras que el tema que estás tratando de aprender ya no te interesa, date un momento para reflexionar sobre el motivo de esto. ¿Es un tema complicado? ¿Te sientes preparado para ese tema? ¿Estás actualmente sobrecargado con otros proyectos y te sientes cansado para abordar este tema? A veces creemos que estamos preparados para aprender sobre un tema, solo para darnos cuenta que hay algo más que necesitamos saber antes de poder entender por completo ese tema. Está bien buscar recursos adicionales y enfocarte en ellos antes de abordar este tema. Simplemente se consciente de tus luchas y tu diálogo interno. Se honesto contigo mismo sobre el motivo por el que quieres cambiar a algo diferente. Obsérvate en la dificultad y se consciente si estás queriendo huir porque es difícil o si realmente no estás preparado para ello o no estás interesado en este tema. Observa si puedes ahondar más con la dificultad y siente cuándo comienzas a sentirte sobrepasado por ella. Date permiso para apegarte a la dificultad tanto como puedas y presta atención a tus sentimientos e impulsos mientras practicas con ella.

Trata tu aprendizaje como un proceso iterativo, con periodos regulares en los que comprobar tu progreso. Piensa en cómo te sientes cuando estás aprendiendo. ¿Te sientes emocionado y comprometido o te sientes cansado y retraído? ¿Procrastinas cuando piensas en este tema? ¿Cuando te centras en tu aprendizaje tu mente divaga? Se consciente de estos sentimientos a medida que ocurren durante la sesión centrada y reflexiona sobre ellos cuando pienses en tu proceso de aprendizaje. Más tarde puedes reflexionar sobre estos sentimientos y ver los patrones en tu proceso de aprendizaje. Si te sientes cansado mientras estás aprendiendo podrías intentar cambiar cuando realizas tus sesiones de aprendizaje. Quizás necesites dormir más o necesites encontrar otros materiales que sean más estimulantes. Si te sientes abrumado quizás necesites empezar con algo más básico antes de afrontar este proyecto más difícil. Si estás confundido quizás haya alguien a quien puedas plantearle preguntas para obtener más claridad sobre el tema. Estas respuestas pueden no ser evidentes mientras estás viviendo ese momento (quizás estás muy ocupado sintiéndote frustrado para entender de dónde viene esa frustración), pero con la práctica tendrás más recursos para observar tus sentimientos. Cuando eres consciente de estos sentimientos podrás usarlos para aprender cómo funciona tu mente y entender qué necesita para mantenerte comprometido con tu aprendizaje.

Resistencia y el contenedor

Cada vez que aprendemos cosas nuevas nos colocamos en un lugar vulnerable e incómodo. Tomamos las cosas con las que estamos familiarizados y las aplicamos a medida que nos adentramos en nuevos territorios. Nos volvemos inseguros con el resultado, ¿será un éxito o será un fracaso? ¿Será este tema difícil de aprender? ¿Nos ayudará o nos perjudicará? ¿Hemos escogido la opción equivocada para aprender y eso nos costará oportunidades a largo plazo?

La incomodidad y la incertidumbre son sin duda una parte del aprendizaje, pero en vez de pensar en ellas como algo a ser evitado pensemos en ellas como faros. Unas balizas que nos indica el camino y nos iluminan cuando estamos en territorios desconocidos. Cuando nos sentimos inseguros sobre lo que estamos haciendo, ese sentimiento significa que estamos entrando en un nuevo territorio. En vez de evitarlo o desear comodidad, podemos disfrutar por estar en un territorio desconocido y sentir esas breves punzadas de miedo y duda. Podemos decir: "Voy a aprender algo nuevo. Estoy asustado y no sé dónde me llevará esto, pero está bien. Estoy dispuesto a ver a dónde lleva esto y disfrutar del viaje."

Estamos condicionados a pensar en lo desconocido como algo a lo que temer. Estas emociones nos han sido útiles. Nos han impedido aventurarnos demasiado de nuestra zona de confort y explorar lo desconocido. Cuando vives en un bosque o en cuevas, lo desconocido puede albergar todo tipo de peligros. Tiene sentido no provocar esos peligros apareciendo delante de sus puertas. Pero programar no es lo mismo que aventurarse en un bosque oscuro o asomarse a una cueva húmeda, programar apenas conlleva la cantidad de peligro que le otorgamos. En vez de eso, debemos darnos cuenta que no estamos en ningún peligro mortal. Nuestros miedos simplemente nos están haciendo saber que estamos aventurándonos en los territorios inexplorados de la ignorancia. Depende de nosotros dar a conocer a nuestros miedos que esto está bien y que al explorar estos territorios solo encontraremos conocimiento.

Steven Pressfield en La guerra del arte denominó a estos sentimientos como "Resistencia". Considera la Resistencia como una especie de ser mitológico que vive en cada uno de nosotros para frustrar los actos creativos. A medida que el trabajo progresa la Resistencia aumenta la presión para detenernos introduciendo los sentimientos de miedo y ansiedad que he mencionado anteriormente. Pienso en la Resistencia como algo que también ocurre cuando estamos aprendiendo, especialmente si estamos aprendiendo sobre herramientas que nos ayudan en nuestras actividades creativas. Pressfield limitó su definición a las personas creativas que estaban trabajando para finalizar un trabajo creativo (libros, pinturas, juegos, etc.) pero yo estoy expandiendo su definición al propio proceso de aprendizaje. En nuestro caso la Resistencia aparece cuando estamos aprendiendo las herramientas que nos ayudarán a ser más creativos. La Resistencia es lo que nos dice que no somos suficientemente buenos para aprender esas cosas, o cuando estamos inseguros sobre los beneficios que nos acarreará. Trata de mantenernos seguros con lo que ya conocemos.

Este es el motivo por lo que el "contenedor focalizado" es tan importante: nos da pequeñas dosis de incomodidad y dificultad en porciones manejables. Podemos guiarnos a través de pequeñas cantidades de incomodidad diarias y seguir aprendiendo a pesar de nuestra incomodidad. Nos ayuda a trabajar a pesar de nuestra tendencia a evitar y ocultar situaciones difíciles. Si nos centramos en una sola cosa cada vez podemos mantenernos apartados de las distracciones sobre si esta es o no la cosa en la que deberíamos estar trabajando. Lo que sea en lo que estemos trabajando en este momento es exactamente en lo que deberíamos estar trabajando. Cualquiera que sea el material de aprendizaje que tengamos delante es lo que deberíamos estar aprendiendo. Podemos estar seguros de saber que todo lo que estamos haciendo durante la duración del contenedor es exactamente lo que debería de ser. Cuando finalice el contenedor podemos volver a evaluar cómo fue y qué retos se presentan por delante.

Trazado de objetivos a largo plazo

A medida que progresas en tu proceso de aprendizaje empezarás a ver que muchas de las cosas que llamamos programación están interconectadas. Los lenguajes de programación se prestan muchas cosas unos a otros y las ideas que parecían nuevas e innovadoras tienen sus raíces en conceptos que se remontan a los orígenes de la computación. En vez de disuadirnos, esto debería animarnos a abrir las puertas de la programación aprendiendo conceptos simples y transferibles. La pregunta es ¿cuales son?

La respuesta más simple es "todos ellos", pero eso es difícil de satisfacer o imposible. Una respuesta menos descarada sería "los suficientes para empezar a ver cómo surgen patrones" pero eso suena más a una idea de perogrullo que a algo que podamos utilizar para comenzar a realizar nuestras metas a largo plazo para el aprendizaje.

En vez de darte un consejo específico sobre qué conceptos te serán más útiles en tu búsqueda de llegar a ser un programador mejor, voy a sugerirte una técnica que podría ayudarte a identificar lo que podría ayudarte.

Los lenguajes de programación mencionarán conceptos que comparten. Cada vez que estés aprendiendo y veas una mención a alguno de estos conceptos, haz una nota de ello y sigue enfocado en lo que estás aprendiendo ahora. Cuando hayas completado el periodo de aprendizaje diario, revisa la lista de estos otros conceptos y haz una búsqueda para ver qué muestran. Si hay otras cosas que aparecen entonces escríbelas en tu lista. Estos conceptos podrían no tener sentido en el momento pero tener una lista disponible y a los que se refieran podría ayudarte a hacer conexiones sobre programación que podrías no haber notado de otra manera.

Cuando aprendí JavaScript me dí cuenta que alguien mencionaba que JavaScript derivaba de otros lenguajes como Scheme. Scheme es un lenguaje funcional basado en Lisp y que fue creado como lenguaje de enseñanza para programación funcional y recursividad. Así que tomé un pequeño rodeo para aprender Scheme, personalmente porque me era más interesante que JavaScript. Llámalo "procrastinación activa", si te sientes benévolo. Lo que aprendí mientras aprendí Scheme, motivó mi interés en otros lenguajes funcionales y la programación funcional. Esto a cambio me ayudó a entender algunos paradigmas de la programación funcional que se estaban convirtiendo muy populares en Python (listas de comprensiones, lambdas, etc). Al tomar un breve rodeo en mi aprendizaje de JavaScript aprendí más sobre toda una familia de lenguajes y ahora siento que entiendo JavaScript y Python con una mayor claridad que cuando empecé.

No estoy sugiriendo que todo el mundo debería seguir los pasos de la "procrastinación activa" como hice yo (mientras escribo esto, todavía estoy en el proceso de aprender JavaScript), pero ayuda el realizar notas de los conceptos que vas encontrando y ahondar un poco más en ellos.

Esta es una manera de trazar los objetivos del aprendizaje (darse cuenta de las otras conexiones que aparecen mientras estás aprendiendo y ser curioso sobre cómo interactúan entre ellas), pero quizás necesitas una técnica diferente. Quizás estás bajo presión para aprender algo que te mantenga en el mercado laboral o necesites adquirir algún conocimiento para tu trabajo que necesita ser aprendido rápidamente. ¿Cómo trazas esas metas?

La presión de aprender rápidamente puede hacer que cualquier tarea parezca insuperable, especialmente si no sabes cuál es la mejor manera de proceder. Es posible que sientas la tentación de apresurarte en este proceso y confiar en retener el conocimiento que has aprendido. Este enfoque no conduce a la comprensión, conduce al estrés y al agotamiento. El enfoque que estoy esbozando está diseñado para ayudarte a aprender cómo aprender. La mejor forma de aprender algo rápidamente es entender cómo encajan otros conceptos con lo que estás aprendiendo. Esto es genial cuando tienes experiencia con muchos lenguajes y conceptos diferentes, pero para aquellos que aún no tienen mucha experiencia, se sentirán como si estuvieran tratando de empujar un elefante a través de un pequeño embudo. Aquí es donde te ayudará practicar el aprendizaje todos los días. Te ayudará a dividir los objetivos de aprendizaje más grandes en partes más pequeñas y te ayudará a reconocer el miedo y la incomodidad por lo que realmente son: el reconocimiento de que estás expandiendo tus habilidades a un nuevo territorio.

Las metas a largo plazo son simplemente metas que deben ser divididas en metas a corto plazo. Enfocarse en metas a corto plazo y permitirte corregir el rumbo y seguir algunas conexiones cuando sea necesario.

Fracaso y aprendizaje

Una de las cosas a las que tememos cuando estamos aprendiendo, es al fracaso. Nos preocupamos por no aprender el tema rápidamente o al completo. Escogemos material que comienza de manera simple pero luego se vuelve muy complejo, y luchamos por mantener el ritmo. Intentamos escribir código de ejemplo en nuestros editores y nos encontramos necesitando ayuda para que funcionen. No logramos comprender el material y nos preguntamos si alguna vez aprenderemos lo que estamos tratando de aprender.

El fracaso es parte del aprendizaje. Si ya conocieras la materia no estarías aprendiendo.

Una de las razones para aprender practicando utilizando los contenedores, es porque así nos damos esos breves momentos de fracaso y repetición. La repetición es como mejoramos en cualquier cosa que estemos aprendiendo. El fracaso nos permite corregir el curso de nuestro aprendizaje para que podamos determinar la mejor manera de abordar esto la próxima vez que hagamos un intento.

A menudo sentimos que el fracaso es algo que debemos evitar, pero mientras estamos aprendiendo es inevitable. Nuestro proceso de aprendizaje requiere que fallemos para mejorar en lo que estamos aprendiendo. Ese es el objetivo del aprendizaje: volver a moldear nuestros cerebros para que finalmente puedan comprender los conceptos que estamos tratando de aprender.

Parte del aprendizaje es tener la mentalidad correcta para aprender. En lugar de sentir que estás constantemente fallando y luchando por mantenerte al día, es posible que desees abordarlo con una perspectiva diferente. En lugar de pensar "No puedo hacer esto. Es demasiado difícil", acércate a ello con una mirada más curiosa "Todo esto es nuevo para mí. Es por eso que estoy practicando para aprender esto". Darte una mentalidad más positiva te ayudará a evitar que te rindas cuando tengas problemas con el material.

Callejones sin salida y topografía cambiante

A veces nos encontraremos a nosotros mismos aprendiendo algo que es un callejón sin salida. Observamos nuestro progreso y no vemos una mejora real. No encontramos el tema tan atractivo o excitante como habíamos imaginado. Nos damos cuenta que lo que estamos aprendiendo es un callejón sin salida evolutivo en el campo de la programación. ¿Ahora qué?

Parte de nuestro proceso de aprendizaje es entender que nuestras expectativas sobre cómo algo evolucionará pueden ser completamente diferentes a cómo las cosas evolucionan de verdad. Visionamos toda clase de recompensas y clichés que nunca llegan. ¿Significa eso que estamos en un callejón sin salida? Yo creo que no. Podría suceder que lo que esperábamos que íbamos a hacer con nuestro recién adquirido conocimiento no está funcionando. Podríamos encontrar que nuestras expectativas sobre lo rápido que íbamos a aprender el tema no se están cumpliendo. También incluso podríamos esperar que nuestra carrera profesional se iba a ver respaldada por el tema de aprendizaje, pero el mercado de trabajo aún no ha reconocido nuestras recién adquiridas habilidades con ofertas de trabajo o más dinero.

Nuestro compromiso está relacionado con nuestras expectativas. La programación requiere una cierta cantidad de diversión y recompensa y si no encontramos la experiencia divertida y gratificante entonces es poco probable que queramos seguir aprendiendo sobre ese tema. Nuestras mentes están esperando algo más que nos atraiga y comenzamos a anhelar cualquier otra cosa en vez de continuar con el proceso de aprendizaje. Después de todo ¿no deberíamos estar disfrutando de esto? Si no hay compromiso y no disfrutamos, entonces el aprendizaje se convierte en una losa. Nos distraemos más fácilmente mientras estamos intentando aprender y nuestras mentes se dispersan en vez de enfocarse en nuestra experiencia de aprendizaje.

También está el problema de aprender sobre temas que son callejones sin salida evolutivos. El mundo de la informática está lleno de restos de tecnologías y metodologías que ya no son relevantes o están consideradas "pasadas de moda". Lo que una vez fue algo vanguardista ahora está considerado moribundo y la comunidad creada alrededor de esa tecnología o metodología se pasa a nuevas tecnologías o metodologías y abandona su trabajo previo como un pueblo fantasma tecnológico. Cuando mencionamos que estamos aprendiendo sobre esos temas, caen sobre nosotros miradas curiosas de otros desarrolladores: "¿Por qué aprender sobre eso? Hemos cambiado a esta otra cosa". Es como si hubiéramos oído que hay una fiesta y cuando llegamos a la fiesta, solo vemos a las personas que están recogiendo la basura y desmontando la mesa y las sillas. Nos sentimos como si nos hubiéramos perdido la mejor parte y nos preguntamos si tiene sentido seguir hacia adelante o encontrar otro tema.

Todo esto puede plantear sus propios problemas para aprender, pero depende de nosotros tener una visión más crítica de por qué empezamos todo este proceso de aprendizaje. ¿Qué nos trajo hasta aquí?

En cada uno de estos casos trajimos nuestras expectativas de cómo progresaría el aprendizaje. Trajimos la expectativa de que siempre sería divertido, atractivo y relevante. A veces nuestras expectativas de aprendizaje se cumplen, pero cuando no lo hacen nos sentimos sin ánimos y decepcionados.

En vez de sentirnos incómodos sobre cómo nuestras expectativas de aprendizaje con esta tecnología o metodología no se están cumpliendo, podemos adoptar un enfoque más consciente. Nos podemos observar a nosotros mismos en nuestros momentos de aprendizaje y notar si estamos tratando de aportar más que únicamente una atención focalizada al contenedor de aprendizaje. Podemos ser conscientes de que aprender está relacionado con cambiarnos a nosotros mismos y el cambio no siempre es divertido, atrayente o placentero. Podemos dejar a un lado nuestras expectativas y concentrarnos en el propio aprendizaje.

Eso no significa que no debamos ser conscientes de nuestros sentimientos. Sin duda deberíamos reconocer sentimientos como aburrimiento, ansiedad, desilusión, etc. Pero también deberíamos ser conscientes de dónde se originan esos sentimientos. ¿Estamos realmente aburridos o es solo nuestra mente tratando de decir que debemos parar para así poder hacer algo más divertido? ¿No nos apasiona este material porque no lo encontramos relevante o nos estamos simplemente distrayendo? ¿Es esto realmente un callejón sin salida en nuestro aprendizaje o simplemente nos estamos sintiendo atascados? Identifica cuándo aparece el sentimiento y se curioso sobre lo que originó el sentimiento. Nota cuándo obtienes ese sentimiento y dónde lo sientes más en tu cuerpo. Permanece con ese sentimiento durante unos segundos y sigue sintiéndolo. Después, continua tu trabajo. Mientra estás trabajando sigue notando todos esos sentimientos que estás teniendo y repite el proceso de permanecer y notar tus sentimientos. Cuando acabes puedes reflexionar más sobre esos sentimientos y determinar qué indican esos sentimientos. A través de este proceso puedes determinar qué está causando estos sentimientos y notar si son solo una resistencia a aprender nuevo material o un deseo de escaparse a las distracciones o a algo más familiar.

Sin embargo, si te das cuenta que realmente no estás disfrutando mientras estás aprendiendo sobre ese tema, si sientes que estás invirtiendo más tiempo en auto convencerte de aprender que realmente aprender, entonces necesitarás tener una discusión honesta contigo mismo sobre porque estás aprendiendo sobre este tema. ¿Es el tema todavía relevante para ti o el tema se ha vuelto irrelevante? ¿Estás aprendiendo sobre esto por una obligación auto impuesta o impuesta por otras personas y esa obligación todavía está presente? ¿Estás tratando de aprender lo que sea porque estás preocupado por quedarte desfasado personal o profesionalmente? Reflexiona sobre lo que te indujo a comenzar a aprender sobre ese tema y determina si la situación ha cambiado. Si alguien se te acercara y te preguntara si te gustaría aprender sobre ese tema en los próximos días ¿lo considerarías?

Necesitarás reconsiderar tus verdaderas motivaciones para aprender sobre el tema y ver si todavía encajan con lo que quieres hacer con tu profesión como programador. También necesitas ser honesto contigo mismo sobre el motivo por el que estás aprendiendo este tema y por qué es importante para ti. Hay muchas cosas para aprender que son grandes salidas profesionales, pero si no tienes interés sobre el tema o solo estás aprendiendo "para que te contraten", entonces tendrás más dificultades para aprender el tema que si lo hubieras escogido por un interés genuino por él. También tendrás que determinar si esto es simplemente una resistencia al aprendizaje. Tu reto será determinar tus verdaderos sentimientos sobre el tema y descubrir si verdaderamente has perdido el interés o simplemente estás luchando contra él.

Ha habido muchos temas en mi carrera profesional que he tratado de aprender, pero han sido muchos más sobre los que no he aprendido. Parte de los motivos por los que no los he aprendido es porque el panorama informático cambió mientras los estaba aprendiendo. En la escuela aprendí el lenguaje Pascal. Era razonablemente bueno en ello, pero con el tiempo mis conocimientos de Pascal fueron desapareciendo. Ahora mismo existe una escasa demanda de programadores competentes de Pascal, así que haber continuado desarrollando mis conocimientos de Pascal hubiera sido simplemente para mi propio disfrute. Encuentro que hay otros temas relacionados con la informática más interesantes, así que mis conocimientos sobre Pascal permanecen inactivos. Si Pascal emergiera de su estado moribundo, podría volver a retomar la decisión de reforzar mis conocimientos sobre Pascal, pero por ahora estoy contento por haber tomado la decisión correcta. En un punto de mi carrera profesional el lenguaje Java saltó a la fama. Pasé muchas sesiones aprendiendo Java hasta que me dí cuenta que no me gustaba el lenguaje. Me pareció muy engorroso y las direcciones que tomó no fueron las que quería seguir. Así que después de algunas reflexiones abandoné el aprendizaje de Java. ¿Fue todo esto tiempo perdido? Durante mis sesiones aprendí más sobre la Programación Orientada a Objetos y cómo los objetos encajan entre ellos. Aprendí más sobre recursividad mientras estaba tratando de resolver un problema para uno de mis proyectos. Estos conocimientos trascienden a Java, así que cuando empecé con Python fui capaz de transferir mis conocimientos sobre cómo funcionan los objetos de Java a Python. Utilicé ese conocimiento para entender qué estaba haciendo Python y cómo era de diferente respecto a Java. Si surge la necesidad puedo repensar mi decisión de dejar de aprender Java y ver si esto me interesa otra vez.

Está bien renunciar a aprender algo. Depende de ti determinar qué quieres aprender y durante cuanto tiempo. Somos seres complejos y nuestros intereses se transforman y cambian. También estamos en una industria compleja de caprichos y tecnologías cambiantes. Lo que era interesante y necesario al comienzo del año, podría convertirse en algo carente de interés o innecesario al final del año. No debemos sentirnos presionados para aprender sobre algo solo porque otras personas lo estén aprendiendo o porque el mercado de trabajo parezca que lo requiera. Date permiso para escuchar tus propios deseos. Si estos coinciden con lo que quiere esta industria voluble ¡entonces genial! Ve y aprende todo lo que puedas. Pero si no coinciden y te encuentras a ti mismo pasando semanas tratando de encontrar la motivación necesaria para aprender sobre el tema, entonces estás haciendo un flaco favor tanto a ti mismo como a tu oficio. Deja que el tema repose inactivo durante un tiempo y date tiempo para aprender sobre otra cosa. No tiene mucho sentido el sentirte miserable por complacer a otras personas.

Si sientes la necesidad de retomar el tema más adelante entonces permítete el regresar de nuevo a él. También deberías permitirte regresar a ese tema sin el bagaje y las expectativas de los intentos anteriores. El decir "ya intenté esto antes, así que veamos si funciona esta vez" pone a tu mente a la expectativa de volver a abandonar de nuevo. Date permiso para acercarte a este tema como si estuvieras experimentando la experiencia por primera vez, sin expectativas sobre cómo resultará. Se amable contigo mismo y experimenta el tema de nuevo pero desde tu perspectiva actual.

Acércate con curiosidad

Cuando eramos principiantes nos acercamos a las computadoras con curiosidad y entusiasmo. No sabíamos qué esperar y no teníamos ni idea del tiempo que iba a llevar. Simplemente aprendimos tanto como pudimos y tomamos todo al pie de la letra. A medida que continuamos aprendiendo cambiamos nuestra curiosidad por certezas y nuestro entusiasmo por expectativas. La emoción que sentíamos al aprender se convirtió en un sentimiento de monotonía al sentir que siempre deberíamos estar aprendiendo. Podemos volver a capturar aquel espíritu del principiante viendo cada oportunidad de aprender como una nueva experiencia. Podemos dejar de lado nuestras expectativas sobre cómo progresará nuestro aprendizaje y en vez de eso acercarnos a cada sesión de aprendizaje con curiosidad por lo que aprenderemos durante la sesión. Podemos reavivar la llama que teníamos cuando eramos principiantes con infinitas posibilidades. Esa llama nos guiará cuando atravesemos periodos de incertidumbre.

Podemos volver a sentir pasión por aprender. Con cada contenedor de enfoque podemos acercarnos a nuestro aprendizaje de una manera fresca, sin nociones preconcebidas de cómo y cuándo acabará, y ser curiosos por aquello que encontraremos cuando ahondemos más y más en lo que estamos aprendiendo. Cada sesión nos acerca un paso más en nuestro viaje por cerrar las lagunas de conocimiento. Hay mucho que explorar en nuestro campo. Espero que siempre encuentres algo nuevo y excitante que te ayude en tu viaje.