BaClick

מלוח מחיק למנוע אילוצים - איך בנינו מערכת שעות אוטומטית, ולמה התחום עדיין תקוע

מאיר א. · מורה, מפתח ומייסד BaClick · · 7 דק׳ קריאה

עודכן:

רכז מערכת שעות מחזיק בראש כ-400 אילוצים בו-זמנית ולא רואה איזה שניים מהם סותרים. זה סיפור על ההבדל בין בעיית סבלנות לבעיית סתירות - ועל הסיבה המבנית שבגללה בתי ספר עדיין בונים מערכות בטבלה ידנית.

לפני שבניתי תוכנה, הייתי מורה. ובאוגוסט, כמו כל בית ספר בישראל, ישבתי מול לוח מחיק וניסיתי לשבץ 60 מורים ל-24 כיתות בלי שאף שניים מהם יתנגשו.

לקח לי שלושה שבועות. ביום שהמערכת הייתה מוכנה, מורה אחת הודיעה שהיא לא יכולה ביום שלישי - ומתחיל סיבוב שני.

זה לא קרה כי לא הייתי מספיק טוב בזה. זה קרה כי בן אדם לא מסוגל להחזיק בראש 400 אילוצים בו-זמנית ולראות איזה שניים מהם סותרים. מחשב כן. וזה כל הסיפור.

כשהתחלתי לבנות את המנוע, הנחתי שהתחום כבר פתור - בתי ספר בונים מערכות שעות כבר עשרות שנים, אז בטח יש כלים מעולים. מה שמצאתי היה שונה, ובסוף הכתבה אסביר למה זה לא במקרה.

למה זו לא בעיה של סבלנות

זו הטעות שכולם עושים כשהם חושבים על מערכת שעות: מניחים שהקושי הוא בכמות העבודה. שאם רק תשקיעו עוד יום, עוד לוח, עוד צבע טוש - זה יסתדר.

זה לא נכון. הקושי האמיתי הוא קומבינטורי: כל שיבוץ אחד משפיע על כל שאר האפשרויות שנשארות פתוחות. כשמורה מלמדת שלוש כיתות, שלוש שכבות, ויש לה גם יום לימודים באוניברסיטה - כל החלטה לגביה סוגרת ופותחת עשרות אפשרויות אחרות בו-זמנית, בלי שרואים את זה על הלוח.

זו בדיוק הסיבה שבניית מערכת שעות ידנית תמיד מרגישה "כמעט גמורה" ואז נשברת בפרט קטן. האדם שבונה אותה לא רואה את הרשת המלאה של ההשלכות - הוא רואה שורה אחת בכל פעם.

שני סוגי כישלון, ורק אחד מהם באמת כישלון

בבנייה של המנוע גילינו הבחנה שהפתיעה אותנו: יש הבדל בין "אין פתרון עדיין" לבין "אין פתרון אפשרי".

ההבדל הזה הוא-הוא מה שהפך אותנו מ"תוכנה שמסדרת" ל"כלי שאפשר לסמוך עליו". מנוע שמחזיר "שגיאה" כשאין פתרון הוא לא שימושי במיוחד - הוא רק חוזר על מה שהרכז כבר ידע: שזה לא עובד. מנוע שמסביר אילו שני כללים ספציפיים סותרים, ומה אפשר לשנות כדי לפתור את זה, הוא כלי אחר לגמרי.

ההשוואה: לוח מחיק מול מנוע אילוצים

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

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

לכן זה לא "מנוע במקום רכז" אלא "מנוע מתחת לרכז": הוא לוקח את החלק שאין בו החלטה — הבדיקה — ומשאיר את החלק שיש בו. השורה האחרונה היא ההבדל האמיתי, והוא לא מהירות אלא מתי מתגלה הבעיה: בשיטה הידנית מגלים סתירה כשמורה לא מגיעה לכיתה.

אז למה התחום עדיין נראה כמו שנות ה-90

עכשיו אפשר לחזור לשאלה שפתחתי בה. הרבה מהכלים הנפוצים עדיין מבוססים על הזנת נתונים ידנית לתוך טבלה, בלי שכבת "פתרון אילוצים" אמיתית מתחתיה. זה לא כי אף אחד לא חשב על זה. זו תוצאה של איך שהתחום הזה בנוי, ויש לזה שלוש סיבות מבניות - אף אחת מהן היא לא "חוסר יכולת טכנית":

1. עלות טעות גבוהה מדי בזמן הלא נכון. מערכת שעות נבנית באוגוסט, ונכנסת לשימוש ב-1 בספטמבר. אם משהו נשבר, זה קורה ביום הראשון של השנה, מול מאות תלמידים ועשרות מורים. זה לא סביבה שמזמינה ניסויים - כל בית ספר בוחר יציבות מוכחת על פני חדשנות לא מוכחת, וזו בחירה הגיונית.

2. עלות המעבר גבוהה מהתועלת הנראית לעין. רכז מערכת שכבר יודע להפעיל כלי מסוים, גם אם הוא מסורבל, לא ירוויח הרבה מלמידה מחדש של כלי אחר - במיוחד אם הבעיה שהכלי הישן לא פותר לא ברורה עד שמנסים לפתור אותה אחרת.

3. מחזורי רכש ארוכים. מוסדות חינוך לא מחליפים מערכות תוכנה כל שנה. החלטה כזו נעשית לעיתים רחוקות, ולוקח זמן עד שהיא בכלל עולה לדיון.

זה לא אומר שהגישה הישנה גרועה - היא בדיוק מה שהתחום דרש כשהיא נבנתה. זה אומר שיש פער אמיתי בין מה שאפשרי היום טכנית, לבין מה שבפועל נמצא בשימוש - ושהפער הזה לא ייסגר מעצמו, כי אין לחץ שוק מספיק חזק לזה. מי שמציע כלי חדש בתחום הזה חייב לענות על הזהירות הזאת, ולא להתייחס אליה כאל התנגדות שצריך לעקוף.

מה זה לא פותר, ובכוונה

בנינו את המנוע כדי לפתור בעיית סתירות, לא כדי להחליף שיקול דעת פדגוגי. הוא לא יודע שכדאי לתת מתמטיקה בשעה ראשונה, ולא יודע שמורה מסוימת וכיתה מסוימת לא מסתדרים. זה נשאר אצל בן אדם, במכוון - כי זה בדיוק סוג הידע שלא ניתן לכתוב כאילוץ פורמלי.

מה שהמנוע כן עושה זה לשחרר את הרכז מהחלק שבאמת אין בו החלטה - רק בדיקה. וזה החלק שלקח שלושה שבועות.

הפתרון, בסופו של דבר, לא היה "לשכנע" בתי ספר לקחת סיכון. הוא היה לבנות כלי שמוריד את הסיכון עצמו: כזה שמסביר בעברית פשוטה למה סתירה קיימת, לפני שהיא הופכת לבעיה בשטח. זה לא מבטל את הזהירות שמוצדקת בתחום הזה - זה עונה עליה.

שאלות נפוצות

צריך להבין אלגוריתמים כדי להשתמש בזה?

לא. הקלט הוא האילוצים עצמם, בעברית פשוטה - מי מלמד מה, אילו כללים חייבים להתקיים. המנוע עושה את החיפוש הקומבינטורי מאחורי הקלעים. אם המערכת לא מסתדרת, מקבלים הסבר בעברית, לא הודעת שגיאה טכנית.

מה קורה אם באמת יש סתירה בין שני כללים שהזנתי?

המנוע לא מחזיר "שגיאה" סתמית. הוא מצביע על שני הכללים הספציפיים שמתנגשים, כדי שתדעו בדיוק מה לשנות - במקום לגלות את זה בטעות אחרי שהמערכת כבר תלויה בחדר מורים.

המערכת מתחברת למנב"ס או למערכות אחרות של משרד החינוך?

לא כרגע. אין ייבוא אוטומטי וסנכרון - מזינים או מייבאים קובץ. זו בניית המערכת השנתית, לא ניהול שוטף של נוכחות או מילוי מקום.

אם זו בעיה ידועה, למה אף אחד לא פתר אותה קודם?

יש כלים שבאמת פותרים אילוצים, אבל הם בדרך כלל יקרים ומכוונים למוסדות גדולים. הפער הוא בעיקר בבתי ספר בגודל בינוני-קטן, שלא תמיד יש להם תקציב או הצדקה לכלי ארגוני מלא - ושם גם ההשקעה בפתרון קטנה יותר, כי השוק פחות מרוכז.

זה אומר שהרכזים הקיימים לא עושים עבודה טובה?

ההפך הגמור. רכז מערכת שמצליח לבנות מערכת עובדת בכלים ידניים עושה עבודה קשה בהרבה ממה שמנוע אוטומטי צריך לעשות - כי הוא עושה בראש את מה שהמנוע עושה בזיכרון. הבעיה היא בכלים, לא באנשים שמפעילים אותם.


המנוע שמתואר כאן הוא מערכת בקליק. הוא עדיין לא פתוח לכולם — מי שרוצה לנסות אותו על מערכת אמיתית מוזמן להצטרף לתוכנית הבודקים.

להמשך קריאה