BaClick

איך בנינו מערכת שעות בית-ספרית באוטומציה מלאה - ומה למדנו על אופטימיזציה

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

עודכן:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

שאלות נפוצות

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

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

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

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

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

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


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

להמשך קריאה

עסקים

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

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

מאיר א. · 4 דק׳