Conceptos
Números de semana, y por qué los del calendario son los equivocados
Cada institución numera sus semanas de clases, y casi ninguna las numera como el calendario, y en esa diferencia vive una cantidad sorprendente de confusión.
Dos números distintos con el mismo nombre
Pregúntele al calendario en qué semana estamos y obtendrá el número de semana ISO: la semana 1 es la que contiene el primer jueves de enero, y al comenzar un año académico del hemisferio norte se está hacia la semana 36 a 40.
Pregúntele lo mismo a una oficina de horarios y obtendrá un número completamente distinto. La semana 1 es la primera semana de clases del año, caiga donde caiga en el calendario, y todo se cuenta desde ahí. Es el número impreso en el horario, el número del formulario de reserva de aulas y el que usan dos colegas cuando quedan en verse en la semana 9.
Ambos nunca coinciden salvo que el año lectivo de una institución empiece en la primera semana de enero, es decir: nunca. Y como los dos se llaman el número de semana, un software que produce discretamente el equivocado produce algo que parece totalmente plausible.
Cómo se ve cuando sale mal
No parece un error. Parece una página con un número arriba, y el número se equivoca en una cantidad distinta en cada institución — porque cada una empieza su año en una fecha diferente.
Eso es lo que lo hace caro. Un fallo se reporta en una hora. Un encabezado que dice Semana 36 cuando todo el edificio la llama Semana 2 lo reporta semanas después alguien que supuso que había entendido mal el sistema y no que el sistema lo había entendido mal a él — y mientras tanto, la gente ha estado llegando a aulas por culpa de eso.
La regla que lo evita es corta: un número de semana se lee, nunca se calcula. La institución decide dónde está la semana 1; el trabajo del software es informar de lo que la institución decidió, no derivar un número propio a partir de una fecha.
La semana 1 no siempre es la primera semana que existe
Las instituciones necesitan habitualmente fechas anteriores a su año lectivo: una quincena de inducción, un período de recuperación, una escuela de verano que pertenece al año que termina. En lugar de renumerarlo todo — lo que cambiaría en silencio el significado de cada horario, cada reserva y cada mensaje que alguien haya enviado sobre la semana 9 —, lo sensato es extender el calendario hacia atrás, hacia el cero y los números negativos.
La primera vez resulta extraño y la segunda es exactamente correcto: la semana 1 sigue significando lo que siempre ha significado, y la quincena anterior es la semana −1 y la semana −2. Tenemos instituciones cuya tabla de semanas se extiende mucho hacia los negativos y mucho más allá del final del año lectivo, y todo lo intermedio corresponde a una fecha real.
Cualquier cosa que lea un horario mediante programación debe esperar eso. Un número de semana es un entero con signo, no un contador que empieza en uno.
Y algunas instituciones no usan números en absoluto
Oxford y Cambridge nombran sus semanas por período en lugar de contarlas a lo largo del año: una fecha cae en la cuarta semana de Michaelmas, y un número no significaría nada para nadie en el aula. Otras instituciones etiquetan una quincena como Repaso, Inducción o Período de evaluación y esperan que el horario lo diga.
Así que una semana de clases lleva dos cosas, no una: el número con el que el software la direcciona y el nombre propio de la institución para ella, que es lo que un lector realmente quiere ver arriba de la página. Donde existe un nombre debe imprimirse en lugar del número y completo — abreviar la convención de períodos de alguien para ahorrar ocho píxeles es el tipo de ayuda que nadie pidió.
Donde no existe un nombre, y para la mayoría de las instituciones no existe, el número es el nombre y eso está perfectamente bien.
Cuatro cosas que conviene comprobar en cualquier sistema de horarios
Ninguna es exótica. Todas están discretamente mal en alguna parte.
| Pregunta | Cómo es una buena respuesta |
|---|---|
| ¿Dónde empieza la semana 1? | Una fecha fijada por su institución, guardada una vez y usada en todas partes. No derivada del calendario ni configurable por pantalla. |
| ¿Puede el calendario ir antes de la semana 1? | Sí, hacia el cero y los números negativos, sin renumerar nada de lo que ya existe. |
| ¿Puede una semana llevar un nombre? | Sí, y el nombre se imprime en lugar del número, completo. |
| ¿De dónde saca el número una aplicación de estudiantes? | Del horario, en la misma respuesta que las lecciones. Un cliente que calcule el suyo se equivocará, y se equivocará de forma distinta en cada institución. |
Por qué esto es también una cuestión de integración
Un portal, una aplicación o una pantalla informativa que muestra el encabezado de una semana tiene que obtenerlo de algún lugar, y la única fuente que puede acertar es el propio horario. En Wise Timetable la respuesta del horario lleva los números y nombres de semana del rango que cubre, de modo que un cliente nunca tiene motivo para calcular uno — y GET /v2/weeks responde la misma pregunta por sí solo para una pantalla que necesita rotular todo un trimestre a la vez.
El manual de la API REST documenta ambos, incluido el caso negativo, y se publica completo y sin restricciones para que un desarrollador pueda comprobar la forma de la respuesta antes de que nadie firme nada.
¿Quiere verlo funcionando?
Reserve una presentación en línea de 45 minutos y la recorreremos con el propio problema de programación de su institución.