הנדסה לאחור של מערכת קיימת
המערכת עובדת, אין תיעוד, ומי שכתב אותה איננו. סדר העבודה שמחזיר שליטה, מה אסור לעשות ראשון, ושלושה מדדים שאומרים אם הצלחתם.
בקצרה
לא מתחילים מקריאת הקוד. מתחילים מרשת ביטחון: יכולת להריץ את המערכת בסביבה נפרדת על העתק נתונים ולהשוות פלט לפלט הייצור. אחר כך ממפים מהחוץ פנימה, כלומר כל מה שנכנס וכל מה שיוצא, וזו רשימה קצרה בהרבה מהקוד. הקושי האמיתי אינו טכני אלא הכרעה: אותם כללים שאינם כתובים בשום מקום, שלכל אחד מהם צריך להחליט אם הוא דרישה או תקלה שהעסק הסתגל אליה. וההכרעה הזו היא של העסק.
סדר העבודה, ולמה הסדר עצמו הוא העיקר
| שלב |
מה עושים |
למה זה לפני הבא |
| 1. רשת ביטחון |
סביבה נפרדת, העתק נתונים, והשוואת פלט מול הייצור על אותו קלט |
בלי זה כל שינוי הוא הימור, כי אין דרך לדעת שמשהו נשבר. זה גם השלב שמייצר ביטחון מהיר ביותר |
| 2. מיפוי מהחוץ |
רשימה של כל קלט וכל פלט: מסכים, קבצים, ממשקים, דוחות, הודעות, משימות מתוזמנות |
הרשימה הזו היא ההתנהגות שחייבת להישמר, והיא בסדר גודל קצרה מהקוד |
| 3. איתור הכללים |
לכל פלט, לאחור: מאיפה הגיע כל שדה ובאיזה תנאים הוא משתנה |
עכשיו קוראים קוד, אבל מחפשים דבר מסוים. קריאה חופשית של קוד היא עבודה בלי סוף |
| 4. הכרעה עסקית |
לכל כלל מפתיע שנמצא: דרישה, או תקלה שהסתגלנו אליה |
זו ההחלטה היחידה שאי אפשר לקבל בלי העסק, והיא גם זו שמגדירה את היקף העבודה |
| 5. החלפה חלקית |
מוציאים חלק אחד, מריצים במקביל עד שהפלט מתאים, ואז מכבים את הישן |
כך השינוי בטוח. שכתוב מלא דורש לדעת מראש את מה שבדיוק לא ידוע |
הסדר הזה הוא כל התוכן של העמוד. כמעט כל כשל שראיתי בהשתלטות על מערכת נבע מהיפוך של שני השלבים הראשונים: התחילו לקרוא קוד, אחרי שבועיים הצטברה הבנה חלקית, ואז נעשה שינוי ראשון בלי רשת, והמערכת נשברה במקום שאף אחד לא קישר לשינוי.
הכללים שאינם כתובים
זה החלק שבו הפרויקט באמת מורכב, והוא אינו טכני.
בכל מערכת שרצה שנים מצטברים כללים שאין להם מקור: חישוב שמעגל בצורה מסוימת, מקרה קצה שטופל פעם אחת לבקשת לקוח, שדה שנחשב ריק רק אם הוא ריק בדרך אחת ולא אחרת, והתנהגות שנוצרה מבאג ושהעסק כבר בנה עליה נהלים.
הקושי אינו למצוא אותם. מיפוי לאחור מהפלט מוצא אותם. הקושי הוא שלכל אחד צריך להכריע אם הוא דרישה או תקלה, וזו החלטה של העסק. שימור עיוור של הכול מנציח טעויות; תיקון עיוור של הכול שובר תהליכים שעובדים. שתי הגישות נראות זהירות ושתיהן שגויות.
איך לנהל את זה בפועל. רשימה אחת, גלויה, שבה כל כלל מפתיע נרשם בשורה עם שלוש עמודות: מה הוא עושה, מי נפגע אם ישתנה, והכרעה. הרשימה הזו היא התוצר האמיתי של העבודה, ולעתים היא שווה יותר מהקוד, כי היא התיעוד שלא היה קיים.
למה שכתוב מלא נכשל
ההיגיון של שכתוב מלא נשמע נכון: הקוד ישן, נבנה מחדש כמו שצריך. הכשל מובנה בהיגיון הזה.
שכתוב דורש לדעת מראש את כל הכללים, וזו בדיוק הידיעה שחסרה. לכן מה שקורה הוא שהגרסה החדשה מגיעה לשמונים אחוז מההתנהגות מהר, ואז נתקעת בעשרים האחוזים שמורכבים מכללים שלא היו ברשימה. בינתיים הישן ממשיך לרוץ, ועכשיו מתחזקים שתי מערכות, ולשתיהן מגיעות בקשות שינוי.
החלפה חלקית מפזרת את הסיכון: בכל פעם חלק אחד, עם הרצה מקבילה שמוכיחה התאמה לפני כיבוי. היא איטית יותר על הנייר וגם מסתיימת, וזה ההבדל שמשנה.
שלושה מדדים לשליטה
«אנחנו מבינים את המערכת» היא תחושה, ולכן היא לא מדד. אלה כן:
- אפשר להקים את המערכת מאפס בסביבה חדשה, לפי מסמך, בלי אדם שזוכר. אם זה דורש אדם מסוים, אין שליטה.
- אפשר לשחרר שינוי קטן ולדעת שלא נשבר כלום. זה בדיוק מה שרשת הביטחון מהשלב הראשון קונה.
- אין אדם שבלעדיו אי אפשר לשחרר גרסה. כל עוד יש אחד כזה, יש סיכון שאף אחד לא כתב אותו.
שלושת אלה גם מגדירים מתי להפסיק. היעד אינו קוד נקי אלא היכולת לשנות אותו בבטחה, ומשם ממשיכים בקצב של העסק. קשור: סקירת ארכיטקטורה, למה ארכיטקט.
מצב שכיח: מעבירים פיתוח לספק אחר
המקרה הזה הוא אותה עבודה בדיוק, עם לחץ זמן ועם צד שאין לו תמריץ לעזור. שלושה דברים צריך להשיג לפני שהקשר נגמר, ובסדר הזה:
- העתק מלא של כל מה שדרוש להקמה, ובדיקה שההקמה עובדת אצלכם ולא רק שהקבצים התקבלו. קובץ שהתקבל אינו מערכת שעלתה.
- הרשאות וחשבונות בשמכם. ענן, מאגר, חתימות, שירותים חיצוניים. זה החלק שתופס הכי הרבה זמן ושנוטים להשאיר לסוף.
- שעה אחת עם מי שכתב את זה, מוקלטת, ובה שאלה אחת: «מה שבור ואנחנו לא יודעים». התשובה לשאלה הזו שווה יותר מכל מסמך מסירה.
איך אני עובד על זה
עיסוק בתחום מאז 2004, עבודה על מערכות AI מאז 2023, פרויקטים ללקוחות בארבע עשרה מדינות. חלק לא קטן מהעבודה הזו היה בדיוק זה: מערכת שעובדת, אין תיעוד, והאדם שידע עזב.
מה סקירה כזו מייצרת: רשת ביטחון עובדת, רשימת הקלט והפלט כמסמך, רשימת הכללים הלא כתובים עם הכרעה לכל אחד, סדר החלפה חלקית לפי סיכון, ושלושת המדדים למעלה כמצב התחלה ומצב יעד. מה שהיא לא מייצרת: המלצה לשכתב לפני ששלושת השלבים הראשונים נעשו.
SLAtech LTD