Quiero aprender a programar ¿Cómo puedo empezar?
Cuando se trata de programar suele ocurrir que la información respecto a cómo y por donde empezar es muy difusa y difícil de encontrar a veces, dependiendo del sitio que revises te dirán que empieces de una manera u otra, o incluso puede que no encuentres la respuesta que estabas esperando o directamente no la entiendas. Cuando se trata de el tema de la programación al aprenderlo desde cero es común que nos veamos bombardeados de una lluvia de información inconexa de distintas fuentes que no terminamos de entender y luego de un tiempo haciéndolo de esta manera nos damos por vencidos ya que vemos que lo que estamos haciendo no va a ninguna parte. Se me ocurrió hacer una pequeña guía que puedes seguir (y que yo personalmente hice) para dar tus primeros pasos en la programación.
¿Por qué quieres aprender a programar?
Puede parecer trivial pero esta pregunta es la más importante que debes hacerte antes de siquiera hacer tu primera búsqueda en google o inscribirte en tu primer curso. La importancia de esta pregunta reside en que dependiendo de tu objetivo puedes tomar un camino u otro, y directamente va a influir en tu motivación y en notar tu progreso a la hora de aprender esta profesión. Es interesante porque las veces que he hecho esta pregunta a las personas que piden consejos he recibido respuestas de lo más interesantes:
- Quiero reinventarme
- Quiero conseguir trabajo de programador
- Quiero hacer una aplicación que tengo en mente
- Quiero hacer un videojuego
- Quiero entender a mis hijos que programan
- Tengo un conocido programador y le va muy bien
Las respuestas pueden ser infinitas pero creo que podría limitarlas en 2 categorías:
- Quiero aprender porque deseo dedicarme a la profesión
- Quiero aprender porque deseo llevar a cabo una idea que tengo de una aplicación.
Teniendo estas categorías en mente el camino que debes seguir va a ser un poco distinto en cierto punto, así como la manera de medir tu progreso así que ahora que tienes la respuesta en mente te voy a indicar una serie de pasos que puedes seguir para aprender:
Quiero aprender para dedicarme a la profesión
Decide si quieres ser backend o frontend
En mi post pasado mencioné las diferencias entre un programador backend y un frontend así que no detallare demasiado al respecto en este momento, pero para mantenernos en contexto te daré un breve resumen:
El programador backend es un especialista en programar aplicaciones que se ejecutan en el servidor, las aplicaciones o programas que realiza un programador backend no tienen interacción directa con el usuario aunque normalmente mientras aprenden podrían necesitar adquirir conocimientos de frontend para interactuar con su aplicación, la cantidad de lenguaje frontend que deben aprender es mínima. El programador backend es el encargado de realizar la lógica de una aplicación, es decir, cálculos, transformaciones, validaciones o integraciones necesarias para que la aplicación funcione de manera correcta.
El programador frontend por otro lado es el encargado de hacer el lado visual de las aplicaciones, es el responsable de convertir la visión en papel de una página web o aplicación en algo funcional. El programador frontend es un especialista en controlar las interacciones del usuario con la página y de manipular el comportamiento de la misma según el planificado para la aplicación, además de eso el programador frontend entiende el comportamiento de los distintos elementos de una página web como botones, formularios, menús, tamaños de dispositivos, navegadores y de cómo darles estilo y funcionalidad.
Si bien puedes especializarte en los 2, es algo que no recomiendo si estan empezando porque te verás abrumado con una cantidad tal de información que no terminas aprendiendo bien ninguno de los 2. Si tu objetivo es dedicarte a la profesión es mucho mejor enfocarte en uno de ellos para aumentar tus posibilidades de conseguir un trabajo en el área, ya después que encuentres tu primer trabajo muy probablemente las mismas circunstancias del trabajo te obligarán a aprender el otro aspecto pero siempre teniendo tendencia o preferencia por uno de ellos. También puede pasar que decidas especializarte por uno y a mitad de camino decidas cambiarte a otro porque te gustaba más. Así que para resumirlo aún más te daré un par de criterios para elegir:
Elige frontend si:
- Te gusta el diseño
- Te gusta trabajar con colores
- Te gusta que las cosas se vean bonitas y ordenadas
- Te gusta o te llaman la atención los efectos increíbles de las páginas web como los slides, difuminados, cambios de color etc.
Elige backend si:
- Te gusta manipular y procesar información
- Tener el control de cómo y qué hacer según un conjunto dado de datos
- Te gustaría realizar formular y automatizar cosas para no tener que hacerlas manualmente una y otra vez
- No te gusta ordenar y corregir hasta hasta que algo se vea perfecto
- Te preguntas cómo hacen las aplicaciones para hacer “tal comportamiento”
Ahora que ya escogiste en que aspecto te quieres especializar el siguiente paso es:
Elige un lenguaje de programación o un framework
Una vez que hayas escogido el área en la cual quieres especializarte escoge un lenguaje de programación o un framework en el área que escogiste.
Si decidiste irte por el camino del backend debes aprender un lenguaje de backend y la famosa POO (Programación Orientada a Objetos) existen infinidad de lenguajes de programación para aprender y todos nos enseñan de una manera u otra la POO. No voy a profundizar en todos los lenguajes de backend existentes ya que cada uno da para su propio post de blog, pero en general te voy a presentar algunos lenguajes de programación bastante conocidos y para que se pueden usar:
- Java: Todo tipo de aplicaciones, desde aplicaciones móviles hasta videojuegos, pasando por páginas web, principalmente se usa a nivel de aplicaciones empresariales.
- PHP: Es un lenguaje principalmente usado para hacer páginas web, algunos programas como WordPress o Woocommerce lo usan en su base para realizar sus funciones
- Python: Es un lenguaje mayormente usado en big data, inteligencia artificial y videojuegos.
- Spring, Laravel, .NET: Si bien estos no son lenguajes de programación como tal sino más bien frameworks tienen su base en ciertos lenguajes por lo que también puedes aprender con ellos.
Si decidiste ser un programador frontend debes aprender los 3 grandes de la programación frontend así como algún framework que los combine con estos me refiero a HTML, CSS y Javascript.
- HTML: HTML (HyperText Markup Language) es un lenguaje de etiquetas, por sí solo no es muy poderoso, te ayuda a construir el esqueleto de una página web o una aplicación hablando del punto de vista visual. Te ayuda a posicionar, etiquetar y ordenar los elementos de tu aplicación.
- CSS: CSS (Cascade Style Sheets) tampoco es un lenguaje en sí, y por sí solo no puede existir ya que necesita que exista un HTML al cual ir dirigido. Usamos CSS para añadir estilos como colores, especiado, tipo de letra, tamaños, etc a nuestra página web. A medida que avanza el tiempo CSS se vuelve cada vez más inteligente pudiendo incluso procesar ciertas funciones básicas que retornen un número para aplicar estilos con el.
- Javascript: Es un lenguaje de programación de frontend, no se debe confundir con Java. Javascript es el encargado de controlar el comportamiento de una página o una aplicación según las interacciones que haga el usuario.
Bien, ya escogiste una especialidad y un lenguaje ¿que sigue?:
Elige un sitio para aprender
Teniendo respondidas estas preguntas iniciales lo siguiente que queda es dedicarte a aprender, pero con la cantidad de cursos, paginas, videos y blogs que existen puede ser difícil decantarse por alguno para aprender.
Para estos casos mi recomendación es que empieces viendo videos en youtube ,realizando algún curso gratuito para dar tus primeros pasos en el área o inclusive viendo alguna página web gratuita. El motivo de ir por una opción gratuita es que te permite dar una primera probada de este mundo sin tener que comprometerse económicamente. Si te gusta más la lectura entonces revisa alguna pagina o blog, si te gusta el contenido audiovisual, revisa videos de youtube o algún curso en línea.
Otro de los motivos por el cual recomiendo tanto el aprender por uno de estos medios es porque potenciará el aprendizaje autodidacta y creeme, cuando se trata de programar necesitar tener esa habilidad bien pulida, no siempre tendrás a alguien que te explique como hacer las cosas, por lo que practicar y aprender por tu cuenta viendo videos y tutoriales puede darte un primer abreboca de como sera esto.
Luego que ya hayas experimentado un poco con recursos gratuitos si puedes intentar pagar por un curso de programación en alguna academia o plataforma en línea como Udemy, Coursera, Platzi etc. o inclusive estudiar una carrera de ingeniería informática
Practica, practica, practica
Cuando se trata de programar la mejor manera de aprender es poniendo tus manos sobre un teclado y poniendo en práctica realmente lo que vayas aprendiendo y leyendo. Cuando lo hagas será cuando realmente veas que esos conocimientos están sirviendo para algo, será cuando entiendas el porqué de todo lo que habías leído o visto, y será cuando te surjan aún más dudas que querrás aclarar durante tu aprendizaje y la mejor manera de hacer esto es practicando.
Quiero aprender porque tengo una aplicación en mente
Si esta fue tu respuesta, a la pregunta inicial de porque quieres aprender el camino que debes seguir es similar. Por lo que solo me limitaré a explicarte ciertos pasos que podrías saltarte.
Para empezar ten en cuenta que si ya tienes un proyecto en mente, tus estudios y preparación deben ir dirigidos a ese proyecto, lo cual hará que lo saques adelante y al mismo tiempo aprendes. Por otro lado, si tu único objetivo es llevar a cabo ese proyecto probablemente termines encontrándote con la realidad de que tendrás que aprender un poco de todo para poder cubrir cada aspecto de tu aplicación..
¿Front o Back?
Si tienes en mente una aplicación, página web o programa, y te planteas hacerlo por tu cuenta o inclusive con la ayuda de algún amigo o amiga, muy probablemente debas aprender ambas especializaciones. No a un nivel tan profundo como en el caso de un especialista sino justo lo necesario para poder llevar a cabo tu proyecto. Normalmente dependiendo del tipo de aplicación puede ser que tengas que profundizar más en uno u otro. Por ejemplo, si vas a hacer un videojuego posiblemente debas aprender casi en un 90% lenguaje backend para poder programar el comportamiento del mismo. Por otro lado, si lo que deseas hacer es una página web tal vez debas aprender un 80% frontend. Si habláramos de una aplicación móvil por ejemplo los porcentajes estarán balanceados ya que debes poder cubrir muy bien ambos aspectos de la aplicación.
¿Qué lenguaje escoger?
Al igual que con front y back probablemente te veas obligado a aprender más de un lenguaje, posiblemente uno de frontend y uno de backend, pero no solo eso, sino que tendrás que aprender un montón de cosas extras que otro programador aprendería de una experiencia laboral, por ejemplo, base de datos, servidores, integraciones con otros sistemas, etc. Todo dependerá del software que quieras hacer en si. No me malinterpretes, no busco desanimarte, si eres una persona que tiene un proyecto en mente, aprender estos conceptos puede ser muy entretenido porque los aprenderías y los aplicarías casi al mismo tiempo y podrás ir viendo como tu aplicación da un pequeño paso más camino a terminarse.
Respecto a los lenguajes dependiendo de la aplicación que quieras hacer deberás escoger tu lenguaje, no es tanto sobre lo que te guste o no, sino más bien en lo que debes usar o no. Por ejemplo, si quieres hacer una aplicación de Android no te quedará otra opción que aprender Java con Android. si por otro lado quieres hacer un blog con wordpress tal vez quieras aprender PHP con Javascript. Si quieres hacer un videojuego, tal vez debas aprender a usar un motor de videojuegos y algún lenguaje como C#, JS o Python
Aprende, pon en práctica, corrige
A diferencia de alguien que aprende por profesión, tu tienes un software o aplicación en mente, por lo que seguramente quieres que esta funcione lo mejor posible, si nunca en tu vida has programado, te encontrarás volviendo atrás a alguna parte de tu aplicación que ya hayas hecho para corregir o agregar cosas que fuiste aprendiendo como hacer.
Conclusión
Independientemente de tus motivos, aprender a programar con un objetivo en mente hace que dedicarse a esto sea algo mucho más llevadero, habrán momentos en los que no entenderás nada o no sabras si estas haciendo lo correcto, pero confía cuando te digo que eventualmente todo irá teniendo sentido. Espero que esta serie de pasos que te he recomendado puedan darte una mejor idea de como comenzar en este mundo y recuerda que no es algo fácil de aprender pero por suerte todo el que tenga la voluntad de aprenderlo, podrá hacerlo y al lograrlo verás que se te abren las puertas a un mundo con infinidad de posibilidades.