סידור עבודה אוטומטי — מה קורה מאחורי הקלעים
"אוטומטי" נשמע כמו קסם — לוחצים כפתור ויש סידור. בפועל אין שם קסם, יש סדר עדיפויות ברור, ולדעת מה הוא עוזר להבין למה המנוע לפעמים "מסרב" לשבץ מישהו למרות שיש לו זמינות, ולמה זה בדיוק הדבר הנכון לעשות.
שלב 1: מה אסור לשבור, בלי יוצא מן הכלל
לפני שקולטים העדפה אחת, המנוע בודק מה חייב להתקיים: מנוחה מינימלית בין משמרות, לא לשבץ אותו אדם פעמיים באותו זמן, לא לחרוג ממספר הלילות הרצופים המותר. אלה לא "שיקולים" — הן מגבלות קשיחות, ושיבוץ שמפר אותן פשוט לא נכנס לרשימת האפשרויות, ללא קשר לכמה טוב הוא פותר בעיות אחרות.
שלב 2: איזון בין אנשים, על פני זמן
מתוך כל השיבוצים שעומדים בכללים הקשיחים, המנוע מעדיף את מי שקיבל פחות עד עכשיו — לא רק בתקופה הנוכחית, אלא כשמסתכלים אחורה. מי שסגר יותר שבתות בחודשים האחרונים "זכאי" לפחות בחודש הזה, וההפך. זו לא הגינות של רגע אחד; היא הגינות שנמדדת לאורך זמן ונגררת קדימה, כך שאף אחד לא נשאר "החייב הקבוע" של הצוות.
שלב 3: העדפות, כשיש ברירה אמיתית
רק אחרי ששני השלבים הקודמים צמצמו את האפשרויות, נכנסות ההעדפות שכל אחד סימן — מי ביקש משמרת מסוימת, ומי העדיף לא. כשיש כמה אנשים שעומדים באותה מידה בכללים ובאיזון, ההעדפה היא שמכריעה ביניהם.
מה קורה כשאי אפשר לרצות את כולם
לפעמים אין פתרון שמכבד את כל ההעדפות בלי לשבור מנוחה או לפגוע באיזון — משמרת תפוסה בשלוש בקשות "לא יכול", למשל. במצב כזה המנוע לא מתעלם מהבעיה ולא בוחר בשקט; הוא מסמן את השיבוץ ככזה שנאלץ לוותר על משהו, ומציין מה בדיוק ויתר עליו — כדי שמי שבונה את הסידור יידע איפה כדאי להתערב ידנית, במקום לגלות את זה מהצוות אחרי הפרסום.
אז למה זה לא רק "מיון לפי זמינות"
מיון פשוט היה משבץ הכי מהר את מי שזמין ראשון, וגומר עם צוות שבו אותם אנשים תמיד סוגרים ואותם אנשים תמיד פנויים. שלושת השלבים למעלה הם מה שהופך את זה מ"מילוי תאים" ל"חלוקה שהצוות בעצמו מרגיש כהוגנת" — וזו בדיוק הסיבה שהמנוע נבנה בסדר עדיפויות הזה ולא הפוך.