Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=4d8d33e3-be2e-433c-8baa-d06d5a058810

Lo que los ordenadores te pueden enseñar sobre gestionar tu tiempo

Tanto los seres humanos como los computadores comparten el reto de cómo hacer lo máximo posible en un tiempo limitado. Más o menos durante los últimos 50 años, los ingenieros informáticos han aprendido y desarrollado un montón de buenas estrategias para la gestión del tiempo de manera eficiente. Por el camino también han cogido experiencia de cosas que han salido rematadamente mal.

¿Qué podemos aprender de todo esto? ¿Se podrían aplicar estas enseñanzas a nuestro día a día para ser más eficientes en nuestro trabajo y vivir mejor?

Vamos a verlo...

El Pathfinder que procrastinaba

En el verano de 1997, el vehículo espacial de la NASA Pathfinder aterrizó sobre la superficie del planeta Marte y empezó a retransmitir a la tierra unas imágenes increíbles e icónicas, hito del que por cierto se cumplieron 20 años el verano pasado. Sin embargo, tras varios días sin problemas, algo empezó a ir fatal.

Las retransmisiones se detuvieron. El Pathfinder estaba de hecho procrastinando: se mantenía a sí mismo totalmente ocupado pero sin hacer su cometido más importante, que era retransmitir imágenes del planeta rojo a la tierra.

¿Qué estaba pasando? Pues resultó ser que había un bug, un error, en su planificador de tareas. Todo sistema operativo dispone de un elemento que se denomina planificador, que le dice a la CPU cuánto tiempo tiene que dedicarle a cada tarea antes de pasar a otra, además de decirle a qué tarea debe pasar.

Cuando todo va bien, los ordenadores pasan de una forma tan fluida de una actividad a otra y van cumpliendo con sus responsabilidades de forma tan armoniosa que parece que están haciendo todo de forma simultánea. Pero todos sabemos qué pasa cuando las cosas empiezan a ir mal: el ordenador se cuelga, se congela la imagen y entra en parálisis operativa.

A los seres humanos el hecho de que un ordenador se quede colgado nos debería servir, como mínimo, de consuelo. Incluso los ordenadores se ven abrumados y sobrepasados de vez en cuando.

El algoritmo cuadrático

Quizás aprender cosas de la ingeniería informática que hay detrás de la programación de tareas en los sistemas operativos de los ordenadores nos puede arrojar algo de luz sobre nuestras propias luchas y frustraciones con la gestión del tiempo.

Una de las primeras revelaciones que podemos descubrir es que todo el tiempo que le dedicas a ponerle prioridades a tus tareas es tiempo que no dedicas a completarlas.

Por poner un ejemplo, digamos que cuando abres tu correo electrónico, lo primero que haces es ojear por encima todos los mensajes, buscando el más importante. Una vez que has gestionado ese correo, repites el proceso hasta completar el segundo, y así sucesivamente. El enfoque parece razonable, pero en realidad tenemos un problema.

Es lo que se conoce como un algoritmo o función de complejidad cuadrática, denominado O(n<sup>2</sup>) en notación Big-O. Si tu buzón de entrada del correo electrónico está el doble de lleno, ¡esas ojeadas buscando cada email llevarán el doble de tiempo! y además tendrás que hacer la búsqueda el doble veces...

Conclusión: el trabajo se multiplica por cuatro.

Linux y los cubos de prioridades

Allá por el año 2003 los programadores del sistema operativo Linux se toparon con un problema parecido. Linux priorizaba cada una de sus tareas en función de su importancia y las programaba en cola siguiendo ese orden. El problema es que en muchas ocasiones se pasaba más tiempo priorizando y ordenando las tareas que ejecutándolas.

La solución que, contra toda intuición y sentido común, se les ocurrió a los programadores de Linux fue la de sustituir este sistema exhaustivo de priorización de tareas por otro basado en un número limitado de "cubos" de prioridad (también denominados "niceness" o "simpatía" de procesos). Una vez cubierto el cupo de un cubo, las tareas entran en ejecución. El sistema no tarda tanto en pensar qué hacer a continuación, y se centraba más en ejecutar tareas, logrando avanzar. Se comprobó que este nuevo sistema era más eficiente que el anterior.

Así que siguiendo con el ejemplo con tu buzón de entrada y tus emails, darle muchas vueltas en pensar qué hay que hacer a continuación siguiendo un criterio de importancia puede conducir a la catástrofe. Abrir el correo electrónico una mañana y ver que está tres veces más lleno de lo normal te llevaría nueve veces más de tiempo en gestionarlo. ¡Casi es mejor empezar por orden cronológico o incluso aleatoriamente!

Resulta sorprendente, pero en ocasiones no invertir energías en hacer las cosas siguiendo un orden perfecto puede resultar clave a la hora de conseguir ejecutar las tareas a tiempo.

Interrupciones y cambios de contexto

Otra conclusión que podemos obtener de la programación de tareas tiene que ver con una de las características más prevalentes en la vida moderna: las interrupciones. Cuando un ordenador pasa de una tarea a otra, tiene que hacer lo que se denomina un cambio de contexto, dejando una marca en la tarea que estaba realizando, retirando los datos antiguos de su memoria e incorporando los datos de la tarea nueva.

Cada una de estas acciones tiene un coste. La enseñanza que extraemos de esto es que se produce una incompatibilidad irreconciliable entre la productividad y la capacidad de dar respuesta a nuevas peticiones.

Sacar mucho trabajo adelante implica minimizar los cambios de contexto.

Pero, al mismo tiempo, tener capacidad de respuesta supone poder reaccionar cada vez que se necesita algo.

Los dos principios, minimizar cambios de contexto y poder dar respuesta a nuevas tareas, están en constante tensión de equilibrio.

La capacidad de identificar esta tensión nos permite decidir dónde queremos romper ese equilibrio. La solución más obvia sería la de minimizar las interrupciones.

El coste del cambio de contexto en un ordenador
Imagen obtenida del estupendo artículo sobre el tema de Bryan Braun

Una solución menos evidente es el hecho de agruparlas. Si no hay ninguna notificación o correo electrónico que requiera una acción o una respuesta urgente en el plazo de, por ejemplo, una hora, pues esta es la frecuencia con la que deberías consultarlos. Nada más que eso.

En ingeniería informática, esta idea se conoce como la coalescencia de interrupciones. En vez de gestionar los asuntos a medida que van surgiendo -¿se ha movido el ratón?, ¿se ha pulsado una tecla?, ¿se ha descargado una parte más de ese archivo?-, el sistema lo que hace es agrupar esas interrupciones en función de cuánto tiempo pueden permitirse esperar.

En 2013, este concepto (interrupt coalescing) supuso una mejora sustancial en la vida de las baterías de los portátiles y móviles. Esto sucede porque diferir las interrupciones le permite al sistema comprobar todo a la vez, y luego retornar a un estado de ahorro de batería.

Al igual que ocurre con los ordenadores, las personas también experimentan este fenómeno. Quizás si somos capaces de adoptar un enfoque similar podamos centrarnos más y mejor en nosotros mismos, y entonces igual seremos capaces de reconquistar aquello que tan escaso resulta en nuestra era moderna: el descanso.

Este artículo es una transcripción adaptada del vídeo de Brian Christian para TED-Ed de enero de 2018. Puedes ver el vídeo completo a continuación:

Conclusiones

  • TODOS, de vez en cuando, nos vemos sobrepasados. Mientras no sea frecuente no es algo de lo que debamos preocuparnos.
  • Analiza tu comportamiento para determinar su complejidad y reducirla
  • A veces el orden lógico no es el más eficiente
  • Agrupa tareas por prioridades y ejecuta estos grupos por orden
  • Minimiza las interrupciones y los cambios de contexto
campusMVP campusMVP es la mejor forma de aprender a programar online y en español. En nuestros cursos solamente encontrarás contenidos propios de alta calidad (teoría+vídeos+prácticas) creados y tutelados por los principales expertos del sector. Nosotros vamos mucho más allá de una simple colección de vídeos colgados en Internet porque nuestro principal objetivo es que tú aprendas. Ver todos los posts de campusMVP
Archivado en: DevFacts

¿Te vas a perder los mejores trucos de programación?

Únete a miles de desarrolladores que ya reciben cada mes nuestro boletí­n por email. No te pierdas los mejores trucos, noticias y frikadas.

Enviamos poco, pero bueno. Palabra de desarrollador.

Suscríbete aquí­

Sí­guenos también en:

Telegram LinkedIn YouTube
La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.