Antes de aprender a programar, piensa bien que quieres programar

Casi siempre, aprender a programar se trata de construir cosas, y el camino es mucho más claro cuando se tiene una idea de la meta final. Si tu plan es “aprender a programar” sin tener una idea clara sobre los tipos de programas que escribirás y de que forma mejorarán tu vida, es probable que te sea difícil al inicio.

Me avergüenza un poco admitir que parte de mi motivación para estudiar informática era porque quería demostrar que era inteligente, y porque quería conseguir un trabajo para “personas inteligentes”. También porque me gustaban las matemáticas y la teoría (este libro me dejó boquiabierto cuando era joven), y las clases se me facilitaban. Aún así, no fue suficiente para captar mi atención por mucho tiempo, hasta que encontré maneras de conectar la tecnología con las cosas que realmente me gustaban, como la música y la literatura.

Así que, ¿qué es lo que quieres hacer con la programación? ¿Sitios web? ¿Juegos? ¿Aplicaciones de iPhone? ¿Arte interactivo? ¿Una empresa que te hará rico? ¿Quieres impresionar a tu jefe o automatizar una tarea molesta para que puedas dedicarle más tiempo a tus fotos de perritos? Tal vez sólo quieres ser más rentable, parte de la tendencia o cumplir con los requisitos de un programa educativo. Todas estas son metas dignas. Conoce la tuya y estudiala.

No es un truco de magia

La programación es una habilidad como cualquier otra. Como aprender idiomas, posee una gramática y un vocabulario que debes adquirir. Como las matemáticas, existen procesos para resolver problemas específicos. Al igual que cualquier tipo de artesanía y obra de arte, existen técnicas, herramientas y habilidades que se han desarrollado a lo largo del tiempo, las cuales están especializadas en diferentes tareas y que tú puedes usar, modificar o descartar.

Este programador [Enlace en inglés] (muy listo, por cierto. ¡Me encantan sus textos y suelo estar muy de acuerdo con él!) postula que existe una línea muy clara entre las personas con la Mente Auténtica de un Programador y todas las demás, aquellas que carecen de la capacidad intelectual necesaria para sobresalir en este campo. Esa línea clara consiste, según él, en métodos de aprendizaje y recursión (puedes encontrar manuales en inglés aquí y aquí).

Cuando aprendí sobre los métodos de aprendizaje y recursión, se reinvento mi manera de pensar — ese tipo de emoción intelectual que me hizo querer estudiar informática en primer lugar. Gracias a ejercicios que hice en universidad, me apoyo en estos conocimientos. Pero cuando ayudo a otros, una y otra vez he visto a gente completar proyectos interesantes y gratificantes sin saber nada de ellos.

No vale la pena vivir dudando o preguntándote si eres suficientemente inteligente. Claro, entre más compleja sea tu tarea, mayor será el nivel de dominio que necesitarás para completarla. Pero esto sucede siempre en cualquier campo. A menos de que planees ganarte la vida con códigos que tu crees, no necesitarás ser un maestro de la recursión para hacer lo que quieras hacer.

Nunca funciona la primera vez

O la segunda o la tercera

Cuando empieces a estudiar programación, te encontrarás con esta experiencia: crees que has configurado todo en la forma que debías, lo has verificado y vuelto a revisar, y aún así sigue…sin…funcionar. No sabes ni por dónde empezar, y el mensaje de error (si es que recibes uno) casi te dice “suerte, amigo”. Es posible que te den ganas de darte por vencido, pensando que nunca lo arreglarás, que no estás hecho para esto. Tuve esa sensación la primera vez que traté de escribir un programa en C++, lo ejecuté y sólo recibí las palabras “falla de segmentación” como respuesta.

Pero esta experiencia es tan recurrente entre programadores de todos los niveles que no debe afectar tu inteligencia, habilidad técnica o aptitud para la programación. Lo vivirás como principiante, pero también cuando seas un programador experimentado. La principal diferencia radicará en cómo respondes a ella.

He descubierto que la gran diferencia entre programadores nuevos y experimentados radica en la fe: fe de que las cosas van mal por alguna razón lógica y reconocible, fe de que se pueden reparar los problemas y fe de que hay una manera para lograr tu objetivo. El camino de “no sirve” a “sí sirve” no siempre es obvio, pero con paciencia podrás hallarlo.

Te dirán que lo estás haciendo mal

Que los corchetes deben ir en la siguiente línea. Que deben ir en la misma línea. Que uses las pestañas para la sangría. Pero que las pestañas son malvadas. Que tienes que usar procedimientos almacenados, pero que en realidad no tienes que hacerlo. Que siempre debes comentar tu código. Pero que un buen código no necesita comentarios. [Enlaces en inglés]

Casi siempre te enfrentaras con muchos enfoques distintos para un problema en particular, sin una sola “forma correcta”. Muchos programadores son muy buenos defendiendo su camino preferido, pero eso no significa que sea el Camino Verdadero. Tener que encarar a esas personas que me decían que estaba equivocado, e intentar averiguar si tenían razón, fue uno de los aspectos más estresantes al inicio de mi carrera.

Si trabajas en equipo con otras personas, es casi seguro que alguien tendrá problemas con algo que estás haciendo. A veces tendrán la razón, y siempre vale la pena investigar para ver si en realidad lo estás haciendo mal. Pero a veces estarán equivocados, y será mejor seguir una guía de estilo.

Por otro lado, si eres del tipo de personas a las que les encantan las disputas sin sentido (me refiero a ustedes, nerds gramáticos), estas en el lugar indicado.

Te dirán que no eres un programador de verdad

Que HTML no es programar de verdad. Que si no usas vi, no vas en serio. Que los programadores de verdad conocen C. Que los programadores de verdad no usan Windows. Que algunas personas nunca van a aprenderlo. Que no deberías estudiar programación. [En ingles].

“Programar” significa cosas distintas para mucha gente, y ahora no se ve igual a como se veía antes. Y, por extraño que parezca, las herramientas, los paquetes y los frameworks que hacen que la construcción de cosas sea más rápido y más fácil para los nuevos o incluso para los conocedores, son los más propensos a ser tachados de “no ser para programadores REALES”.

Detrás de todo esto, se encuentra el miedo de que si “cualquiera” puede llamarse programador, el título perderá su valor. Pero yo creo que este mito es destructivo.

Usa las herramientas que te faciliten la construcción de lo que deseas construir. Si ello implica que tu juego fuera hecho en Stencyl o GameMaker y no desde cero, está bien. Si tu primera incursión en la programación es a través de HTML o Excel macros, está bien. Trabaja con algo que sientas que puedas usar.

A medida que te acomodes, naturalmente empezarás a sentir que esas herramientas te limitan y buscarás otras más potentes. Pero la mayoría de las veces son pocas las personas que siquiera mirarán tu código o que incluso se preguntarán qué fue lo que usaste: lo que cuenta es lo que haces.

Pensar en la “cultura geek” te hará daño

Lee el título. Solía preocuparme mucho, en especial en la escuela, si no me veía como un “geek de verdad” (y, por lo tanto, menos digno de ser parte de las comunidades tecnológicas) por culpa de mi ropa, presentación, elección de material de lectura e incluso por mi propia personalización del software. Fue una pérdida terrible de energía y me volví mucho más funcional desde que decidí dejar de lado todo eso.

Tienes que interiorizar esto: tu capacidad para hacer buen código no tiene nada que ver con lo bien que encajes en las diversas subculturas geek. Esto empeorará si crees que nunca encajarás. La energía que gastas en probarte a ti mismo debería dirigirse más bien en hacer otras cosas. Y, si eres un “geek indiscutible”, ten en cuenta esto cuando evalúes el nivel de otra persona. Puede afectar tu razonamiento.

Apegarte a tu manera es más importante que seguir un método

Hay muchos artículos que tratan sobre la “mejor” o “correcta” manera para aprender a programar, y existen muchos enfoques posibles. Puedes aprender los conceptos en un libro, completando ejercicios interactivos o depurando lo que los demás han escrito. Y claro, existen muchos lenguajes de programación que puedes elegir, cada uno con sus propios partidarios.

Una queja común que se tiene hacia los programas y talleres en donde te “auto-enseñas a programar” es que pasarás felizmente por el material para principiantes y luego se pondrá difícil. Tú sabes cómo imprimir algunas líneas de texto en una página, pero no tienes ni idea de por dónde empezar en un proyecto útil “de verdad”. Sentirás que estabas siguiendo instrucciones sin comprenderlas realmente, y culparás al material de aprendizaje.

Cuando llegas a esta etapa, la mayoría de los tutoriales y recursos en línea disponibles se vuelven mucho menos útiles porque los mismos suponen que ya eres un programador experimentado y acomodado. Las cosas se complican aún más por el hecho de que “no sabes lo que no sabes”. Incluso tratar de descubrir qué debes aprender a continuación es un rompecabezas.

Llegarás a este punto sin importar que plan de estudios de “aprende a programar” sigas, y la única forma de superarlo es perseverar. Esto significa que sigas intentando y aprendiendo cosas nuevas, y descubriendo poco a poco cómo construir tu proyecto. Es mucho más probable que encuentres el éxito si tienes una idea clara de por qué estás aprendiendo a programar en primer lugar.

Si colocas ladrillos, uno encima del otro, puede que lleve mucho tiempo, pero al final tendrás una casa. Aquí es donde esa fe que te mencioné antes resulta útil. Si crees que con tiempo y paciencia puedes descifrar la programación, en su momento lo harás.

Puedes encontrar el artículo original en inglés aquí.

 

¿Te gustaría aprender a programar? Ven y prueba nuestras primeras 25 lecciones sin costo en la Escuela de Programación CodeBerry.