Cómo aprender a programar: 6 cosas que aprendí en Códica

Cuando comencé a aprender programación, tenía muchas ideas equivocadas sobre la profesión de programador y sobre qué y cómo debía aprender. Con el tiempo, comprendí algunas cosas importantes que, si las hubiera sabido antes, habrían simplificado y acelerado mucho mi aprendizaje.
La mayoría de estas cosas las aprendí durante el proceso de estudio y comunicación con otros programadores en Códica. Para algunos, esto será obvio, pero tal vez sea útil para otros.
¿Qué lenguaje de programación aprender primero? ¡No importa!
No pierdas mucho tiempo eligiendo y preocupándote por eso. Toma Ruby, Python, JavaScript, PHP, Java, Lisp, incluso Pascal, no te equivocarás. Al principio, de todos modos, tendrás que aprender conceptos básicos como bucles, condiciones, variables, funciones, objetos, recursión, etc. Yo solía programar un poco en BASIC y C++ en la escuela, pero para cuando decidí convertirme en programador, ya había olvidado todo eso.

Comencé a aprender con Java y no me arrepiento, después de eso fue más fácil aprender lenguajes menos estrictos como JS y PHP. La desventaja de Java es que si no vives en una gran ciudad, te resultará muy difícil encontrar trabajo como junior y eso hace que el aprendizaje sea un poco inútil, solo por el aprendizaje, lo que reduce mucho la motivación. Mientras que, por ejemplo, al aprender PHP, muy rápidamente puedes tomar tus primeros trabajos freelance, conseguir tu primer trabajo en un estudio web, etc., es decir, comenzar a ganar dinero con tu hobby, lo que aumenta mucho la motivación.
Los principiantes se toman muy en serio la pregunta "¿Qué lenguaje de programación debo elegir?", como si tuvieran que firmar un contrato con el diablo y escribir solo en ese lenguaje elegido para siempre. Personalmente, me iluminé cuando vi los perfiles de programadores bien remunerados en el mercado de Upwork, muchos de ellos decían algo así como "puedo Django, puedo Rails, también Meteor y Angular, y por supuesto Spring".

Luego le pregunté a algunos conocidos (y no tan conocidos) programadores sobre su carrera y vi un patrón que antes no entendía. Una persona puede trabajar, por ejemplo, un año con PHP, luego pasar a Java, luego aprender Ruby, convertirse en desarrollador de RoR y finalmente trabajar con Node.js o Clojure. Cualquier programador normal sabe varios lenguajes bien y una docena superficialmente. Así que no te rompas la cabeza, no intentes elegir el Mejor Lenguaje y hacer mil y una preguntas sobre eso. Simplemente elige cualquier lenguaje y lee al menos un libro o realiza un curso sobre él. Lo mismo se aplica a la elección del Mejor Framework.
Sobre el primer trabajo
Muchos programadores comienzan su carrera en empresas poco prestigiosas y con salarios bajos. Y eso está bien. Pero es difícil aceptarlo, especialmente para aquellos que deciden ingresar al campo de la tecnología en una edad más madura, con una familia y niños. Los mitos sobre los altos salarios de los programadores a menudo son promovidos por las escuelas de programación, que necesitan vender sus cursos y, en consecuencia, en sus páginas de destino escriben cifras astronómicas como "el salario promedio de un programador de JavaScript es de 2,000 dolares", pero a menudo olvidan mencionar que esas cifras las ganan personas con varios años de experiencia (o incluso décadas) que pueden resolver problemas difíciles y que después de sus cursos, al principio, puedes esperar un salario de alrededor de 700 dolares al mes, y eso en la capital. Incluso pueden pedirte que trabajes gratis. Por experiencia y comida. No tengas miedo de aceptar un trabajo poco prestigioso y mal remunerado, porque una vez que comiences a trabajar oficialmente como programador, incluso por 400 dolares al mes, tu atractivo para otros empleadores y reclutadores aumentará significativamente. Al principio, nadie te impide cambiar de trabajo cada 3-6 meses, y cada vez obtener un salario más alto y tareas más interesantes.

Pero, por supuesto, no estoy diciendo que debas ir a trabajar por comida, tal vez encuentres un trabajo inicial con un salario de 1,000 dolares al mes. Solo debes entender que la carrera también requiere esfuerzo y que debes estudiar activamente el mercado laboral, comunicarte con reclutadores y asistir a entrevistas para evaluar adecuadamente tu valía en cada momento. Y el primer trabajo no es para siempre.
Aprender a programar es difícil
Durante el proceso de aprendizaje, debe haber momentos en los que tu cerebro se esfuerce y sientas que no entiendes nada. Si todo te resulta fácil y sin esfuerzo, significa que no estás aprendiendo a programar, solo estás repitiendo lo que te dicen. Si hago una analogía burda, no te están enseñando a nadar, solo te están enseñando a mover las piernas mientras estás acostado en la arena. Por supuesto, es posible que seas un genio y todo te resulte fácil. Para evaluar realmente tus habilidades, ve a algunas entrevistas en el lenguaje de programación que estás estudiando y trata de resolver las tareas de prueba que te den.

Personalmente, estudié durante mucho tiempo (demasiado tiempo) en cursos del tipo "mírame, haz lo que hago". Cuando comencé a estudiar en Códica, algunas tareas simplemente me volvieron loco, y todavía lo hacen. Intenté resolver una tarea durante 3 días. Pero al final, mejoré y ahora puedo resolver tareas más difíciles que antes. Creo que ese debería ser el objetivo de los buenos cursos de programación. No se trata de memorizar 1000 funciones de una biblioteca. Se trata de hacer que tu cerebro se esfuerce y resolver tareas cada vez más difíciles cada día.
Sobre los code kata
En cierto punto (casi inmediatamente después de aprender la sintaxis básica de un lenguaje de programación), debes practicar resolviendo problemas algorítmicos simples (al menos al principio). Hay docenas de servicios diferentes donde puedes hacer esto, como codewars.com, exercism.io, hackerrank.com, etc. No puedes saltarte esta etapa. Si entras en codewars y simplemente no entiendes lo que te piden y cómo resolver incluso los problemas más simples de los primeros niveles, únete urgentemente a una comunidad donde haya programadores y personas que estén aprendiendo a programar, y donde puedas hacer preguntas y obtener ayuda. Uno de esos lugares es el chat de Códica. Si no puedes resolver estos problemas simples, la probabilidad de que puedas resolver problemas de trabajo reales es extremadamente baja.
No memorices los nombres de las funciones
El sentido no está en eso en absoluto. Esto me llegó de repente y muy recientemente. No intentes memorizarlos forzadamente. Intento entender el significado, construir alguna abstracción, en pocas palabras, formular un concepto general de lo que he aprendido.

Por ejemplo, si sé que generalmente en los lenguajes de programación hay una función para convertir una cadena a minúsculas, con ese conocimiento general, si quiero, por ejemplo, programar en COBOL, simplemente buscaré en Google "tolowercase in Cobol". Y ahí está Lower-case(Item-1). Si escribo mucho en un lenguaje específico, buscaré las funciones principales 100 veces y en algún momento las memorizaré.

Por cierto, esto también es muy útil para aprender idiomas extranjeros, personalmente odio hacer listas, tarjetas y memorizar palabras. Especialmente me molestan los conjuntos de palabras sacadas de contexto, como "100 adjetivos sobre el clima". Es simplemente imposible memorizarlos, y aunque los memorices hoy, olvidarás el 80% en un mes. Es mucho más efectivo simplemente leer/ver contenido interesante en el idioma y buscar palabras desconocidas en el diccionario cada vez, de esta manera, después de un tiempo, las palabras más comunes se memorizan de forma natural.

En resumen, al aprender una nueva característica de un lenguaje de programación, es suficiente comprender en general qué hace y saber cómo buscarlo en Google.
Empieza a aprender sobre desarrollo con el curso gratuito "Fundamentos de la maquetación moderna". Aprenderás a crear páginas web estáticas, elementos de estilo y a utilizar editores de código con extensiones útiles. Al final del curso, publicarás tu primer sitio en GitHub Pages.
Está bien ser tonto
Es especialmente importante entender esto para aquellos que originalmente están lejos de la informática, pero están intentando cambiar de profesión y aprender a programar. He visto muchos ejemplos en los que programadores muy experimentados piden consejo sobre alguna tecnología nueva, aunque parece que todo debería estar claro para ellos con sólo echar un vistazo a la documentación y todos sus problemas se resuelven con un izquierdazo. Los programadores experimentados a veces dicen algo así como - al diablo con esto, no entiendo cómo funciona todo aquí, no es lo mío. O, después de haber tratado con una tecnología durante mucho tiempo, simplemente no se atreven a entender una nueva construida sobre otros principios.

Es decir, las personas que llevan muchos años programando a veces no pueden descifrar alguna función nueva por sí solas, y no tienen reparos en pedir consejo y ayuda. Sin embargo, con un 99% de probabilidad, han intentado resolver este problema por sí mismos de antemano, recurrieron a Google y Stackoverflow, pero sin éxito.

Así que si estás intentando convertirte en programador desde cero, no te preocupes por no entender algo en absoluto y no te des por vencido, ¡no deberías entender muchas cosas!* No dudes en hacer muchas preguntas, y google es tu mejor amigo. Intenta siempre resolver tus dudas por ti mismo primero, y luego pide ayuda, y es conveniente que describas lo que ya has intentado para resolver el problema.
Nunca te detengas:

En programación, dicen que debes seguir aprendiendo incluso solo para mantenerte en el mismo lugar. Desarrolla tus habilidades con nosotros: en Códica hay cientos de cursos sobre desarrollo en diferentes lenguajes y tecnologías
Leer otros artículos de Blog
Lee otros artículos relevantes del mundo de la tecnología y el espíritu empresarial.