Tal ves ya decidiste ser programador o programadora, pero te estarás preguntando "bueno y ¿por dónde empiezo?" De primera mano sé que empezar en el mundo de la programación puede ser un tanto abrumador, y no es para menos hay demasiadas áreas a las cuales enfocarse.
Voy a darte los pasos necesarios para pasar de no saber nada de computación a convertirte en un programador real, respetado y que incluso, con esfuerzo, podría pasar una entrevista de Google.
Requisitos
Más allá de los requisitos de saber si esto es para ti o no , los cuales puedes leer en el post que tengo, necesitas herramientas con las cuales trabajar, así como pinceles para los pintores, los programadores necesitamos diferentes herramientas para poder hacer nuestro trabajo:
- Computadora
Y no, no necesitas una gran computadora al principio. Si quieres comenzar con algo sencillo, una computadora con Windows o Linux que tenga unos 4GB de memoria RAM es suficiente para algo básico. Yo personalmente recomiendo una computadora de 8GB de RAM, y ni siquiera tiene que ser nueva, puedes comprar una de segunda mano en Mercado Libre o Ebay.
Yo personalmente utilizo una Macbook Pro 2015 porque necesito el sistema operativo para poder desarrollar aplicaciones de iOS, pero tranquilos, no nos precipitemos, todo a su tiempo.
- Solo eso
Efectivamente, solo necesitas una computadora para poder comenzar a aprender cómo ser programador.
Primeros pasos
Es hora de ponerse manos a la obra. Lo primero que te recomiendo que hagas es que te familiarices con ciertos conceptos:
- Programación
- Algoritmo
- Lenguajes de programación
- Sintaxis
- Programación secuencial
- Compilación / Interpretación
- Variable
- Tipos de datos
- Condicionales
- Ciclos
- Arreglos
- Funciones
- Terminal / Linea de comandos
Esto es muy general, pero creo que es la base de todo lo que vamos a aprender más adelante. Si vas a una universidad, posiblemente te enseñen estos conceptos en uno o dos semestres, pero yo creo que investigando y practicando, es posible aprenderlo en menos tiempo.
Si quieres comenzar por algún lado y aprender lo básico, te recomiendo que tomes algún curso de programación básica. El que tiene Platzi se me hace muy completo y gratis.
¿Qué lenguaje de programación debo elegir?
Muchos te pueden decir que no te cases aún con algún lenguaje de programación y que mejor aprendas con pseudo-código. El problema que tengo con esto es que el pseudo-código es contra intuitivo, y no funciona igual para aquellos que aprendemos de forma kinestésica. Yo te recomiendo que puedes comenzar con 3 y que estos te puedan ser de mucha más ayuda:
- Python 3
- Javascript
- Dart
Aún no te preocupes por el donde se usan estos lenguajes, a final de cuenta son herramientas, tú utilizalas para aprender las bases.
Más alla de lo básico
Lo siguiente que te recomiendo es que aprendas sobre Programación Orientada a Objetos (POO). Ya que este es un paradigma muy diferente a la Programación Secuencial y con esto puedes ampliar la gama de problemas que puedas resolver.
Algunos conceptos que deberías conocer a profundidad son:
- Herencia
- Polimorfismo
- Interfaz
- Instancia
- Encapsulamiento
- Clases
Entre muchas otras cosas, esto es solo la punta del iceberg.
Los lenguajes más conocidos para poder aprender de POO son:
- Java (Sin duda el más conocido)
- Python 3
Pongamonos serios
En este punto ya deberías de saber todo lo necesario para poder programar tus primeros pininos o programas básicos. Ya sabes lo que es una variable como se ocupa en un programa, cómo se ejecuta un programa, como se compila, etc. Ahora vamos a darle más sabor a la sopa.
Tuve un maestro en la carrera que nos dijo: "Puedes seguir siendo pseudo programador o convertirte en un programador real" Y con esto se refería a que no basta con saber utilizar las herramientas, sino que había que saber utilizarlas de forma inteligente. La programación no solo se trata de escribir código, sino de pensar en soluciones a problemas. Y no tienes que crear la rueda desde cero, ya antes otras personas pasaron por problemas similares al tuyo y por eso crearon algoritmos y estructuras de datos para resolverlos.
Te recomiendo leer a profundidad acerca de algoritmos y estructuras de datos, te voy a dar algunos ejemplos de donde podrías comenzar:
Matemáticas
Si yo sé, esto no era parte del trato, pero créeme que saber esto te va a facilitar mucho la existencia.
- Matemáticas Discretas
- Algebra Lineal
- Lógica Matemática
Estructuras de Datos
- Matrices
- Conjuntos
- Listas Ligadas
- Pilas / Colas
- Grafos
- Arboles n-arios
- Arboles binarios
Algoritmos
- Recursividad
- Algoritmos de ordenamiento
- Algoritmos de búsqueda
- Algoritmos de transformaciones lineales (Utilizados en procesamiento de imágenes)
También hablando de algoritmos te exhorto a que le dediques un tiempo a los ordene de complejidad O (conocidos como O grande) ya que esto es la base para que puedas crear programas más eficientes y te diferencies de las personas que solo escriben código y ya.
Con todo lo que hemos aprendido hasta este punto ya te puedes considerar un programador real o al menos con las herramientas y el conocimiento necesario para poder elegir la ruta que más te agrade y comenzar tu proceso de especialización.
Bonus
Muchas empresas grandes como Amazon, Facebook, Google, Microsoft, LinkedIn, etc. Utilizan, en sus procesos de reclutamiento, problemas que involucran los últimos tres puntos que mencionamos, por lo que te recomiendo estudiar mucho sobre algoritmos y estructuras de datos, ya que estos son los cimientos en los cuales vas a construir toda tu carrera.
Si quieres estudiar y aprender más a profundidad sobre esto, te recomiendo la pagina de LeetCode y si quieres practicar ejercicios que podrías ver en una entrevista de trabajo, te recomiendo visitar HackerRank. Yo te recomiendo mucho utilizar estas paginas para medir tu conocimiento y saber en donde estas parado.
No te preocupes por el tiempo que te tome aprender todo esto, no es una carrera ni tampoco algo que vas a aprender en un par de meses, básicamente te estoy resumiendo una carrera universitaria de 5 años en un temario que sirva de guía para que inicies y no te pierdas en el camino. Mi recomendación es que le dediques el tiempo que sea necesario para que te vuelvas una experta o experto en el bello arte de la programación.
Si te gusto el post y/o tienes alguna duda, no olvides que puedes escribirme con toda confianza en mi twitter @noeosorioh y con gusto te puedo apoyar.