Bienvenidos al asombroso mundo de la programación. Programar es una de las habilidades más útiles y poderosas que puedes aprender para lograr que tu visión se convierta en realidad.

En este manual veremos por qué la programación es tan importante, sus aplicaciones, conceptos básicos y las habilidades que necesitas para tener éxito en el campo de la programación.

Aprenderás:

¿Preparados? ¡Comencemos! ✨

🔹 ¿Qué es programación?

main-image
La programación es esencial para nuestras actividades diarias.

¿Sabías que la programación ya es una parte fundamental de tus actividades diarias? Veamos por qué. Estoy segura de que te sorprenderás.

Cada vez que enciendes tu smartphone, laptop, tableta, smart TV o cualquier otro dispositivo electrónico, estás ejecutando código que ha sido planeado, desarrollado y escrito por desarrolladores. Este código crea el resultado final e interactivo que puedes ver en tu pantalla.

Esto es exactamente de lo que se trata la programación. Es el proceso de escribir código para resolver un problema en particular o para implementar una tarea específica.

La programación es lo que le permite a tu computadora ejecutar los programas que usas cada día y es lo que le permite a tu smartphone ejecutar las aplicaciones que te encantan. Es una parte esencial del mundo que conocemos hoy en día.

Cuando revisas tu calendario, asistes a conferencias virtuales, navegas en la web o editas un documento, estás usando código que ha sido escrito por desarrolladores.

Y quizás te estés preguntado: "¿Qué es código?"

Código es una secuencia de instrucciones que un programador escribe para decirle a un dispositivo (como una computadora) qué hacer.

El dispositivo no puede saber por sí mismo cómo manejar una situación en particular o cómo realizar una tarea específica. Así que los desarrolladores analizan la situación y escriben instrucciones explícitas para implementar lo que se necesita.

Para hacerlo, deben usar una sintaxis en particular (un conjunto de reglas para escribir el código).

Un desarrollador (también llamado programador) es una persona que analiza un problema e implementa una solución usando código.

Suena genial, ¿cierto? Es muy poderoso y puedes ser parte de este maravilloso mundo si aprender a programar. Veamos cómo.

Tú, como desarrollador.

Visualízate en el rol de un desarrollador por un momento. Imagina que estás desarrollando una aplicación móvil, como las que probablemente tienes instaladas en tu smartphone en este momento.

¿Qué es lo primero que harías?

Piénsalo un momento.

La respuesta es...

Analizar el problema. ¿Qué estas intentando crear?

Como desarrollador, comenzarías diseñando la distribución de la aplicación, cómo funcionará, sus distintas pantallas y funcionalidad y todos esos pequeños detalles que harán que tu aplicación sea genial para los usuarios alrededor del mundo.

Solo después de haber planificado todo cuidadosamente, puedes comenzar a escribir tu código. Para hacerlo, deberás escoger un lenguaje de programación para el proyecto. Veamos qué es un lenguaje de programación y por qué son super importantes.

🔸 ¿Qué es un lenguaje de programación?

what-is-a-programming-language
Logos de lenguajes de programación populares.

Un lenguaje de programación es un lenguaje que las computadoras pueden entender.

No podemos simplemente escribir palabras en español en nuestro programa, de esta forma:

"Computadora, ¡Resuelve esta tarea!"

Y esperar que nuestras computadoras pueden entender lo que intentamos decirles. Debemos seguir ciertas reglas para escribir las instrucciones.  

Cada lenguaje de programación tiene su propio conjunto de reglas que determinan si una línea de código es válida o no. Debido a esto, el código que escribas en un lenguaje de programación será diferente al código que escribas en otros lenguajes de programación.

💡 Dato: algunos lenguajes de programación son más complejos que otros pero la mayoría de ellos comparten conceptos básicos y funcionalidad básica. Si aprendes a programar en un lenguaje de programación, es muy probable que puedas aprender a programar en otro lenguaje de programación mucho más rápido.

Antes de comenzar a desarrollar aplicaciones y programas geniales, debes aprender las reglas básicas del lenguaje de programación que escojas para el proyecto.

💡 Dato: un programa es un conjunto de instrucciones escritas en un lenguaje de programación para que la computadora las ejecute. Normalmente escribimos el código de nuestro programa en un archivo o en varios archivos.

Por ejemplo, esta es una línea de código en Python (un lenguaje de programación muy popular) que muestra el mensaje "¡Hola, Mundo!":

print("¡Hola, Mundo!")

Pero si escribimos la misma línea de código en JavaScript (un lenguaje de programación usado principalmente para el desarrollo web), veremos un error porque no será válida.

Para lograr algo similar en JavaScript, debemos escribir esta línea de código:

console.log("¡Hola, Mundo!");

Visualmente, se ven muy diferentes, ¿cierto? Esto se debe a que Python y JavaScript tienen una sintaxis diferente y un conjunto diferente de funciones built-in.

💡 Dato: las funciones built-in son básicamente tareas que ya están definidas en el lenguaje de programación. Esto nos permite usarlas directamente en nuestro código al escribir sus nombres y especificar los valores que necesitan.

En nuestros ejemplos, print() es una función built-in en Python mientras que console.log() es una función que usamos en JavaScript para ver el mensaje en la consola (una herramienta interactiva) si ejecutamos nuestro código en el navegador.

Ejemplos de lenguajes de programación incluyen Python, JavaScript, TypeScript, Java, C, C#, C++, PHP, Go, Swift, SQL y R. Existen muchos lenguajes de programación y la mayoría de ellos pueden ser usados para distintos propósitos.

💡 Dato: estos fueron los lenguajes de programación más populares en la Stack Overflow Developer Survey 2022 (una encuesta muy popular en la comunidad de desarrolladores):

Screenshot-2023-01-05-at-3.33.07-PM
Los 14 lenguajes de programación más populares entre los desarrolladores que respondieron la Stack Overflow Developer Survey 2022. Esta es una encuesta anual que recolecta datos sobre tecnologías populares y tendencias en la comunidad de desarrolladores.

Existen muchos lenguajes de programación (¡cientos o incluso miles!) pero generalmente aprenderás y trabajarás con algunos de los más populares. Algunos de ellos tienen aplicaciones más amplias como Python y JavaScript mientras que otros (como R) tienen propósitos más específicos (e incluso científicos).

Esto suena muy interesante, ¿cierto? Y apenas estamos comenzando a hablar sobre los lenguajes de programación. Hay mucho que aprender sobre ellos y te prometo que si decides aprender más sobre programación, tu tiempo y esfuerzo valdrán totalmente la pena.

¡Genial! Ahora que ya sabes qué es programación y qué son los lenguajes de programación, veamos cómo la programación está relacionada con los números binarios.

🔹 Programación y números binarios

Cuando piensas en programación, probablemente lo primero que viene a tu mente es algo muy parecido a lo que puedes ver en esta imagen, ¿cierto? Una secuencia de ceros y unos en tu computadora.

image
Los números binarios son 0 y 1.

En realidad, la programación sí está relacionada con los números binarios (0 y 1) pero de una forma indirecta porque los desarrolladores no escriben su código usando ceros y unos.

Generalmente escribimos nuestros programas en un lenguaje de programación de alto nivel, un lenguaje de programación con una sintaxis que reconoce palabras específicas (llamadas palabras clave o keywords en inglés), símbolos y valores de distintos tipos de datos.

Básicamente, escribimos nuestro código de una forma en la que los seres humanos pueden entenderlo.

Por ejemplo, estas son las palabras clave que usamos en Python:

False               class               from                or
None                continue            global              pass
True                def                 if                  raise
and                 del                 import              return
as                  elif                in                  try
assert              else                is                  while
async               except              lambda              with
await               finally             nonlocal            yield
break               for                 not 
Lista de palabras clave en Python.

Cada lenguaje de programación tiene su propio conjunto de palabras clave (palabras escritas en inglés). Estas palabras clave son parte de la sintaxis y de la funcionalidad esencial del lenguaje de programación.

Pero las palabras clave son solo palabras comunes en inglés, casi como las que encontraríamos en un libro.

Eso nos lleva a hacer dos preguntas muy importantes:

  • ¿Cómo la computadora entiende e interpreta lo que intentamos decir?
  • ¿Cuál es el rol del sistema numérico binario en este proceso?

La computadora no entiende estas palabras, símbolos o valores directamente.

Cuando un programa se ejecuta, el código que escribimos en un lenguaje de programación que los seres humanos pueden entender es transformado automáticamente a código binario que la computadora puede entender.

11---binary-diagram
Proceso de transformar un programa a código binario.

Esta transformación de código fuente (que los seres humanos pueden entender) a código binario (que la computadora puede entender) se llama compilación.

Según Britannica, un compilador se define como:

Un software de computadora que traduce (compila) código fuente escrito en un lenguaje de alto nivel (por ejemplo, C++) a un conjunto de instrucciones en lenguaje de máquina (machine-language instructions) que pueden ser entendidas por el CPU de una computadora digital.

Texto original en inglés:

Computer software that translates (compiles) source code written in a high-level language (e.g., C++) into a set of machine-language instructions that can be understood by a digital computer’s CPU.

Britannica también menciona que:

El término compilador fue acuñado por la científica de computación Americana Grace Hopper, quien diseñó uno de los primeros compiladores en los inicios de la década de 1950.

Texto original en inglés:

The term compiler was coined by American computer scientist Grace Hopper, who designed one of the first compilers in the early 1950s.

Algunos lenguajes de programación pueden ser clasificados como lenguajes de programación compilados mientras que otros pueden ser clasificados como lenguajes de programación interpretados en base a cómo se transforman a instrucciones en lenguaje de máquina.  

Sin embargo, todos deben pasar por un proceso que los convierten en instrucciones que la computadora puede entender.

Genial. Ahora ya sabes por qué el código binario es tan importante para la ciencia de la computación. Sin él, básicamente programación no existiría porque las computadoras no serían capaces de entender nuestras instrucciones.

Ahora veamos las aplicaciones de programación y las distintas áreas que puedes explorar.

🔸 Aplicaciones prácticas de programación

Screenshot-2023-01-05-at-4.02.28-PM
Programación tiene muchas aplicaciones prácticas en cualquier industria que puedas imaginar.

La programación tiene distintas aplicaciones en diversas industrias. Esto es verdaderamente sorprendente porque puedes aplicar tu conocimiento en literalmente cualquier industria que te interese.

Desde ingeniería hasta agricultura, desde desarrollo de videojuegos hasta física, las posibilidades son infinitas si aprendes a programar.

Veamos algunas de ellas. (¡Te prometo que son asombrosas! ⭐).

Desarrollo web front-end

1---frontend
Los desarrolladores web front-end desarrollan la parte de las páginas y aplicaciones web que los usuarios pueden ver y los elementos con los cuales pueden interactuar.

Si aprendes a programar, puedes usar tus habilidades de programación para diseñar y desarrollar páginas web y plataformas en línea. Los desarrolladores web front-end crean las partes de las páginas web que los usuarios pueden ver y los elementos con los cuales pueden interactuar directamente.

Por ejemplo, en este momento estás leyendo un artículo en la publicación de freeCodeCamp. La publicación tiene esta estructura, presentación y funcionalidad gracias al código que los desarrolladores front-end escribieron línea por línea.

💡 Dato: si aprender desarrollo web front-end, tú también pueden crear plataformas interactivas.

Screen-Shot-2022-12-02-at-9.56.43-PM
El código HTML y CSS de la página web principal de freeCodeCamp. (Esta es una vista previa del código en las Herramientas de Desarrollo de Chrome).

Los desarrolladores web front-end usan HML y CSS para crear la estructura de un sitio web (estos son lenguajes de marcado (markup), los cuales se usan para presentar información) y escriben código de JavaScript para agregar funcionalidad e interactividad.

Si deseas aprender desarrollo web front-end, puedes aprender HTML y CSS con estos cursos gratuitos en los canales de YouTube de freeCodeCamp:

También puedes aprender JavaScript de forma gratuita con los siguientes cursos:

💡 Dato: puedes obtener la certificación de Diseño Web Adaptativo aprendiendo con ejercicios interactivos en freeCodeCamp.  

Desarrollo web back-end

2---backend
Los desarrolladores web back-end desarrollan servidores y bases de datos para manejar todo lo que ocurre detrás de escenas para crear la funcionalidad de aplicaciones web más complejas. 

Las aplicaciones web más complejas y dinámicas que trabajan con información del usuario también requieren de un servidor. Un servidor es un programa de computadora que recibe solicitudes y y envía respuestas apropiadas. También necesitan una base de datos, una colección de valores almacenados de forma estructurada.

Los desarrolladores web back-end se encargan de desarrollar el código de los servidores. Deciden cómo manejar las distintas solicitudes, cómo enviar los recursos apropiados, cómo almacenar la información y básicamente cómo lograr que todo lo que se ejecuta detrás de escenas funcione correctamente y de forma eficiente.

Un ejemplo real de desarrollo back-end es lo que ocurre cuando creas una cuenta en freeCodeCamp y completas un reto de programación. Tu información se almacena en una base de datos y puedes acceder a ella luego cuando inicias sesión con tu correo electrónico y contraseña.  

Screen-Shot-2022-12-02-at-10.07.41-PM
Un reto interactivo de freeCodeCamp

Esta funcionalidad genial e interactiva fue implementada por desarrolladores web back-end.

💡 Dato: los desarrolladores web full-stack se encargan del desarrollo web front-end y back-end. Tienen conocimiento especializado sobre ambas áreas.

Todas las plataformas complejas que usas cada día, como las plataformas de redes sociales, plataformas de compras en línea y plataformas educativas, usan servidores y desarrollo web back-end para crear su funcionalidad.

Python es un ejemplo de un lenguaje de programación poderoso para este propósito. Es uno de los lenguajes de programación más populares que existen y su popularidad continúa aumentando cada año. Esto se debe, en parte, a que es sencillo y fácil de aprender y sin embargo, es lo suficientemente poderoso y versátil para ser usado en aplicaciones del mundo real.

💡 Dato: si tienes curiosidad sobre las aplicaciones específicas de Python, este es un artículo que escribí sobre el tema.

JavaScript también puede ser usado para desarrollo web back-end gracias a Node.js

Otros lenguajes de programación usados para desarrollar servidores web son PHP, Ruby, C# y Java.

Si deseas aprender desarrollo web back-end, puedes tomar estos cursos gratuitos en el canal de YouTube de freeCodeCamp:

💡 Tip: freeCodeCamp también tiene una certificación gratuita de Desarrollo Back End y APIs.

Desarrollo de aplicaciones móviles

3---mobile-apps
Los desarrolladores de aplicaciones móviles diseñan y desarrollan las aplicaciones que usamos diariamente.

Las aplicaciones móviles ya son parte de nuestra rutina diaria. Estoy segura de que no podrías imaginar la vida sin ellas.

Piensa en tu aplicación móvil favorita. ¿Por qué te gusta tanto?

Nuestras aplicaciones favoritas nos ayudan a realizar nuestras tareas diarias, nos entretienen, resuelven un problema y nos ayudan a alcanzar nuestras metas. Siempre están allí para nosotros.

Ese es el poder del desarrollo de aplicaciones móviles y tú puedes ser parte de este maravilloso mundo si aprender desarrollo de aplicaciones móviles.

Los desarrolladores enfocados en el desarrollo de aplicaciones móviles se encargan de planificar, diseñar y desarrollar la interfaz de usuario y la funcionalidad de las aplicaciones. Identifican un vacío en las aplicaciones existentes e intentan crear un producto funcional que mejore las vidas de las personas.

💡 Dato: independientemente del campo de escojas, tu meta como desarrollador siempre debe ser lograr mejorar la calidad de vida de las personas. Las aplicaciones no son solo aplicaciones, tienen el potencial de cambiar nuestras vidas. Siempre debes recordar esto cuando planifiques tus proyectos. Tu código puede mejorar la vida de alguien y esa es una gran responsabilidad.

Los desarrolladores de aplicaciones móviles usan lenguajes de programación como JavaScript, Java, Swift, Kotlin y Dart. Frameworks como Flutter y React Native son muy útiles para desarrollar aplicaciones multiplataforma (aplicaciones que funcionan correctamente en distintos sistemas operativos como Android y iOS).

Según la documentación oficial de Flutter:

Flutter es un framework de código abierto (open source) desarrollado por Google para desarrollar aplicaciones hermosas, compiladas de forma nativa y multiplataforma a partir de una misma base de código.  

Texto original en inglés:

Flutter is an open source framework by Google for building beautiful, natively compiled, multi-platform applications from a single codebase.

Si deseas aprender desarrollo de aplicaciones móviles, puedes tomar estos cursos gratuitos en el canal de YouTube de freeCodeCamp:

Desarrollo de videojuegos

4---games

Los juegos crean recuerdos inolvidables. Estoy segura de que recuerdas tus juegos favoritos y por qué te gustaban (o te gustan) tanto. Ser desarrollador de juegos significa tener la oportunidad de traer alegría y entretenimiento a jugadores alrededor del mundo.

Los desarrolladores de videojuegos visualizan, planifican e implementan la funcionalidad de un videojuego. También deben encontrar o crear recursos como personajes, obstáculos, fondos, música, efectos de sonido y más.

💡 Dato: si aprendes a programar, puedes crear tus propios videojuegos. Imagina crear un juego genial que le fascine a los jugadores alrededor del mundo. Eso es exactamente lo que me encanta sobre programación. Solo necesitas una computadora, tu conocimiento y herramientas básicas para crear algo asombroso.

Lenguajes de programación populares usados para desarrollo de videojuegos incluyen JavaScript, C++, Python y C#.

Si estás interesado en aprender desarrollo de videojuegos, puedes tomar estos cursos gratuitos en el canal de YouTube de freeCodeCamp:

Biología, Física y Química

5---biology-and-science

La programación puede aplicarse en todos los campos científicos que puedas imaginar, incluyendo biología, física, química e incluso astronomía. ¡Sí! Los científicos usan programación todo el tiempo para recolectar y analizar datos. Incluso pueden crear simulaciones para probar sus hipótesis.

Biología

En biología, los programas de computadora pueden simular genética de poblaciones y dinámica de poblaciones. Incluso existe un campo llamado bioinformática.

Según el artículo "Bioinformatics" de Ardeshir Bayat, miembro del Centro para la Investigación Médica sobre Genómica Integrada de la Universidad de Manchester:

La bioinformática se define como la aplicación de las herramientas de computación y análisis a la recolección e interpretación de datos biológicos.

Texto original en inglés:

Bioinformatics is defined as the application of tools of computation and analysis to the capture and interpretation of biological data.

El Dr. Bayat menciona que la bioinformática puede ser usada para secuenciar el genoma. También menciona que estos hallazgos pueden llevar al descubrimiento de nuevos medicamentos y terapias personalizadas.

Python, R, PHP, PERL y Java son lenguajes de programación usados comúnmente en el campo de la bioinformática.

💡 Dato: R es un "lenguaje y ambiente de programación para computación y gráficos estadísticos" (fuente).

Un ejemplo de una herramienta genial que los científicos pueden usar para biología es Biopython. Este es un framework de Python con "herramientas disponible de forma gratuita para computación biológica."

Si te gustaría aprender cómo puedes aplicar tus habilidades de programación en campos científicos, puedes tomar estos cursos gratuitos en el canal de YouTube de freeCodeCamp:

Física

La física requiere ejecutar simulaciones y programar es perfecto para hacer exactamente eso. Los científicos pueden programar y ejecutar simulaciones basadas en distintos escenarios que serían difíciles de replicar en la vida real. Esto es mucho más eficiente.

Los lenguajes de programación que se usan comúnmente para simulaciones de física incluyen C, Java, Python, MATLAB y JavaScript.

Química

La química también utiliza simulaciones y análisis de datos, así que es un campo en el cual la programación puede ser muy útil.

En este artículo científico del Dr. Ivar Ugi y sus colegas del Organisch-chemisches Institut der Technischen Universität München, mencionan que:

El diseño de síntesis completamente nuevas y la clasificación y documentación de estructuras, subestructuras y reacciones son ejemplos de nuevas aplicaciones de computadoras a la química.

Texto original en inglés:

The design of entirely new syntheses, and the classification and documentation of structures, substructures, and reactons are examples of new applications of computers to chemistry.

Los experimentos científicos también generan datos detallados y resultados que pueden ser analizados con programas de computadora desarrollados por científicos.

Piénsalo: escribir un programa para generar un diagrama de caja (box plot) o un diagrama de dispersión (scatter plot) o cualquier otro tipo de gráfico para visualizar tendencias en miles de valores puede ahorrar mucho tiempo y esfuerzo a los investigadores.

Esto les permite enfocarse en la parte más importante de su trabajo: analizar los resultados.

Screen-Shot-2022-12-04-at-10.40.43-AM
Ejemplo de visualizaciones de datos que puedes crear con Seaborn, una librería de Python para visualización de datos.Esto puede ser muy útil para analizar datos, ¿cierto?

💡 Dato: si te interesa aprender más sobre este tema, esta es una lista de simulaciones de química de la American Chemical Society. Estas simulaciones fueron programadas por desarrolladores y están ayudando a miles de estudiantes y profesores alrededor del mundo.

Piénsalo... Tú podrías crear la próxima gran simulación. Si te interesa un campo científico, te recomiendo totalmente aprender a programar. Tu trabajo será mucho más productivo y tus resultados serán mucho más fáciles de analizar.

Si te interesa aprender programación para aplicaciones científicas, puedes tomar estos cursos gratuitos en el canal de YouTube de freeCodeCamp:

Ciencia de datos e ingeniería

6---engineering-2

Hablando de datos... programación también es esencial para un campo llamado ciencia de datos. Si te interesa responder preguntas a través de datos y estadísticas, este campo puede ser exactamente lo que estás buscando y tener habilidades de programación te ayudará a alcanzar tus metas.

Los científicos de datos recolectan y analizan datos para responder preguntas en distintas áreas. Según UC Berkeley en el artículo "What is Data Science?":

Los científicos de datos efectivos son capaces de identificar preguntas relevantes, recolectar datos de una amplia variedad de fuentes de datos, organizar información, traducir resultados a soluciones y comunicar sus hallazgos de una forma que afecta positivamente las decisiones de negocios.

Texto original en inglés:

Effective data scientists are able to identify relevant questions, collect data from a multitude of different data sources, organize the information, translate results into solutions, and communicate their findings in a way that positively affects business decisions.

Existen muchos lenguajes de programación para analizar y visualizar datos, pero quizás uno de los más usados para este propósito es Python.

Este es un ejemplo de las visualizaciones de datos que puedes crear con Python. Son muy útiles para analizar datos y puedes personalizarlos para que se ajusten a tus necesidades.

image-6
Ejemplos de visualizaciones de datos de las galerías de Matplotlib y Seaborn.

Si deseas aprender a programar para ciencia de datos, puedes tomar estos cursos gratuitos en el canal de YouTube de freeCodeCamp:

💡 Dato: también puedes obtener las siguientes certificaciones en freeCodeCamp:

Ingeniería

La ingeniería es otro campo en el cual programación te puede ayudar a tener éxito. Ser capaz de escribir tus propios programas de computadora puede lograr que tu trabajo sea mucho más eficiente.

Existen muchas herramientas creadas específicamente para ingenieros. Por ejemplo, el lenguaje de programación R está especializado en aplicaciones estadísticas y Python también es muy popular en este campo.

Otra herramienta genial para programar en ingeniería es MATLAB. De acuerdo a su sitio web oficial:

MATLAB es una plataforma de programación y computación numérica usada por millones de ingenieros y científicos para analizar datos, desarrollar algoritmos y crear modelos.

Texto original en inglés:

MATLAB is a programming and numeric computing platform used by millions of engineers and scientists to analyze data, develop algorithms, and create models.

Las posibilidades son realmente infinitas.

Puedes aprender MATLAB en este curso gratuito en el canal de YouTube de freeCodeCamp.

Si te interesa aprender herramientas de ingeniería relacionadas con programación, este es un curso gratuito en el canal de YouTube de freeCodeCamp sobre AutoCAD, un software de diseño computarizado en 2D y 3D usado por ingenieros.

Medicina y farmacología

7---medicine-an-pharmachology
La programación ha ayudado a los científicos a desarrollar nuevas técnicas y dispositivos médicos.

La medicina y la farmacología están evolucionando constantemente al desarrollar nuevos tratamientos y procedimientos. Veamos cómo puedes aplicar tus habilidades de programación en estos campos.

Medicina

La programación está en todas partes. Si te interesa el campo de la medicina, aprender a programar también puede ser muy útil para ti. Incluso si te gustaría enfocarte en ciencias de la computación y desarrollo de software, puedes aplicar tu conocimiento en ambos campos.

Desarrolladores especializados se encargan de desarrollar y escribir el código que permite que los dispositivos usados por la medicina moderna funcionen correctamente.

Piénsalo por un momento... todas estas máquinas y dispositivos están controlados por software y alguien tiene que escribir ese software. Los registros médicos también son almacenados y administrados por sistemas especializados creados por desarrolladores.

Ese podrías ser tú si decides seguir este camino. Suena genial, ¿no?

Según el artículo científico Application of Computer Techniques in Medicine:

Los usos principales de las computadoras en medicina incluyen sistemas informáticos de hospitales, análisis de datos en medicina, computación para imagenología médica, toma de decisiones asistida por computadoras, cuidado de pacientes en estado crítico, terapias asistidas por computadora, entre otros.

Texto original en inglés:

Major uses of computers in medicine include hospital information system, data analysis in medicine, medical imaging laboratory computing, computer assisted medical decision making, care of critically ill patients, computer assisted therapy and so on.

Farmacología

Programación y ciencias de la computación pueden ser aplicadas para desarrollar nuevos medicamentos en el campo de la farmacología.

Este artículo de MIT News presenta un ejemplo asombroso de lo que puedes lograr en este campo aprendiendo a programar. Describe cómo un MIT senior, Kristy Carpenter, usó ciencias de la computación en 2019 para desarrollar "medicamentos nuevos y más económicos." Kristy menciona que:

La inteligencia artificial, la cual puede ayudar a calcular la mejor combinación de compuestos para un medicamento en particular, puede reducir el tiempo de prueba y error e idealmente, puede acelerar el proceso de diseño de nuevos medicamentos.

Texto original en inglés:

Artificial intelligence, which can help compute the combinations of compounds that would be better for a particular drug, can reduce trial-and-error time and ideally quicken the process of designing new medicines.

Otro ejemplo de una aplicación del mundo real de programación en farmacología está relacionada con Python (¡sí, Python tiene muchas aplicaciones!). Entre sus historias de éxito, vemos que Python fue seleccionado por AstraZeneca para desarrollar técnicas y programas que pueden ayudar a los científicos a desarrollar nuevos medicamentos más rápido y más eficientemente.

La documentación de Python menciona que:

Para ahorrar tiempo y dinero en trabajo de laboratorio, los químicos experimentales usan modelos computacionales para reducir el conjunto de buenos candidatos para un medicamento. Además, se verifica que los candidatos a ser evaluados no son simples variaciones de la estructura química básica de otros.

Texto original en inglés:

To save time and money on laboratory work, experimental chemists use computational models to narrow the field of good drug candidates, while also verifying that the candidates to be tested are not simple variations of each other's basic chemical structure.

Si te interesa aprender programación para medicina o campos relacionados con ciencias de la salud, este es un curso gratuito en el canal de YouTube de freeCodeCamp sobre programación para imagenología médica:

Educación

8---education
La programación puede ser usada para crear herramientas que ayuden a los profesores y estudiantes a tener experiencias de aprendizaje más productivas y entretenidas. Enseñar a los estudiantes a programar también desarrolla sus habilidades para resolver problemas. 

¿Alguna vez pensaste que la programación podría ser útil para la educación? Bueno, permíteme decirte que sí lo es y que es muy importante. ¿Por qué? Porque las herramientas de aprendizaje digital que los estudiantes y profesores usan hoy en día son programadas por desarrolladores.

Cada vez que un estudiante abre una aplicación educativa, usa una plataforma educativa como freeCodeCamp, escribe en un pizarrón digital o asiste a una clase a través de una plataforma de reuniones en línea, la programación lo está haciendo posible.

Como un programador o como un profesor sabe programar, puedes crear la próxima gran aplicación que mejore la experiencia de aprendizaje de los estudiantes alrededor del mundo.

Quizás será una aplicación para tomar notas, una plataforma de educación en línea, una aplicación de presentaciones, un juego educativo o cualquier otra aplicación que pueda ser útil para los estudiantes.

Lo importante es crearla pensando en los estudiantes si tu meta es crear algo asombroso que cree recuerdos inolvidables.

Si tienes una visión clara de lo que quieres crear, puedes crearlo con código.

Los profesores también pueden enseñarle a sus estudiantes a programar para desarrollar sus habilidades de resolución de problemas y enseñarles habilidades importantes para su futuro.

💡 Dato: si estás enseñandole a tus alumnos a programar, Scratch es un lenguaje de programación genial para enseñar los fundamentos de programación. En particular, está enfocado en enseñarle a los niños cómo programar de forma interactiva.

De acuerdo al sitio web oficial de Scratch:

Scratch es la comunidad más grande de programación para niños del mundo y un lenguaje con una interfaz visual simple que le permite a los jóvenes crear historias digitales, juegos y animaciones.

Texto original en inglés:

Scratch is the world’s largest coding community for children and a coding language with a simple visual interface that allows young people to create digital stories, games, and animations.

Si te interesa aprender a programar con propósitos educativos, puedes tomar estos cursos gratuitos en el canal de YouTube de freeCodeCamp:

Aprendizaje automático, inteligencia artificial y robótica

9---robotics
El aprendizaje automático y la inteligencia artificial son muy populares hoy en día porque las plataformas pueden aprender cómo los usuarios interactúan con su contenido para sugerirles información y productos relevantes.

Algunos de los campos más asombrosos que están directamente relacionados con programación son el aprendizaje automático (machine learning), inteligencia artificial y robótica. Veamos por qué.

La inteligencia artificial está definida por Britannica como:

El proyecto de desarrollar sistemas dotados de los procesos intelectuales característicos de los humanos, tales como la habilidad de razonar, descubrir significado, generalizar o aprender de experiencia pasada.

Texto original en inglés:

The project of developing systems endowed with the intellectual processes characteristic of humans, such as the ability to reason, discover meaning, generalize, or learn from past experience.

El aprendizaje automático es una rama o subconjunto del campo de la inteligencia artificial en la cual los sistemas pueden aprender por sí mismos en base a datos. La meta de este proceso de aprendizaje es predecir el output esperado. Estos modelos aprenden continuamente cómo "pensar" y cómo analizar situaciones en base a su entrenamiento previo.

Los lenguajes de programación usados más comúnmente en estos campos son Python, C, C#, C++ y MATLAB.

La inteligencia artificial y el aprendizaje automático tienen aplicaciones asombrosas en diversas industrias, tales como:

  • Detección de imágenes y objetos.
  • Realizar predicciones en base a patrones.
  • Reconocimiento de texto.
  • Motores de recomendación (como cuando una plataforma de comercio en línea te muestra productos que te pueden gustar o cuando YouTube te muestra videos que te pueden interesar).
  • Detección de spam para correos electrónicos.
  • Detección de fraudes.
  • Funcionalidad de las redes sociales como sugerencias personalizadas.
  • Mucho más... existen literalmente millones de aplicaciones en cualquier industria.

Si te interesa aprender a programar para inteligencia artificial y aprendizaje automático, puedes tomar estos cursos gratuitos en el canal de YouTube de freeCodeCamp:

💡 Dato: también puedes obtener una certificación de Aprendizaje Automático con Python en freeCodeCamp.

Robótica

La programación también es muy importante para la robótica. ¡Sí! Los robots también se programan.

La robótica es definida por Britannica como:

El diseño, construcción y uso de máquinas (robots) para realizar tareas que eran realizadas tradicionalmente por seres humanos.

Texto original en inglés:

Design, construction, and use of machines (robots) to perform tasks done traditionally by human beings.

Los robots son como computadoras. No saben qué hacer hasta que les dices qué hacer escribiendo instrucciones en tus programas. Si aprendes a programar, puedes programar robots y maquinaria industrial en instalaciones de manufactura.

Si te interesa aprender programación para robótica, electrónica y campos relacionados, este es un curso gratuito sobre Arduino en el canal de YouTube de freeCodeCamp:

Otras aplicaciones

Existen muchas otras aplicaciones fascinantes de programación en cualquier campo que te imagines. Estos son algunos ejemplos:

  • Agricultura: en este artículo de MIT News, un granjero aprendió a programar para desarrollar una aplicación para un tractor autónomo.
  • Vehículos autónomos: los vehículos autónomos dependen de software que analiza los alrededores para tomar decisiones rápidas y precisas mientras están en movimiento. Si te interesa esta área, este es un curso sobre este tema en el canal de YouTube de freeCodeCamp en español.
  • Finanzas: la programación también puede ser útil para desarrollar programas y modelos que predicen indicadores financieros y tendencias en los mercados. Por ejemplo, este es un curso de algorithmic trading en el canal de YouTube de freeCodeCamp.

Las posibilidades son infinitas. Espero que esta sección te dé una noción de por qué aprender a programar es tan importante para tu presente y para tu futuro. Será una habilidad valiosa en cualquier campo de escojas.

Genial. Ahora veamos las habilidades de personalidad (soft skills) que necesitas para tener éxito como programador.

🔹 Habilidades de un programador exitoso

skills

Después de ver una amplia gama de aplicaciones de programación, debes tener curiosidad de las habilidades que necesitas para tener éxito en este campo.

Curiosidad

Un programador debe ser curioso. Independientemente de si estás comenzando a aprender a programar o si ya tienes 20 años de experiencia, los proyectos de programación siempre te presentarán nuevos retos y oportunidades de aprendizaje. Si aprovechas estas oportunidades, estarás mejorando tus habilidades continuamente y podrás tener éxito.

Entusiasmo

El entusiasmo es un rasgo clave de la personalidad de un programador pero esto también se aplica a cualquier campo si quieres tener éxito. El entusiasmo te mantendrá feliz y curioso sobre lo que estás creando y aprendiendo.

💡 Dato: si ya no tienes tanto entusiasmo como antes, es hora de encontrar o aprender algo nuevo que pueda encender la chispa en ti otra vez y llenarte de esperanza y sueños.

Paciencia

Un programador debe ser paciente porque transformar una idea inicial en un producto funcional puede tomar tiempo, esfuerzo y muchos pasos. La paciencia te mantendrá enfocado en la meta final.

Resiliencia

Programar puede ser retador. Eso es verdad. Pero lo que te define no es a cuántos retos te enfrentes, sino cómo los enfrentes. Si prosperas a pesar de estos retos te convertirás en un mejor programador y puedes crear algo que cambie al mundo.

Creatividad

Los programadores deben ser creativos porque aunque cada lenguaje de programación tiene un conjuntos de reglas en particular para escribir el código, programar es como usar LEGOs. Tienes los bloques pero debes decidir qué crear y cómo crearlo. El proceso de escribir el código requiere creatividad combinada con buenas prácticas establecidas para cada tecnología.

Resolución de problemas y análisis

La programación es básicamente analizar y resolver problemas con código. Dependiendo del campo que escojas, esos problemas serán más sencillos o más complejos pero todos requerirán cierto nivel de habilidades de resolución de problemas y un análisis detallado de la situación.

Preguntas como:

  • ¿Qué debo desarrollar?
  • ¿Cómo puedo desarrollarlo?
  • ¿Cuál es la mejor forma de desarrollarlo?

Son parte de la rutina diaria de un programador.

Ser capaz de concentrarse por largos periodos de tiempo

Cuando estás trabajando en un proyecto de programación, deberás enfocarte en una tarea por largos periodos de tiempo. Desde crear el diseño, planificar y escribir el código, probar el resultado y corregir bugs (problemas en el código), dedicarás muchas horas a una tarea en particular. Por eso es esencial poder enfocarse y mantener la meta final en mente.

Tomar notas detalladas

Esta habilidad es muy importante para los programadores, especialmente cuando estás aprendiendo a programar. Tomar notas detalladas puede ayudarte a entender y a recordar los conceptos y las herramientas que aprendes. Esto también aplica para programadores con experiencia, ya que ser programador involucra aprender constantemente.

Comunicación

Inicialmente, puedes pensar que la programación es una actividad solitaria e imaginar que un programador pasa cientos de horas solo sentado en su escritorio.

Pero la realidad es que cuando encuentres tu primer trabajo, verás que la comunicación es super importante para coordinar tareas con otros miembros del equipo y para intercambiar ideas y sugerencias.

Estar abierto a sugerencias

En programación, generalmente hay más de una forma de implementar la misma funcionalidad. Distintas alternativas pueden funcionar de forma similar, pero algunas pueden ser más fáciles de leer o más eficientes en términos de tiempo o uso de recursos.

Cuando aprender a programar, siempre debes estar abierto a la crítica constructiva como una herramienta de aprendizaje. De igual forma, cuando trabajas en un equipo, toma las sugerencias de tus compañeros de forma positiva y siempre intenta mejorar.

Aprendizaje continuo

Escoger el campo de la programación equivale a escoger aprendizaje continuo. Si quieres aprender a programar, debes saber que siempre deberás aprender algo nuevo porque siempre surgen nuevas tecnologías y las tecnologías existentes se actualizan. Piénsalo... ¡Eso es genial porque siempre hay algo nuevo e interesante por aprender!

Estar abierto a cosas nuevas

Finalmente, una habilidad esencial para tener éxito como programador es siempre estar abierto a probar cosas nuevas. Debes salir de tu zona de confort y abrirte a nuevas tecnologías y productos. En la industria de la tecnología las cosas evolucionan muy rápidamente y adaptarse al cambio es esencial.

🔸 Tips para aprender a programar

tips

Ahora que ya sabes más sobre programación, sobre lenguajes de programación y las habilidades que necesitas para ser un programador exitoso, veamos algunos tips (datos) para aprender a programar.

💡 Dato: estos datos están basados en mi experiencia y en mi opinión personal.

  • Escoge un lenguaje de programación para aprender inicialmente. Cuando aprendes a programar, es fácil sentirse abrumado por el número de opciones y caminos iniciales. Mi consejo sería primero enfocarse en entender los conceptos básicos de ciencias de la computación y un lenguaje de programación. Python y JavaScript son opciones buenísimas para aprender los fundamentos.
  • Toma notas detalladas. La habilidad de tomar notas detalladas es esencial para registrar y analizar los temas que estás aprendiendo. Puedes agregar comentarios personalizados y datos para explicar lo que estás aprendiendo.
  • Practica constantemente. Solo puedes mejorar tus habilidades de resolución de problemas practicando y aprendiendo nuevas técnicas y herramientas. Intenta practicar todos los días.

💡 Dato: hay un reto llamado #100DaysOfCode (100 días de código) al cual puedes unirte para practicar cada día.

  • Siempre inténtalo otra vez. Si no puedes resolver un problema en tu primer intento, toma un descanso y vuelve una y otra vez hasta que lo resuelvas. Esa es la única forma de aprender. Aprende de tus errores y aprende nuevos enfoques.  
  • Aprende cómo investigar y encontrar respuestas. Los lenguajes de programación, las librerías y los frameworks normalmente tienen documentación oficial qué explica sus elementos y cómo usarlos. Este es un recurso muy valioso que definitivamente deberías usar.
  • Visita Stack Overflow. Esta es una plataforma asombrosa. Es como una enciclopedia online de respuestas a preguntas comunes de programación. Puedes encontrar respuestas a preguntas que ya han sido publicadas y publicar nuevas preguntas para recibir ayuda de la comunidad.
  • Define metas. La motivación es uno de los factores más importantes para el éxito. Definir metas es muy importante para mantenerse enfocado, motivado y con entusiasmo. Una vez que alcances tus metas, define nuevas metas que te parezcan retadoras y emocionantes.
  • Crea proyectos. Cuando estás aprendiendo a programar, aplicar tus habilidades te ayudará a expandir tu conocimiento y a recordar mejor las cosas. Crear proyectos es una forma perfecta de practicar y de crear un portafolio que luego puedes mostrar a posibles empleadores.

🔹 Conceptos básicos de programación

basic-concepts

Genial. Si leer este artículo te ha ayudado a confirmar que quieres aprender a programar, es hora de que des tus primeros pasos.

Estos son algunos conceptos básicos de programación que deberías conocer:

  • Variable: una variable es un nombre que asignamos a un valor en un programa de computadora. Cuando definimos una variable, asignamos un valor a un nombre y reservamos un espacio en la memoria para almacenar ese valor. El valor de una variable puede ser actualizado durante la ejecución del programa.
  • Constante: una constante es similar a una variable. Se usa para almacenar un valor pero no puede ser modificado. Una vez que asignas un valor a una constante, no puedes cambiarlo durante todo el programa.
  • Condicional: un condicional es una estructura de programación que le permite a los desarrolladores escoger lo que la computadora debería hacer en base a una condición. Si la condición es verdadera, algo ocurrirá pero si es falsa, ocurrirá algo diferente.
  • Ciclo: un ciclo es una estructura de programación que nos permite ejecutar un bloque de código (una secuencia de instrucciones) varias veces. Son muy útiles para evitar repetición y para implementar funcionalidad más compleja.
  • Función: una función nos ayuda a evitar repetición de código y a reutilizar nuestro código. Es como un bloque de código al cual le asignamos un nombre, pero también tiene características especiales. Podemos escribir el nombre de la función para ejecutar esa secuencia de instrucciones sin escribirlas nuevamente.

💡 Dato: las funciones pueden comunicarse con el programa principal y el programa principal puede comunicarse con las funciones a través de parámetros, argumentos y sentencias return.

  • Clase: una clase se usa como un plano de construcción para definir las características y funcionalidad de un tipo de objeto. De esta forma, podemos representar objetos de la vida real en nuestros programas.
  • Bug: un bug es un error en la lógica o en la implementación de un programa que resulta en un output inesperado o incorrecto.
  • Depuración (debugging): el proceso de debugging es el proceso de encontrar y corregir bugs en un programa.
  • IDE: este acrónimo significa Integrated Development Environment (Entorno Integrado de Desarrollo). Es un ambiente creado para desarrollo de software que tiene las herramientas más útiles que necesitas para escribir programas, tales como un editor de archivos, un explorador, un terminal y un menú con opciones útiles.

💡 Dato: un IDE gratuito y comúnmente usado es Visual Studio Code, creado por Microsoft.

Genial. Ahora ya sabes algunos de los conceptos fundamentales de programación. Cada lenguaje de programación tiene una sintaxis diferente pero todos comparten la mayoría de estos conceptos y estructuras.

🔸 Tipos de lenguajes de programación

types-of-programming-languages

Los lenguajes de programación pueden ser clasificados en base a distintos criterios. Si quieres aprender a programar, es importante que conozcas estas clasificaciones básicas:

Complejidad

  • Lenguajes de programación de alto nivel (High-level programming languages): están diseñados para que los seres humanos entiendan el código y deben ser convertidos a lenguaje de máquina para que las computadoras los puedan entender. Son los lenguajes de programación que usamos comúnmente. Por ejemplo: JavaScript, Python, Java, C#, C++ y Kotlin.
  • Lenguajes de programación de bajo nivel (Low-level programming languages): son más difíciles de entender porque no están diseñados para seres humanos. Están diseñados para que las máquinas puedan entenderlos y procesarlos de forma eficiente.

Conversión a código de máquina

  • Lenguajes de programación compilados: los programas escritos en este tipo de lenguaje de programación se convierten directamente a código de máquina gracias a un compiler (compilador). Algunos ejemplos son C, C++, Haskell y Go.
  • Lenguajes de programación interpretados: los programas escritos en este tipo de lenguaje de programación necesitan otro programa llamado interpreter (intérprete), el cual se encarga de ejecutar el código línea por línea. Algunos ejemplos son Python, JavaScript, PHP y Ruby.

💡 Dato: según este artículo de la publicación de freeCodeCamp:

La mayoría de los lenguajes de programación pueden tener implementaciones compiladas e interpretadas - El lenguaje de programación por sí mismo no es necesariamente compilado o interpretado. Sin embargo, para fines de simplificar este concepto, normalmente nos referimos a ellos de esta forma.

Texto original en inglés:

Most programming languages can have both compiled and interpreted implementations – the language itself is not necessarily compiled or interpreted. However, for simplicity’s sake, they’re typically referred to as such.

Existen otros tipos de lenguajes de programación basados en distintos criterios, tales como:

  • Lenguajes de programación procedimentales (Procedural programming languages).
  • Lenguajes de programación funcionales (Functional programming languages).
  • Lenguajes de programación orientados a objetos (Object-oriented programming languages).
  • Lenguajes de programación para scripting (Scripting languages).
  • Lenguajes de programación lógicos (Logic programming languages).

Y la lista de tipos de lenguajes de programación continúa. Esto es muy interesante porque puedes analizar las características de un lenguaje de programación para ayudarte a escoger el adecuado para tu proyecto.

🔹 Cómo contribuir a proyectos de código abierto (open source)

Screen-Shot-2022-12-04-at-4.53.42-PM
La página web principal de GitHub.

Finalmente, quizás pienses que programar implica sentarse en un escritorio durante muchas horas seguidas viendo tu código sin ninguna interacción humana. Pero permíteme decirte que esto no tiene que ser cierto en lo absoluto. Puedes ser parte de una comunidad de aprendizaje o de una comunidad de desarrolladores.

Inicialmente, cuando estás aprendiendo a programar, puedes participar en una comunidad de aprendizaje como freeCodeCamp. De esta forma, podrás compartir tu viaje con otras personas que están aprendiendo a programar, igual que tú.

Luego, cuando tengas suficientes habilidades y confianza en tu conocimiento, puedes practicar contribuyendo a proyectos de código abierto (open source) y unirte a comunidades de desarrolladores.

El software de código abierto (open source) es definido por Opensource.com como:

Software con código fuente que cualquier persona puede inspeccionar, modificar y mejorar.

Texto original en inglés:

Software with source code that anyone can inspect, modify, and enhance.

GitHub es una plataforma online que nos permite albergar proyectos creados con control de versiones. Allí puedes encontrar muchos proyectos open source (como freeCodeCamp), a los cuales puedes contribuir para practicar tus habilidades.

💡 Dato: muchos proyectos open source aceptan colaboración de desarrolladores de distintos niveles de experiencia e incluso primeras colaboraciones en GitHub. Estas son oportunidades excelentes para practicar tus habilidades y contribuir a proyectos reales de programación.

Screen-Shot-2022-12-04-at-5.01.58-PM
El repositorio de freeCodeCamp en GitHub.

Contribuir a proyectos de código abierto (open source) en GitHub es genial para adquirir nueva experiencia trabajando y comunicándote con otros desarrolladores. Esta es una habilidad muy importante para trabajar en este campo.  

Screen-Shot-2022-12-04-at-5.06.54-PM
GitHub registra tus colaboraciones y las muestra en tu perfil. Se muestran como cuadritos interactivos verdes y grises que representan los días del año. Un tono más oscuro de verde significa que en ese día realizaste más colaboraciones a repositorios en GitHub. Imagen tomada de este artículo de GitHub.

Trabajar en equipo es una experiencia genial. Te lo recomiendo totalmente una vez que te sientas más cómodo con tus habilidades y conocimiento.

¡Lo hiciste! Llegaste al final de este artículo. Muy buen trabajo. Ya sabes qué es programación. Ahora veamos un breve resumen.

🔸 En resumen

  • Programar es una habilidad muy importante. Si aprendes a programar, puedes lograr que tu visión se vuelva realidad.
  • Programación tiene muchas aplicaciones en campos muy diversos. Puedes encontrar una aplicación de programación en prácticamente cualquier campo que escojas.
  • Los lenguajes de programación puedes ser clasificados en base a distintos criterios y comparten conceptos básicos tales como variables, condicionales, ciclos y funciones.
  • Siempre define metas que quieras alcanzas y toma notas detalladas. Para tener éxito como programador, debes tener entusiasmo y consistencia.

Muchas gracias por leer mi artículo. Espero que te haya gustado y que te sea de utilidad. Ahora ya sabes por qué deberías aprender a programar.

🔅 Te invito a seguirme en Twitter (@EstefaniaCassN) y YouTube (Coding with Estefania) para encontrar tutoriales de programación.