¿Es DIFÍCIL programar?

Nate Gentile
18 Jun 201814:06

Summary

TLDREl script destaca la importancia del desarrollo de software y la programación en la sociedad moderna, señalando su crecimiento y la alta demanda de desarrolladores. Expone cómo el software está presente en todos los aspectos de la vida cotidiana, desde dispositivos domésticos hasta transportes y smartphones. La programación es descrita como una actividad creativa y abstracta que permite a las máquinas realizar tareas complejas. El script invita a todos a aprender a programar, destacando su impacto en diversas áreas y la necesidad de programadores en el mundo actual.

Takeaways

  • 📈 El desarrollo de software es una de las profesiones con mayor crecimiento y demanda en los próximos años.
  • 💰 Los desarrolladores de software ganan un sueldo medio significativamente superior al de otros empleos en Estados Unidos, siendo más del doble.
  • 🌐 El software está presente en todos los aspectos de nuestra vida cotidiana, desde electrodomésticos hasta transportes y dispositivos personales.
  • 🤖 Los dispositivos electrónicos modernos están controlados por software, lo que les permite ser programados para realizar una amplia variedad de tareas.
  • 🛠️ La programación es una habilidad fundamental en la era digital, y es importante que las nuevas generaciones comprendan su importancia y oportunidades.
  • 👶 Es recomendable que todos aprendan a programar, no solo por la experiencia y la perspectiva nueva que ofrece, sino también para entender cómo funcionan las máquinas y la sociedad moderna.
  • 🔍 La programación es el proceso de 'hablar' con máquinas, dictándoles comportamientos y acciones para alcanzar objetivos específicos.
  • 🧩 La resolución de problemas a través de la programación es similar a resolver rompecabezas, donde cada problema puede tener múltiples soluciones y enfoques.
  • 🏭 La arquitectura del software es compleja y ha evolucionado con el tiempo, requiriendo reglas, lenguajes y metodologías para manejar su creciente complejidad.
  • 🔮 La programación no es solo escribir código, sino también una forma de pensamiento abstracto y análisis, que puede ser aprendida por cualquier persona con dedicación y práctica.
  • 🌟 La creatividad y la capacidad de resolver problemas en la programación son valiosas, y el éxito en este campo no está limitado por el cociente intelectual, sino por la imaginación y el esfuerzo personal.

Q & A

  • ¿Por qué está en auge el desarrollo de software y la programación?

    -El desarrollo de software y la programación están en auge debido a su importancia en la sociedad moderna y el crecimiento previsto en los próximos años, con un gran número de puestos de trabajo y salarios superiores a la media.

  • ¿Cuál es el sueldo medio de un desarrollador de software según el departamento de empleo de los Estados Unidos en 2016?

    -El sueldo medio de un desarrollador de software en 2016 era de 103,560 dólares anuales, el cual es más que el doble del sueldo medio de todos los empleos en Estados Unidos.

  • ¿En qué ámbitos de la sociedad se utiliza el software según el guion?

    -El software se utiliza en prácticamente todos los ámbitos de la sociedad, desde electrodomésticos hasta el transporte, incluyendo dispositivos analógicos y digitales, y sistemas complejos como los de transporte y smartphones.

  • ¿Qué es un microprocesador y cómo está relacionado con la programación?

    -Un microprocesador es una pequeña calculadora integrada en los aparatos que puede ser programada para realizar casi cualquier tarea. La programación es la serie de instrucciones que el procesador sigue para ejecutar acciones específicas.

  • ¿Por qué es importante aprender a programar según el guion?

    -Aprender a programar es importante por varias razones: la experiencia y apertura mental que ofrece, el conocimiento sobre cómo se dan vida a las máquinas, y la importancia de la programación en la sociedad moderna y en el futuro laboral.

  • ¿Cómo se describe el proceso de programación para un robot que debe salir de un laberinto en el guion?

    -El proceso de programación para un robot en un laberinto se describe como una serie de pasos sencillos, como dar un paso adelante, girar y comprobar obstáculos, siguiendo una estrategia como la de seguir siempre un muro.

  • ¿Qué dificultades presenta la programación de programas complejos con billones de líneas de código?

    -La programación de programas complejos presenta dificultades como la complejidad de análisis y recordación por parte del ser humano, lo que puede dificultar la identificación de errores y el mantenimiento del código.

  • ¿Cómo se compara la programación con la arquitectura en el guion?

    -La programación se compara con la arquitectura en el sentido de que, al igual que las ciudades requieren planos y estructura, los programas complejos necesitan una arquitectura de software bien definida para ser manejables y eficientes.

  • ¿Qué se entiende por 'arquitectura de software' en el contexto del guion?

    -La 'arquitectura de software' se refiere al conjunto de reglas, lenguajes, filosofías, patrones de diseño, paradigmas y metodologías que se utilizan para diseñar y construir sistemas de software complejos de manera estructurada y eficiente.

  • ¿Por qué la programación no es solo sobre escribir código, según el guion?

    -La programación no es solo sobre escribir código porque implica resolver problemas, pensar de manera abstracta y crear soluciones ingeniosas. Es una actividad creativa que requiere imaginación y no es un trabajo repetitivo o sin necesidad de creatividad.

  • ¿Cómo se describe la experiencia de programar según el guion?

    -Según el guion, la experiencia de programar es satisfactoria, ya que consiste en pensar en una solución, escribirla y ver que funciona. Es una forma de crear algo desde cero que resuelve problemas y no es un trabajo típico de oficina.

Outlines

00:00

💡 El auge de la programación y su impacto en la sociedad

El primer párrafo destaca la importancia y el crecimiento del desarrollo de software y la programación, que es una de las profesiones con más demanda laboral. Se menciona que, según el Departamento de Empleo de EE.UU., en 2016 había más de un millón de puestos de trabajo para desarrolladores con un sueldo medio superior al promedio de todos los empleos en el país. El texto también enfatiza cómo el software está presente en todos los aspectos de la vida cotidiana, desde dispositivos domésticos hasta el transporte, y cómo la evolución de los dispositivos analógicos a digitales ha permitido una mayor flexibilidad y programabilidad. Además, se argumenta que la programación es fundamental para entender y dar vida a las máquinas, y se anima a la sociedad a aprender esta habilidad, destacando su relevancia en diversos ámbitos y la necesidad de programadores en el mundo actual.

05:03

🤖 La programación como solución de problemas y su complejidad

El segundo párrafo profundiza en la naturaleza de la programación como el arte de resolver problemas a través de la creación de algoritmos. Se utiliza el ejemplo de un robot que debe salir de un laberinto para ilustrar cómo se estructuran los programas y cómo se toman decisiones basadas en las acciones disponibles. Se discute la idea de que, aunque los programas pueden ser muy simples o extremadamente complejos, como en el caso de aplicaciones como Facebook o sistemas de GPS, la esencia de la programación sigue siendo la misma: resolver un problema de manera eficiente. Se menciona la evolución de la programación desde ser una tarea artesanal a una industria compleja que requiere de metodologías y arquitectura de software para manejar proyectos de gran envergadura y se destaca la importancia de la organización y la planificación en el desarrollo de software.

10:04

🛠️ La diversidad en la programación y la creatividad en la resolución de problemas

El tercer párrafo explora la diversidad del mundo de la programación y cómo diferentes áreas y aplicaciones requieren habilidades y enfoques distintos. Se ilustra cómo la programación científica se enfoca en cálculos complejos, mientras que la programación web o la creación de motores gráficos involucra tareas muy específicas y técnicas. Se menciona el ejemplo de Facebook y cómo la búsqueda personalizada y rápida es el resultado de un ingente esfuerzo de ingeniería detrás de una función que parece sencilla. Además, se compara la programación con la invención y la construcción, donde se combinan recursos y bloques básicos para crear soluciones ingeniosas a problemas complejos. El texto concluye destacando la creatividad y la satisfacción que implica crear programas que resuelven problemas y cómo la programación no es una tarea repetitiva, sino una actividad que requiere imaginación y conexión entre la mente del programador y la máquina.

Mindmap

Keywords

💡Desarrollo de software

El 'Desarrollo de software' o 'programación' es la creación de aplicaciones, sistemas operativos y otros programas de ordenador. Es un campo en rápida expansión, como se menciona que hay una previsión de crecimiento aún mayor en los próximos años. En el video, se destaca que este oficio es una de las profesiones con más demanda laboral, con un sueldo medio superior al promedio de los empleos en Estados Unidos.

💡Programador

Un 'Programador' es una persona que escribe, planifica y crea código para desarrollar software. El video resalta la importancia del programador en la sociedad moderna, mencionando que prácticamente todos los aspectos de nuestra vida están controlados por software, y que los coches modernos tienen cientos de millones de líneas de código escritas por equipos de programadores.

💡Software

El 'Software' se refiere a los programas o conjuntos de instrucciones que un procesador puede ejecutar. Es una parte esencial de la vida cotidiana, desde el despertador hasta el smartphone, y es el tema central del video. Se discute cómo el software está en la base de todas las actividades humanas y cómo ha cambiado la forma en que se diseñan los dispositivos electrónicos.

💡Circuito analógico

Un 'Circuito analógico' es un sistema de circuitos eléctricos que operan con señales continuas en lugar de digitales. En el video, se contrasta con los dispositivos digitales modernos, señalando que antiguamente los dispositivos electrónicos eran analógicos y su comportamiento estaba definido por el diseño del circuito.

💡Microprocesador

Un 'Microprocesador' es un pequeño dispositivo integrado que contiene el circuito de un procesador central. Es mencionado en el video como un componente clave dentro de los dispositivos electrónicos modernos, capaz de ejecutar programas y cambiar el comportamiento del dispositivo.

💡Programa

Un 'Programa' es una secuencia de instrucciones que un computador puede seguir para realizar una tarea específica. El video describe cómo un programa es la 'parte blanda' de un dispositivo y cómo los programas son necesarios para dar vida a las máquinas, desde robots sencillos hasta sistemas complejos como redes de satélites GPS.

💡Algoritmo

Un 'Algoritmo' es un conjunto de reglas o procedimientos sistemáticos para resolver un problema o realizar una tarea. En el video, se utiliza el ejemplo de un robot que debe salir de un laberinto, demostrando cómo un algoritmo simple puede guiar al robot a través de una serie de acciones.

💡Arquitectura de software

La 'Arquitectura de software' es el diseño organizado de un sistema de software. El video la compara con la arquitectura de una ciudad, donde se necesitan planos y sistemas para que el software sea mantenible y escalable, abordando la complejidad creciente de los sistemas de software.

💡Paradigma de programación

Un 'Paradigma de programación' es un enfoque conceptual que proporciona una estructura para la solución de problemas de programación. Aunque no se define explícitamente en el video, se sugiere la existencia de diferentes paradigmas al mencionar la variedad de lenguajes, reglas y metodologías en la programación.

💡Ingeniería de software

La 'Ingeniería de software' es el estudio y aplicación de ingeniería al ciclo de vida del software. El video enfatiza la importancia de esta profesión, sugiriendo que es un campo en crecimiento y que todos pueden aspirar a ser parte de él.

💡Optimización

La 'Optimización' en el contexto de la programación se refiere a mejorar el rendimiento o la eficiencia del código. El video menciona la optimización en relación con los programadores de motores gráficos y los drivers de tarjetas gráficas, donde es crucial para aprovechar al máximo el hardware.

Highlights

El desarrollo de software es uno de los trabajos en más auge con crecimiento previsto en años venideros.

En 2016, había 1.256.200 puestos de trabajo para desarrolladores de software en los EE. UU. con un sueldo medio anuales de 103.560 dólares.

El sueldo medio de un desarrollador de software es más que el doble del sueldo medio en todos los empleos en EE. UU.

El software es intrínseco a nuestra vida cotidiana, controlando desde despertadores hasta transportes.

Los smartphones, compuestos por millones de líneas de código, son una obra maestra de ingeniería.

Los coches modernos tienen cientos de millones de líneas de código programadas por equipos de programadores.

La era informática ha afectado profundamente todas las actividades humanas.

Los dispositivos electrónicos modernos utilizan microprocesadores programables en lugar de circuitos analógicos.

La programación es una necesidad creciente en el mundo debido a la dependencia de software en todos los ámbitos.

Aprender a programar es una experiencia enriquecedora que abre la mente y permite ver las cosas de manera diferente.

La programación es fundamental en la sociedad moderna y es importante entender cómo se crea.

Es fundamental concienciar a las nuevas generaciones sobre la importancia y oportunidades en la ingeniería de software.

La programación es como hablar con máquinas y dictar su comportamiento para alcanzar un objetivo.

Un ejemplo de programación es enseñar a un robot a salir de un laberinto utilizando un conjunto de instrucciones simples.

Los programas modernos pueden tener billones de líneas de código, lo que representa un desafío para los programadores.

La programación ha evolucionado de ser una tarea artesanal a una industria compleja con equipos grandes y proyectos a gran escala.

La arquitectura de software es necesaria para manejar la complejidad de los sistemas modernos y facilitar la comprensión y modificación del código.

La programación varía en complejidad y especialización dependiendo del ámbito, desde científicos hasta programadores de videojuegos.

Los programadores piensan en abstracto y resuelven problemas creando algo desde la nada, lo cual es una experiencia satisfactoria y única.

Cualquiera puede aprender a programar con dedicación y esfuerzo, y no necesariamente requiere de un alto cociente intelectual.

Nate Academy ofrece cursos en línea para aprender a programar desde cero con un enfoque en diferentes tecnologías.

Transcripts

play00:00

El desarrollo de software,

play00:01

o programación,

play00:02

es uno de los trabajos que más en auge se encuentra.

play00:04

Con una previsión de crecimiento aún mayor en los próximos años.

play00:07

Según el departamento de empleo de los Estados Unidos,

play00:09

en 2016 existían 1.256.200 puestos de trabajo para el puesto de desarrollador de software,

play00:16

con un sueldo medio de 103.560 dólares anuales.

play00:20

Esto es más el doble del sueldo medio de todos los empleos en Estados Unidos.

play00:23

Y no estamos contando el resto de puestos relacionados con la programación.

play00:26

Lo cierto es que en el mundo en que vivimos el software es algo que hace parte de nuestras vidas,

play00:30

a un nivel muy profundo.

play00:32

Prácticamente cualquier ámbito de nuestra sociedad está controlado por software.

play00:35

Empezando desde tu despertador,

play00:37

tu microondas,

play00:38

tu cafetera nespresso.

play00:39

La máquina que valida tu ticket del metro,

play00:40

o toda la cadena de proceso de ese bocadillo que te comes a media mañana.

play00:44

Bueno ni hablar de tu mejor amigo.

play00:45

Tu smartphone.

play00:46

Que es una obra maestra de ingeniería,

play00:47

y está compuesto por millones de líneas de código de programación.

play00:51

Incluso en coches,

play00:52

autobuses,

play00:52

trenes,

play00:53

metro,

play00:53

todos los transportes están controlados por software.

play00:55

Hoy en día los coches modernos tienen cientos de millones de líneas de código

play00:59

creadas por un equipo de programadores.

play01:00

Se puede decir que todas las actividades humanas han sido profundamente afectadas por la era informática.

play01:06

Pero en todo esto hay una parte invisible.

play01:09

Antiguamente los dispositivos electrónicos eran analógicos.

play01:12

O sea, se moldeaba el comportamiento del aparato,

play01:14

como por ejemplo una radio analógica,

play01:16

o un televisor analógico.

play01:17

Poniendo en un orden concreto ciertos componentes de un circuito.

play01:20

El funcionamiento de este dispositivo estaba definido por el circuito en sí.

play01:24

Hoy en día todo es digital.

play01:25

Esto quiere decir que los aparatos llevan dentro un microprocesador.

play01:29

O sea una pequeña calculadora que puede ser programada para hacer casi cualquier cosa.

play01:33

El programa es básicamente una serie de datos guardados en una memoria.

play01:36

Esos datos son instrucciones que le sirven al procesador para saber lo que tiene que hacer.

play01:40

O sea el circuito del dispositivo ya no es el que está diseñado para funcionar de una manera específica.

play01:45

Sino que posee un procesador genérico,

play01:47

que se puede usar en muchos dispositivos distintos,

play01:49

y cambiar su comportamiento gracias a estas instrucciones.

play01:52

Esa lista de instrucciones que cumple el microcontrolador se conocen como programa,

play01:56

o software,

play01:57

porque es la parte blanda, impalpable del aparato.

play02:00

Sin embargo, en los dispositivos electrónicos de nuestro día a día,

play02:02

no es nada raro ver un mix entre diseño de circuito analógico y procesadores digitales.

play02:06

El máximo exponente del paradigma digital,

play02:08

son los ordenadores personales o PC,

play02:11

que fueron creados exclusivamente para ejecutar programas.

play02:15

Todo aparato digital tiene un programa que puede ser más o menos complejo,

play02:18

para que todos estos aparatos tengan un programa evidentemente hacen falta muchísimos programadores.

play02:23

Por ese motivo es normal que cada vez que necesitemos más programadores en el mundo.

play02:26

Sin programadores el mundo no sería como es.

play02:29

La vida en el planeta Tierra sería totalmente distinta.

play02:32

Personalmente creo que todo el mundo debería aprender a programar por tres motivos:

play02:36

Primero, es la experiencia

play02:37

Una de esas cosas que todo el mundo debería dedicar un tiempo en su vida a aprender.

play02:40

Como la meditación,

play02:41

o tocar un instrumento,

play02:42

o aprender otro idioma.

play02:43

Abrirá tu mente y te hará ver las cosas de una forma distinta.

play02:46

El segundo motivo es para saber en qué consiste.

play02:49

Cómo se le da vida a las máquinas.

play02:51

Se trata de una de las actividades que rige el mundo moderno.

play02:54

La programación está en la base de la sociedad entera y todas sus actividades.

play02:57

Desde el gobierno hasta la educación,

play02:58

la medicina,

play02:59

la extracción de materia prima, y la exploración espacial.

play03:01

En esos ámbitos y muchísimos más es el software quien predomina.

play03:05

¿No crees que es importante entender por lo menos cómo se crea?

play03:08

Y por último, por las nuevas generaciones.

play03:10

Me parece muy importante concienciar a los niños de hoy y profesionales de mañana,

play03:14

de que la ingeniería de software es un trabajo más donde se les necesita,

play03:17

y que todo el mundo puede aspirar a tener.

play03:19

Muy bien.

play03:19

Pero.

play03:20

¿En qué consiste programar?

play03:21

Llevándolo a un plano muy simple,

play03:23

El programador es quién habla con las máquinas y les dicta cuál va a ser su comportamiento.

play03:27

En otras palabras, qué es lo que tienen que hacer para cumplir un objetivo concreto.

play03:31

Muy sencillo, ¿verdad?

play03:32

Una serie de pasos a seguir que le permitan conseguir un resultado.

play03:35

Pongamos un ejemplo real.

play03:37

Tenemos un robot y un laberinto.

play03:39

Nuestro objetivo es enseñar a este robot cómo salir del laberinto.

play03:42

Un ser humano dispone de capacidad para ver, calcular distancias y profundidad,

play03:46

crear un mapa mental y orientarse.

play03:48

Aprender.

play03:48

Y tal y cómo funciona nuestro cerebro no nos sería demasiado difícil salir del laberinto por nuestra cuenta.

play03:54

Un ordenador, sin embargo, no tiene ninguna capacidad más que la de hacer cálculos.

play03:58

Esta capacidad de cálculo le permite, en este caso,

play04:00

manejar algunos motores, hacer comprobaciones lógicas, y leer datos de los sensores.

play04:04

Sabiendo esto, digamos que nuestro robot admite algunas instrucciones.

play04:08

Algunas instrucciones que se le pueden dar a través de un programa.

play04:10

Estas son las siguientes:

play04:12

Dar un paso adelante.

play04:13

Girar a la derecha.

play04:15

Girar a la izquierda,

play04:16

y comprobar si tiene un obstáculo delante.

play04:18

Y ya está.

play04:19

Eso es todo lo que podemos hacer.

play04:20

Con estas acciones tenemos que darle unas directivas, o sea un programa,

play04:23

Que haga que nuestro robot salga del laberinto.

play04:26

Este es uno de los ejemplos más básicos a la hora de aprender a programar.

play04:28

Así que veamos cómo resolverlo.

play04:31

Primero que nada tenemos que pensar una estrategia para salir del laberinto.

play04:34

Bien, se me ocurre un método bastante efectivo.

play04:36

Si entramos en el laberinto y avanzamos manteniendo siempre la mano apoyada en uno de los muros,

play04:41

eventualmente conseguiremos salir.

play04:43

Vamos a elegir esta estrategia para nuestro robot.

play04:45

Ahora tenemos que enseñarle cómo hacerlo.

play04:47

Los pasos a seguir serían los siguientes:

play04:49

A medida que avanzamos tenemos que asegurarnos que hay un muro a la izquierda.

play04:53

Como el robot no tiene mano,

play04:54

tenemos que girar a la izquierda y mirar si hay un muro allí a cada paso que avanzamos.

play04:59

Si el muro sigue a nuestra izquierda, podemos avanzar hacia adelante.

play05:03

Si no hay muro, tenemos que avanzar hacia la izquierda.

play05:05

En caso que tengamos un muro a la izquierda pero no podamos avanzar hacia adelante,

play05:09

tendríamos que intentar ir a la derecha.

play05:13

Y si a la derecha tampoco se pudiese,

play05:16

tendríamos que continuar girando,

play05:18

para volver hacia atrás.

play05:19

Estos comandos se repetirán a cada paso que demos.

play05:22

El código para este programa sería:

play05:23

Mientras no hayas salido del laberinto, repite lo siguiente,

play05:26

Gira a la izquierda.

play05:27

Mientras tengas un muro delante, repite,

play05:30

gira a la derecha,

play05:31

y por último avanza un paso.

play05:33

Fíjate, estas reglas que hemos dado a nuestro robot usan únicamente las tres acciones disponibles.

play05:38

Dar un paso adelante, rotar y comprobar si tiene un muro delante.

play05:41

Nos las hemos arreglado, con estas tres acciones,

play05:43

para dar unos pasos que nos aseguran que nuestro robot siempre siga la pared de la izquierda,

play05:48

y que eventualmente salga con éxito del laberinto.

play05:50

Hay muchas otras formas de salir del laberinto, desde luego.

play05:52

Podemos idear y pensar muchos algoritmos distintos para solucionar un problema.

play05:56

Por ejemplo, en este caso nos aseguramos de que el robot, tarde o temprano, saldrá de ahí.

play06:01

Los programas que tenemos hoy en día son realmente complejos.

play06:04

Como por ejemplo:

play06:04

Facebook.

play06:05

El GTA V.

play06:06

La aplicación de Instagram.

play06:08

La red de satélites de GPS.

play06:10

Google Maps.

play06:11

O los coches inteligentes capaces de conducir solos.

play06:13

Programar es resolver puzzles.

play06:15

Tengo que conseguir que este ordenador haga esta tarea.

play06:17

Esa es la teoría básica.

play06:19

Pero la programación se puede volver extremadamente compleja y laboriosa.

play06:22

Cuando tenemos un pequeño programa como el de nuestro robot que tiene que salir de un laberinto,

play06:26

todo parece fácil.

play06:27

Pero los programas pueden llegar a tener billones de líneas de código.

play06:31

Esto es un problema, realmente.

play06:33

No para la máquina, sino para el humano.

play06:35

Porque dentro de lo maravilloso que es nuestro cerebro,

play06:37

tenemos una capacidad limitada para analizar y recordar.

play06:40

Cuando el código se vuelve muy complejo,

play06:42

es muy fácil llegar a situaciones en las cuales cuesta muchísimo seguir lo que el programa está haciendo.

play06:47

Encontrar un fallo o un error humano,

play06:49

escondido dentro de este gran conjunto de instrucciones,

play06:51

puede ser muy, muy complicado.

play06:53

Puede llevar incluso días.

play06:55

Antiguamente, la programación, en sus inicios,

play06:57

era una tarea bastante artesanal que cualquiera podía hacer de forma creativa a su manera,

play07:01

sin tener en cuenta demasiadas reglas.

play07:03

Porque los programas eran pequeñitos.

play07:04

Pero a día de hoy, es una industria muy compleja.

play07:07

Imagínate por ejemplo un equipo de 10 personas trabajando,

play07:10

creando código durante tres años en el mismo proyecto cada día.

play07:13

Imagínate qué monstruo puede salir de ahí si no existe una organización súper estricta,

play07:17

esa es la complejidad real en el mundo de la programación.

play07:19

Nuestro limitado cerebro.

play07:21

Pero existen muchas estrategias y formas de crear programas de calidad.

play07:24

Para entenderlo mejor, podríamos compararlo con la arquitectura.

play07:27

En la antigüedad, los homínidos creaban casas de cualquier manera.

play07:30

Pero cuando se crearon las ciudades hicieron falta planos,

play07:33

arquitectos,

play07:33

una red eléctrica,

play07:34

red sanitaria,

play07:35

tuberías de agua,

play07:36

infraestructura,

play07:37

calles,

play07:37

autopistas,

play07:38

y una serie de sistemas para que sea posible vivir allí.

play07:41

Siguiendo la alegoría,

play07:42

ahora mismo en el mundo del software tenemos metrópolis de dimensiones desorbitadas.

play07:46

Lo que quiero decir con esto es que un lado que no vemos cuando hacemos, por ejemplo,

play07:50

un curso de programación básica,

play07:51

o estamos estudiando, pero que sin embargo es muy interesante,

play07:54

es el tema de la complejidad.

play07:55

Es uno de los mayores problemas en la industria.

play07:57

Y solucionar este problema también es un gran puzzle.

play08:00

Si tenemos que crear un código para que otra persona lo entienda lo más rápido posible,

play08:03

y no se pierda,

play08:04

tenemos que programar de una forma concreta para facilitar las cosas.

play08:07

Por no hablar de que el programa sea relativamente fácil de modificar en cuanto a comportamiento,

play08:11

sin hacer cientos de cambios por todo el código.

play08:14

Hay que programar teniendo ese, y muchos otros puntos en mente,

play08:17

pero lamentablemente no existe una única manera de abordar un gran proyecto,

play08:22

y a veces la solución puede ser increíblemente compleja.

play08:25

Esta rama es lo que se conoce como arquitectura de software.

play08:28

Con el paso de los años, el software se ha vuelto cada vez más complejo.

play08:31

Han nacido muchas reglas,

play08:33

lenguajes,

play08:33

filosofías,

play08:34

patrones de diseño,

play08:35

paradigmas de programación,

play08:36

metodologías,

play08:37

y muchas otras cosas para intentar hacer la vida de los seres humanos lo más sencilla posible.

play08:41

Sin embargo, también tienes que saber que la programación existe en tantos, tantos ámbitos,

play08:45

que no todos los programadores hacen el mismo trabajo,

play08:48

ni de la misma manera.

play08:49

Por ejemplo,

play08:50

los científicos usan la programación para crear pequeños programas,

play08:53

que les ayudan a hacer cálculos complejos,

play08:55

que sólo un un ordenador podría hacer.

play08:57

Estos programas son cortos, fáciles de leer, y no tienen grandes entidades abstractas.

play09:01

Son más bien una serie de pasos a seguir.

play09:03

Por eso no es tan importante tener un gran dominio de patrones de programación,

play09:06

o algoritmos computacionales,

play09:08

en el caso de un científico.

play09:10

Los programadores web, sin embargo,

play09:11

usan la programación para validar datos de usuario en un formulario,

play09:14

animar elementos en la página,

play09:16

mandar datos al servidor,

play09:17

y guardar información, entre otros.

play09:19

Pero un programador de un motor gráfico de videojuegos, sin embargo,

play09:21

tiene que escribir código que interactúa directamente con los drivers de la tarjeta gráfica.

play09:25

Entendiendo cómo funciona el dibujado,

play09:27

optimizando al máximo las instrucciones,

play09:29

implementando la física de los elementos dentro de un mundo virtual.

play09:32

El programador de los drivers de la tarjeta gráfica, a su vez,

play09:34

tiene que entender cómo funciona la tarjeta, para poder crear,

play09:37

un conjunto de instrucciones que permita a otros programadores hablar con la gráfica.

play09:41

El programador que trabaja en YouTube, en el apartado de "streaming", por ejemplo,

play09:44

tiene que entender cómo funcionan los protocolos de red,

play09:46

los códecs,

play09:47

la compresión de vídeo,

play09:48

la renderización del vídeo en el navegador,

play09:50

y muchos otros detalles.

play09:52

Además, un trabajador que trabaja en una plataforma tan compleja como Facebook,

play09:56

va a estar especializado y enfocado únicamente a una de las partes del sistema.

play09:59

Por ejemplo,

play10:00

la búsqueda de amigos.

play10:01

Esto puede parecer sencillo...

play10:03

Pero cuando usas el buscador de Facebook,

play10:05

lo que ocurre por detrás es increíblemente complejo...

play10:07

Y está pensado muy al detalle.

play10:09

Va mucho más allá de comparar lo que has escrito con todos los nombres de los usuarios

play10:13

en la base de datos de Facebook.

play10:14

Para empezar, fíjate.

play10:16

Cuando empiezas a escribir, Facebook ya está buscando.

play10:18

Pero, si Facebook lanzase una nueva búsqueda sobre todos sus datos de toda la base de datos,

play10:23

cada vez que presionas una tecla,

play10:24

sería una carga increíblemente pesada para el servidor.

play10:27

Un grupo de usuarios escribiendo un montón de letras aleatorias en el buscador

play10:30

podrían tirar los servidores de Facebook en segundos.

play10:33

Tampoco aparecen todas las coincidencias.

play10:35

Sólo las interesantes para ti.

play10:36

O sea la búsqueda está personalizada para tu perfil.

play10:39

Y no sólo busca personas que coinciden con tus términos,

play10:41

también busca páginas,

play10:42

negocios,

play10:43

aplicaciones, y "tags".

play10:44

Y es increíblemente rápido.

play10:46

Esa aparentemente pequeña herramienta de Facebook,

play10:49

el buscador,

play10:50

tiene una gran, gran ingeniería detrás.

play10:52

Un equipo de gente y muchas líneas de código.

play10:55

Además de una gran cantidad de darle al coco,

play10:57

para buscar la manera más óptima de darle el mejor resultado al usuario, en el mínimo tiempo posible.

play11:02

Esto se aleja mucho de lo que hace un científico,

play11:04

o un programador de un portal web más sencillo.

play11:06

O incluso de lo que hace el programador de los drivers de la tarjeta gráfica.

play11:09

Por eso mismo, el mundo de la programación es muy variado.

play11:12

¿Lo menos difícil a la hora de programar?

play11:13

El código.

play11:14

El código da miedo, porque a simple vista es difícil de entender.

play11:17

Pero es lo más sencillo de todo.

play11:19

Es a lo que menos tienes que temer.

play11:20

La parte más apasionante, en mi opinión, sin embargo,

play11:23

es, como decía antes, resolver puzzles.

play11:25

Algo tan sencillo como ordenar una tabla.

play11:27

Lo que ocurre cuando haces este clic.

play11:28

Es uno de los ejemplos de los casos de algoritmia más famosos en la programación.

play11:32

Ordenar una lista de objetos.

play11:33

Y tenemos una infinidad de maneras de abordar el problema.

play11:37

Por último, para darte una visión distinta,

play11:39

una metáfora que me gusta mucho es la del inventor.

play11:42

Volvamos al renacimiento italiano,

play11:43

la época de Leonardo Da Vinci,

play11:45

o el Antiguo Egipto, donde se construyeron Las Pirámides.

play11:48

En mi opinión la programación es muy similar.

play11:50

Tienes unos recursos,

play11:51

unos bloques básicos, que combinados de forma ingeniosa te llevan a máquinas de guerra,

play11:55

como catapultas, que son una combinación de poleas, palancas y contrapeso.

play11:58

Un sistema como el que permitió levantar las pesadas piedras en el Antiguo Egipto.

play12:03

Los cuales aún se desconocen, por cierto.

play12:05

Si bien tenemos teorías.

play12:06

La diferencia entre ellos y nosotros, sin embargo, es abismal.

play12:09

El ordenador te permite levantar y tirar muros con una sola tecla.

play12:12

Copiar, pegar, repetir, multiplicar millones de operaciones por segundo

play12:16

Es un mundo virtual, donde tú tienes el control de cada aspecto.

play12:19

Así nacen los videojuegos modernos.

play12:21

Y los más avanzados algoritmos de análisis climático.

play12:24

O estudio del genoma humano.

play12:26

Un ordenador es un aparato muerto, un montón de cables sin sentido alguno.

play12:30

Es el programador quien le da vida.

play12:31

Quien hace que esa máquina haga cosas extraordinarias.

play12:35

Es un mundo sin límites donde sólo hay espacio para la imaginación.

play12:38

Porque programar es quizás, como bien dijo Mark Zuckenberg,

play12:41

la única actividad en la cual puedes crear un mundo de cero sin levantarte de la silla.

play12:46

Los programadores piensan en abstracto.

play12:47

contemplando todos los posibles inconvenientes,

play12:50

y buscando la solución más óptima a un problema en concreto.

play12:53

No hay nada más satisfactorio que hacer un programa.

play12:55

Pensar una solución, escribirla, y ver que da resultados.

play12:57

Crear algo desde la nada capaz de resolver un problema.

play13:00

Además, programar normalmente no es una tarea repetitiva.

play13:02

ni algo para lo que no se necesite imaginación.

play13:05

Ni es el típico trabajo de oficina.

play13:07

Para mí es una experiencia de conexión entre tu mente y la máquina.

play13:10

Tu imaginación y pensamiento.

play13:12

Dicen que los programadores son personas extremadamente inteligentes.

play13:15

Pero simplemente son individuos con capacidad de análisis,

play13:18

y pensamiento abstracto,

play13:19

y esto es algo que cualquier persona está capacitada para hacer,

play13:22

y que se consigue con práctica.

play13:24

Cualquiera puede aprender a programar.

play13:25

Sólo hacen falta dedicación y esfuerzo.

play13:27

¿Y para qué mentir?

play13:28

Es cierto que hay personas a las cuales les cuesta muchísimo más que a otras,

play13:31

porque esta manera de pensar y abordar los problemas,

play13:35

se aleja mucho de la forma en la que están acostumbrados a pensar.

play13:37

No tiene nada que ver con el cociente intelectual, realmente.

play13:40

Pero esto es solo al inicio.

play13:41

Con ganas y dedicación, se puede conseguir.

play13:44

Aprovecho este vídeo para hablarte de mi academia de programación,

play13:46

Nate Academy.

play13:47

Se trata de una academia de vídeo cursos online para aprender a programar desde cero,

play13:51

donde tratamos distintas tecnologías...

play13:53

Ahora mismo, por ejemplo, estamos haciendo un curso de Angular 6,

play13:56

en el que puedes encontrar un nuevo vídeo de forma casi diaria.

play13:59

Espero que este vídeo te haya gustado,

play14:00

si te ha gustado déjame una manito para arriba,

play14:01

suscríbete a mi canal,

play14:02

y nos vemos en el próximo vídeo.

Rate This

5.0 / 5 (0 votes)

Related Tags
ProgramaciónSoftwareDesarrolladoresTecnologíaEducaciónInnovaciónCarreraSolución de problemasIngeniería de softwareAprender a programar
Do you need a summary in English?