Soluciones creativas

Esto me plantearon en mi última entrevista de trabajo:

Entrevistador: Imaginate que tenés una grilla que lista todos los mp3 que tiene un usuario en su computadora. Esa grilla puede ordenar las canciones de manera ascendente o descendente simplemente presionando sobre la cabecera de la columna por la que el usuario quiera ordenarlas. El problema es que el usuario observa un pequeño, pero molesto ´delay’ en el refresco de la grilla. ¿Cómo lo resolverías?

Era evidente que me estaban preguntando por un caso real que ellos ya habían ‘resuelto’, simplemente ordenando la lista por todos los criterios de antemano. Ahí supe que la entrevista no iba a terminar bien, y así fue.

Yo: Si el delay en el refresco es de, digamos, medio segundo y la grilla tiene 10 columnas (nombre de la canción, autor, álbun, año, género, duración, pista, nombre de archivo, path y calificación), el tiempo necesario para ordenar toda la lista por los 10 criterios sería de aproximadamente 5 segundos!!!. Nadie puede esperar 5 segundos. El tiempo de procesamiento para ordenar la lista no puede hacerse desaparecer, solo se puede trasladar a otro momento. ¿Estará de acuerdo el cliente con cambiar delays de medio segundo por un solo pago al contado de 5 segundos al cargar la lista?

Entrevistador: Sí, tarda un poquito al cargar la lista y por eso es que a la ordenación la vamos a hacer en paralelo, un hilo por columna.

Yo: ¿Y qué sucede si el usuario quiere presiona sobre la cabecera de una columna por la que la lista no está ordenada todavía?

Entrevistador: No creo que un usuario pueda ser tan rápido! (risas). Además, de suceder eso, existen maneras de darle prioridad a los hilos para que ordenen primero las columnas más usadas.

Yo: ummm…. ¿y no te parece que le agrega una complejidad innecesaria?. ¿Qué pasa si la lista es muy grande y el usuario si es Tan Rápido? o ¿Cómo saber cuáles son las columnas preferidas de cada usuario?

Entrevistador: ehhh… bueno, las listas no van a ser grandes ade….

Yo: (interrumpo) ¿En cuánto estimaron el costo de esa ‘optimización’’? ¿Cuántos pesos, dólares, euros o, cual sea la moneda, le cuesta al cliente? ¿Está de acuerdo?

Entrevistador: No, no lo estimamos porque el cliente lo quiere si o si. Nosotros buscamos profesionales que puedan encontrar soluciones creativas a problemas como este pero veo que vos le encontrás problemas creativos a cada solución que te planteo. Vos, ¿qué harías?

Yo: por el momento no haría nada. Medio segundo es solo un parpadeo. Lo conversaría con el cliente nuevamente.

Entrevistador: bueno Lucas, nos vamos a estar contactando con vos. Gracias.

No me llamaron así que no sé cómo termina la historia aunque puedo imaginármela: varias líneas de código extras, un par de hilos, varios bugs con los que va a ser difícil lidiar, mayor complejidad y menor mantenibilidad, mayores costos, tiempos y un cliente posiblemente desconforme. Mucha suerte muchachos! 

Sin categoría

3 thoughts on “Soluciones creativas

  1. Caso clasico de aquel que se metió en un problema y nunca le dijo al cliente que toda presionada de tecla cuesta guita.

    Como vos bien decis, después tenés a los desarrolladores quedándose hasta altas horas de la noche tratando de ver como solucionan el problema, cargando horas por solo las laburadas, y cobrándole al cliente solo lo pactado inicialmente. Luego, el cliente quiere más, y como ya es una costumbre, se vuelve a lo gratis.

    Total, el látigo es más facil de usar que el cerebro.

Responder a anonymous Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *