Cómo realizar premortem efectivas
No preguntes al grupo qué puede salir mal
Un algoritmo es un proceso definido a seguir para obtener el resultado deseado. Gran parte de nuestra vida está decidida por algoritmos. Saber qué algoritmos seguir puede resultar en una toma de decisiones más eficiente y eficaz.
Recientemente he releído Algorithms to Live By, un libro de Brian Christian y Tom Griffiths sobre cómo los algoritmos pueden ayudarnos a ser más efectivos en nuestras vidas. Habiendo aprendido a programar el año pasado, saqué más provecho de esta vez.
Un algoritmo es un proceso, y puedes pensar en él como instrucciones a seguir para completar una tarea. Por ejemplo, aprender a sumar números es un algoritmo sencillo 1.
Instrucciones más complejas pueden calcular resultados para otros problemas de la vida. Los tipos de interés, el posicionamiento en búsquedas web o los feeds de redes sociales se basan en la salida de algoritmos. El libro repasa muchos de estos algoritmos y los relaciona con problemas que podrías enfrentar personalmente.
Es demasiado difícil explicar todos los algoritmos que mencionan 2, así que en su lugar haré pequeños resumen de algunos, y normalmente me centro en las conclusiones cualitativas, no cuantitativas.
Además, la mayoría de los algoritmos se basan en ciertas suposiciones; en lugar de especificar eso cada vez, tómalo como algo dado al leer. Añadiré algunas de las suposiciones en notas al pie para quienes estén interesados.
Algunos de los problemas tratados incluyen:
Veamos nuestro primer algoritmo, sobre cuándo deberías dejar de trabajar en un problema.
Si estás evaluando opciones (candidatos a empleo, ofertas de vivienda, plazas de aparcamiento, etc.), hay un equilibrio entre cuánto tiempo dedicas a elegir y la posibilidad de elegir la “mejor”. Esto se conoce como la secretary problem - Supongamos que contratas a una secretaria, ¿cuántas entrevistas deberías hacer para tener la mejor oportunidad de encontrar a la mejor?
En este caso, hay un porcentaje preciso que debes usar. Deberías esperar después de ver el 37% del grupo de candidatos y luego elegir al siguiente mejor candidato que veas 3. Por ejemplo, si tuviste 100 candidatos, espera después de haber visto los primeros 37 y luego elige al siguiente que sea mejor que todos los que has visto hasta ahora.
Ese es el punto matemáticamente óptimo con la mayor probabilidad de elegir a la mejor persona para el puesto. Si paras demasiado pronto, podrías perder a alguien que entreviste más tarde. Si paras demasiado tarde, pierdes tiempo 4.

Similar a la situación óptima de detención, hay un equilibrio entre recopilar información (explorar) y disfrutar (explotar). Supongamos que estás en un casino y quieres decidir qué máquinas jugar. Quieres maximizar tus ganancias, pero no sabes las probabilidades exactas de las máquinas (si las supieras, jugarías con la mejor).
En este caso, hay un número, conocido como el Gittins Index, que te da la máquina óptima para jugar 5. Si conoces el número de victorias, derrotas y cuánto valoras las ganancias futuras, puedes calcular valores precisos para cada elección. Algunas propiedades interesantes:
Algunas otras implicaciones relacionadas:
El libro daba algunos ejemplos de algoritmos de ordenación, que se usan comúnmente en programación. Por ejemplo, devolver resultados de búsqueda requiere ordenar los más relevantes para ti.
Dejaré para otro día una discusión más detallada sobre algoritmos de ordenación, ya que requieren comprensión time complexity. Aquí tienes algunas conclusiones cualitativas:
La idea de tener una caché es tener 1) una sección pequeña y rápida de memoria (almacenamiento), y 2) una sección grande y lenta de memoria. Luego alternaremos entre ambas según nuestra intención. Esto nos permite obtener tanto cierta velocidad como cierto tamaño para la actividad que queremos.
Por ejemplo, podrías tener tu ropa favorita en el armario y la que no uses en el desván. Tendrías acceso rápido a las prendas que más usaste, pero aún así tendrías espacio para ese feo jersey navideño si quisieras. Guardar caching suena complicado, pero te darás cuenta de que lo hacemos de forma natural la mayor parte de nuestra vida diaria.
¿Cómo decides qué objetos deben ponerse en la sección rápida y cuáles en la lenta? Podrías poner objetos aleatorios, el más nuevo, el más grande, etc.
En este caso, mantener los artículos más usados recientemente en la sección pequeña y rápida es la opción óptima, debido a algo conocido como temporal locality. Es más probable que necesites algo que hayas usado recientemente. Por ejemplo, Google Drive resalta tus archivos que usas con frecuencia para acceder rápidamente.

La mayoría tenemos que decidir cómo priorizar los asuntos de nuestra lista de tareas. Esto suele requerir hacer un equilibrio entre la capacidad de respuesta (la rapidez con la que respondes) y el rendimiento (cuánto puedes hacer).
Un punto clave sobre la planificación y la priorización es definir tu métrica objetivo, ya que eso determina qué algoritmo quieres usar 7. Maximizar la capacidad de respuesta tiene a costa de lo que puedes lograr:
Si quieres minimizar el máximo de retraso de todos tus proyectos 8, el Earliest Due Date El algoritmo te dice que empieces con el proyecto que vence cuanto antes.
Si quieres minimizar el tiempo total de finalización, el Shortest Processing Time El algoritmo te dice que primero hagas la tarea más rápida.
Si tus tareas no son iguales en importancia, entonces poner un peso en cada tarea y calcular la proporción de peso sobre el tiempo requerido te ayudará a decidir qué tarea realizar; elige el proyecto con mayor peso a lo largo del tiempo.
Prácticamente, esto significa que probablemente merezca la pena hablar con tu jefe sobre cómo piensa el equipo sobre este intercambio y qué método preferiría que adoptaras.
Hay otro concepto importante en la planificación, que es la idea de context switching - siempre que tengas que cambiar entre tareas. Cambiar de contexto es tiempo perdido porque no es trabajo real, sino que requiere tiempo y esfuerzo por tu parte.
Por ejemplo, si estabas escribiendo un correo y luego te interrumpió un mensaje de Slack, tardas en responder al mensaje y luego recordar qué querías hacer con el correo.
En el peor de los casos, cambiar de contexto se convierte en thrash, cuando no haces nada productivo porque estás demasiado ocupado solo cambiando. Las formas de evitar el thrash incluyen:
Explicar la regla de Bayes probablemente requeriría un artículo por sí solo, así que tomémoslo como una regla que te ayuda a predecir qué tan probable es que ocurra algo 9. Lo que los autores quieren destacar es que esto depende de la distribución de la que provengan tus eventos. Hay tres distribuciones principales a tener en cuenta:

La mayoría probablemente ya haya oído hablar de la teoría de juegos, que es una forma de pensar cuál es la estrategia óptima al jugar a un juego. Algunos puntos destacados:
Además de los algoritmos mencionados anteriormente, los autores también analizan:
En general, pensé que merecía la pena leer el libro para hacerme una visión general de las formas interesantes en que los algoritmos aparecen en la vida. Lo entendí mejor después Eso sí, estoy aprendiendo algo de informática, así que tenlo en cuenta. También me habría gustado que hubieran incluido ejemplos más prácticos 10, ya que intentar aplicar los hallazgos a la vida puede ser difícil cuando hay que partir de diferentes suposiciones.
Es fácil enseñarles a los niños, diciéndoles que memoricen sumas y cuándo llevar un número, pero sorprendentemente no es obvio al intentar implementarlo en un ordenador, mira full adder logic gate ↩
Podrías decir que para cuando te explique todo, más vale que lo haya hecho written the entire book ↩
The percentage is 1 divided by e, euler’s number. La probabilidad no cambia a medida que crece el grupo de solicitantes, pero sí cambia según la información que recibas ↩
El problema de la secretaria base asume que no puedes volver a un candidato al que rechazaste, pero hay variaciones que se parecen un poco más a la vida real. ↩
Este problema es intratable si las probabilidades de un beneficio en una máquina cambian con el tiempo; esencialmente significa que es irresoluble. Algunos problemas son intratables. En estos casos, relajar algunas restricciones y aceptar soluciones que sean “lo suficientemente cercanas” nos ayuda significativamente a estructurar el problema. ↩
O March Madness, para los americanos ↩
Solo el 9% de todos los problemas de programación pueden resolverse de forma eficiente. ↩
Es decir, toma todos los proyectos que llegan tarde y luego el máximo de ellos. Esa es la métrica que quieres minimizar. ↩
Véase here para un artículo que explica Bayes. Bayes no es intuitivo (al menos para mí), lo que también significa que es bueno saberlo ↩
Para ser justos, hay bastante información en las notas al pie que profundiza más ↩
What did I miss?
Los desacuerdos razonados, la evidencia adicional y las distintas formas de ver el problema son bienvenidos.
Cargando la discusión…
¿Prefieres una conversación privada? Escribir a Leon.