Cómo empezar a codificar: A Practical Guide For Beginners (Updated 2020)

Paso 3: Empezar un proyecto para practicar lo aprendido

Ver cursos por sí solo no te ayudaría a interiorizar el concepto. Tendrías que poner el concepto en práctica. La mejor manera de hacerlo sería plantear proyectos.

Si tienes una idea para un proyecto o tienes un problema que quieres resolver con la codificación, ¡es genial!

Si no es así, he preparado una lista de proyectos aptos para principiantes en los que puedes inspirarte o probar.

Algunos proyectos aptos para principiantes que puedes probar

Aquí tienes algunas terminologías que pueden resultar confusas

Bibliotecas: Una biblioteca es una colección de piezas de código relacionadas que han sido compiladas y almacenadas juntas en un solo archivo. Ese archivo se puede enlazar con su código para darle acceso al código de la biblioteca.

API: API son las siglas de Application Programming Interface (interfaz de programación de aplicaciones). Una API es un intermediario de software que permite que dos aplicaciones se comuniquen entre sí. En otras palabras, la API te permite solicitar funciones a un proveedor de software para utilizarlas en tu código. Por ejemplo, la API de Spotify te permite solicitar datos como canciones y artistas a Spotify y puedes hacer uso de los datos en tu código o aplicación.

Proyectos de nivel 1

Calculadora

  • Lenguaje: Python
  • Bibliotecas: Ninguna
  • Guía: https://www.programiz.com/python-programming/examples/calculator

Sudoku Solver

  • Lenguaje: Python
  • Bibliotecas: Ninguna
  • Guía: https://techwithtim.net/tutorials/python-programming/sudoku-solver-backtracking/

Hangman

  • Lenguaje: Python
  • Bibliotecas: Ninguna
  • Guía: https://www.pythonforbeginners.com/code-snippets-source-code/game-hangman

Proyectos de nivel 2

Ajedrez

  • Lenguaje: Python o Java
  • Bibliotecas: Ninguna
  • Guía: https://www.youtube.com/watch?v=ejZqLsQDjuo

Descubrir semanalmente la lista de reproducción de Spotify

  • Construir tu propio sistema para hacer algo similar a Descubrir semanalmente la lista de reproducción de Spotify
  • Lenguaje: Python
  • Bibliotecas: API de Spotify
  • Guía: https://towardsdatascience.com/making-your-own-discover-weekly-f1ac7546fedb

Herramienta de seguimiento automático del tiempo

  • Mejora la concentración mediante el seguimiento del tiempo empleado en aplicaciones de escritorio o sitios web en tiempo real.
  • Lenguaje: Python
  • Bibliotecas: Selenium
  • Guía: https://www.youtube.com/watch?v=ZBLYcvPl1MA

Proyectos de nivel 3

Automatización de Instagram

  • Automatizar el proceso de publicación en Instagram
  • Lenguaje: Python
  • Bibliotecas: Flask,Instapy
  • Guía: https://www.youtube.com/watch?v=vnfhv1E1dU4

Twitter Bot

  • Un bot que tuitea automáticamente a tu feed.
  • Lenguaje: Python
  • Bibliotecas: Twitter API
  • Guía: https://medium.com/science-friday-footnotes/how-to-make-a-twitter-bot-in-under-an-hour-259597558acf, https://learn.g2.com/how-to-make-a-twitter-bot, http://socialmedia-class.org/twittertutorial.html

Telegram chatbot

  • Un chatbot que permite automatizar los mensajes de telegram
  • Lenguaje: Python
  • Bibliotecas: Python-Telegram-API
  • Guía: https://www.freecodecamp.org/news/learn-to-build-your-first-bot-in-telegram-with-python-4c99526765e4/

Esta no es una lista exhaustiva. Si tienes un problema que necesitas resolver, piensa en cómo puedes resolverlo con la programación. Eso también puede ser un proyecto.

No te rindas fácilmente, tienes que superar las luchas iniciales

El mayor error que puedes cometer como aspirante a programador es rendirte porque crees que no eres lo suficientemente inteligente para aprender a programar. Aprender a programar no tiene nada que ver con tu inteligencia.

Aprender a programar es difícil y la mayoría de la gente se enfrentaría a dificultades en algún momento porque hay muchos temas que aprender. Al programar, va a haber muchos temas que no van a tener sentido la primera vez. Así que, abstente de los pensamientos negativos sobre ti mismo.

Yo también me atasco. A menudo tengo que volver a ver la misma conferencia o video tutorial varias veces para poder entender el concepto. No te desanimes si te encuentras en mi lugar.

Es importante construir una base sólida

Por muy elementales que puedan parecer al principio, los fundamentos de la programación siempre tienen que ser lo primero: cuanto mejor los entiendas, más fácil será aprender conceptos más avanzados. Si el tema actual que estás aprendiendo no tiene sentido para ti, quédate donde estás. No pases al siguiente tema. Saltarse el tema es similar a construir una casa sin base, descuidando los cimientos.

Si el tutorial (o el libro) que estás utilizando no explicaba suficientemente el tema, puede que tengas que buscar otros recursos que te convengan. Puedes encontrar casi cualquier cosa que quieras aprender de forma gratuita en Google. Averigua qué buscar (por ejemplo, en + cualquier otra palabra clave útil).

Tómate al menos 20 minutos para resolver algo por tu cuenta antes de buscar ayuda. Es muy probable que la respuesta ya esté delante de ti. Luchar te hace aprender mejor y ser un mejor programador en general.

Stackoverflow y learn programming son minas de oro para la ayuda en programación.

Aprende haciendo. Juega siempre con el código mientras aprendes.

El objetivo es ser consciente de tu propio aprendizaje a medida que avanzas en el camino del aprendizaje. Por lo tanto, no siga ciegamente los cursos y copie a ciegas el código sin entenderlo primero. Comprende los conceptos que se enseñaron en la lección y trata de recrearlo.

A medida que avances, haz un hábito de practicar tu programación. Puedes hacerlo en leetcode, hackerrank, o haciendo un proyecto. Intenta hacer un proyecto después de cada módulo con los conceptos que has aprendido. Cuando hacía cursos online intentaba hacer un proyecto cada semana, aplicando todos los conceptos aprendidos.

Parte 2: Hoja de ruta para convertirte en un programador avanzado

Ahora que has aprendido los fundamentos de la programación, el siguiente paso sería pensar en qué camino de la programación quieres aprender más. Hay muchos caminos que usted puede aventurarse en una vez que haya comprendido los fundamentos de la programación, con las principales y más populares vías de ser Ingeniería de Software & Analítica de Datos.

Analítica de Datos

¿Qué es la analítica de datos?

La analítica de datos es la ciencia de examinar los datos en bruto para concluir nueva información. Implica la aplicación de un proceso algorítmico o mecánico para obtener información. Por ejemplo, examinar varios conjuntos de datos para buscar correlaciones significativas entre ellos.

Entonces, ¿por qué deberías aprender analítica de datos? El Big Data es el futuro. Se está generando a un ritmo exponencial, y muchas empresas están haciendo uso de esos datos para tomar mejores decisiones, así como para verificar y refutar teorías o modelos existentes. Se espera que la demanda de analítica de datos crezca en el futuro, ya que los datos serán el núcleo del proceso de toma de decisiones en muchas empresas.

¿Cómo puedes aprender analítica de datos gratis?

He peinado los planes de estudio de las universidades y he ideado un camino para intentar equiparar los cursos online gratuitos con los cursos universitarios. Sin embargo, todos estos cursos están en Python, si quieres aprender en un lenguaje diferente, no dudes en consultar otros cursos.

Esquema de los módulos de Data Analytics

El esquema se basa en general en los módulos universitarios. Sin embargo, estoy excluyendo algunos de los módulos importantes como Estructura de Datos y Algoritmo que las universidades enseñan, ya que esos son más conceptuales y de nivel superior.

Nota: He puesto el aprendizaje de máquinas más arriba en la prioridad, ya que le permite hacer uso de las habilidades que aprendió en los cursos fundamentales.

Cursos Fundamentales

Módulo 1: Aprendiendo los Fundamentos de Python (1 Mes)

  • Aprendiendo la sintaxis de Python
  • Aprendiendo Bucles
  • Aprendiendo Programación Orientada a Objetos

Módulo 2: Preprocesamiento de datos, visualización de datos, análisis exploratorio de datos (1 Mes)

  • Aprender a hacer uso de las librerías de python (matplotlib, numpy y pandas)
  • Estas librerías permiten manipular los datos

Cursos Avanzados

Módulo 3: Aprendizaje automático (2 meses)

  • Requisito previo: Álgebra Lineal
  • El Aprendizaje Automático es un curso bastante técnico de matemáticas
  • Python tiene una librería bastante completa para el Aprendizaje Automático llamada Scikit-Learn.
  • Si quieres un enfoque más práctico para aprender el aprendizaje automático, puedes consultar Kaggle Learn.

Cursos de herramientas del mundo real

Módulo 4: Bases de datos (SQL) (1 mes)

  • El curso de bases de datos básicamente te enseña cómo se almacenan los datos y cómo puedes recuperar esos datos para realizar funciones de programación.
  • El conocimiento de las bases de datos y SQL es imprescindible si quieres convertirte en un científico de datos.

Módulo 5: Cursos de herramientas del mundo real

  • Hadoop & Map-Reduce + Spark(elige uno) (1.5 meses)
  • Estas son herramientas de Big Data que la industria utiliza comúnmente para procesar grandes cantidades de datos.
  • El aprendizaje de las tecnologías Hadoop le dará una gran cantidad de conocimientos fundamentales, teoría y habilidades prácticas. Además, usted puede encontrar algo nuevo usándolo.
  • Spark es la implementación moderna de Hadoop y está viendo un caso de uso creciente.

Módulo 6: Data Storytelling (1 Semana)

  • Presentar la historia con los datos es el eslabón que le falta al profesional de la analítica para entregar la esencia de las señales de los datos y los insights a los ejecutivos, la gerencia y otras partes interesadas.

Cursos opcionales

  • Estructura de datos
  • Algoritmo
  • Aprendizaje profundo
  • En cinco cursos, aprenderás los fundamentos del Aprendizaje profundo, entenderás cómo construir redes neuronales y aprenderás a liderar proyectos de aprendizaje automático con éxito. Practicarás todas estas ideas en Python y en TensorFlow, que te enseñarán.
  • Es uno de los mejores cursos de deep learning que hay. Actualmente, estoy en medio de hacer este curso y estoy de acuerdo con las críticas ya que se presenta de una manera sencilla y clara a pesar de que el Aprendizaje Profundo es un tema técnico.
  • Otro gran recurso gratuito es fast.ai

Cosas que hay que evitar mientras se aprende Analítica de Datos

El escollo es que sólo estás aprendiendo pero no aplicando el conocimiento. Una forma de aplicar mis conocimientos es comenzar un proyecto después de cada módulo que he completado. En el caso de Data Analytics, puedes esforzarte en una competición de tu elección de Kaggle. Utiliza Kaggle Learn como guía útil

Ingeniería de Software

¿Qué es la Ingeniería de Software?

En pocas palabras, la Ingeniería de Software es básicamente utilizar conceptos de programación para construir aplicaciones

¿Cómo puedes aprender Ingeniería de Software gratis?

Creo que la Ingeniería de Software requiere una comprensión más fundamental de los conceptos informáticos que la Analítica de Datos, por lo tanto en mi esquema de módulos, incluí más cursos teóricos.

¿Quieres construir cosas para tener una idea?

Si es así, aprende Python y ve a los cursos prácticos. Siempre puedes volver a los cursos fundamentales cuando te encuentres con un obstáculo en cuanto a conocimientos teóricos.

Esquema de los módulos de Ingeniería de Software

Cursos fundamentales

Módulo 1: Aprendiendo los Fundamentos de Python (1 Mes)

  • Aprendiendo la sintaxis de Python
  • Aprendiendo Bucles
  • Aprendiendo Programación Orientada a Objetos

Módulo 2: Estructuras de Datos (2 Meses)

  • Este curso cubre las estructuras de datos esenciales como las listas enlazadas, las pilas, las colas, los árboles binarios y las tablas hash, y los algoritmos de búsqueda y ordenación como la búsqueda binaria, el quicksort, el mergesort, la ordenación por inserción, etc.
  • Las Estructuras de Datos son importantes ya que nos permiten mejorar el rendimiento de nuestro código utilizando el mejor tipo de datos para nuestro código.
  • El curso de Estructuras de Datos que he recomendado es en Java ya que nos obliga a la transición de un lenguaje simple de python a un lenguaje más verboso. Además, Java es bueno para aprender programación orientada a objetos y Estructuras de Datos.

Módulo 3: Algoritmos (2 Meses)

  • Esta es la segunda parte de una serie de dos cursos online gratuitos de Coursera que cubren estructuras de datos y algoritmos por Robert Sedgewick y Kevin Wayne, ambos son profesores de Ciencias de la Computación.
  • En esta parte, aprenderás sobre los algoritmos de procesamiento de grafos y cadenas.
  • También aprenderá algunas estructuras de datos y algoritmos avanzados utilizados en el desarrollo de aplicaciones.

Módulo 4 : (Bases de datos) (1 mes)

  • El curso de bases de datos básicamente le enseña cómo se almacenan los datos y cómo puede recuperar esos datos para realizar funciones de programación.

Módulo 5: Redes (1 Mes)

  • Hacer un curso de redes no es muy importante, así que puedes saltártelo si quieres. Sin embargo, si te interesa la ciberseguridad, es un curso absolutamente imprescindible

Cursos Prácticos

Módulo 6: Semana 9-10 (Desarrollo Web) (2 Meses)

  • Los temas incluyen diseño de bases de datos, escalabilidad, seguridad y experiencia de usuario. A través de proyectos prácticos, aprenderás a escribir y utilizar APIs, crear interfaces de usuario interactivas y aprovechar servicios en la nube como GitHub y Heroku. Al final del curso, saldrás con conocimientos y experiencia en principios, lenguajes y herramientas que te capacitan para diseñar y desplegar aplicaciones en Internet.
  • Personalmente, este fue mi curso favorito de desarrollo web ya que pasan por el front end y el back end y está muy bien explicado. Te enseñan HTML, CSS, Javascript y PHP.
  • Es un buen recurso para inspirarse en sitios web: https://github.com/melanierichards/just-build-websites

Módulo 7: Desarrollo de Apps Móviles ( elige la que más te guste) (2 Meses)

  • IOS
  • Android
  • Flutter (Mi método preferido de Desarrollo de Apps)
  • Personalmente no he aprendido el desarrollo de IOS antes. Pero comparando entre android y flutter, flutter es más rápido para desarrollar y hacer prototipos con él y por lo tanto prefiero flutter

Cursos Avanzados

Módulo 8: Arquitectura de Software (2 Meses)

  • En este curso, aprenderás a representar una arquitectura de software utilizando herramientas visuales como UML, lo cual es muy importante para comunicar la arquitectura con los accionistas así como con los desarrolladores que la implementarán.
  • También aprenderá algunas de las arquitecturas estándar, sus cualidades y compensaciones. El curso también habla de cómo se evalúan los diseños, lo que hace una buena arquitectura, y la arquitectura se puede mejorar.

Módulo 9: Prácticas de Ingeniería de Software (1 Mes)

  • Después de completar este curso, usted será capaz de
  1. Aplicar las prácticas básicas de ingeniería de software a nivel conceptual para un problema dado.
  2. Comparar y contrastar las metodologías de desarrollo tradicionales, ágiles y magras a un alto nivel. Estas incluyen Waterfall, Rational Unified Process, modelo V, incremental, modelos espirales y visión general de la mentalidad ágil
  3. Proponer una metodología más adecuada para una situación dada

Opcional

Aprendizaje de Máquinas

  • En realidad recomendé un curso más teórico de Aprendizaje de Máquinas por Andrew Ng
  • Aunque está un poco anticuado, enseña bien el concepto y sigue siendo uno de los mejores cursos de machine learning que hay después de muchos años.

Aprendizaje Profundo

  • En cinco cursos, aprenderás los fundamentos del Aprendizaje Profundo, entenderás cómo construir redes neuronales y aprenderás a dirigir proyectos de aprendizaje automático con éxito. Practicarás todas estas ideas en Python y en TensorFlow, que te enseñarán.
  • Actualmente, estoy en pleno proceso de hacer este curso y se presenta de forma sencilla de entender. Otro buen punto es que Andrew Ng utiliza Python en lugar de octave.
  • Otro gran recurso gratuito es fast.ai

Conclusión

Aunque he recomendado los módulos basados en cursos universitarios, puedes mezclar y combinar para hacer el mejor plan de estudios para ti. Si este artículo te ha ayudado, ¡ayúdame a compartirlo con tus amigos! Si quieres saber más sobre mí y lo que hago, visítame en mi página web http://www.chiayong.me/

Deja una respuesta

Tu dirección de correo electrónico no será publicada.