מקרה בוחן

מודרניזציה של מערכת מחסן בת 12 שנה בלי לעצור את המשאיות

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

Have a nice dayHave a nice day11 דק' קריאה
מודרניזציה של מערכת מחסן בת 12 שנה בלי לעצור את המשאיות

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

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

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

המצב: מערכת שמוחזקת בזיכרון של אדם אחד

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

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

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

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

התסמינים שכולם הפסיקו לשים לב אליהם

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

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

מה שנמנענו ביודעין מלעשות

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

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

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

הגישה: לחנוק את המערכת הישנה, לא לפוצץ אותה

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

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

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

החלקים שהיו באמת קשים

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

הכלל הלא מתועד שקלקל פיצ'ר

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

לכבוש את לבבות הצוות

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

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

התוצאות, שנה לאחר מכן

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

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

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

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

אם אתם יושבים על מערכת כזו

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

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

יש לכם מערכת ישנה שאתם מפחדים לגעת בה?

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

ראו כיצד אנו ממדרנים מערכות מחסן

שאלות נפוצות

האם אתם באמת יכולים להחליף מערכת מחסן ללא זמן השבתה?
כן — זו כל הסיבה לגישת חלק-אחר-חלק במקום מעבר לילי. המערכת הישנה ממשיכה לרוץ כרשת ביטחון בעוד כל יכולת חדשה נבנית, נבדקת במקביל, ומקבלת אמון רק כשהיא תואמת את המציאות. בשום שלב עד ממש הסוף אין רגע שבו המחסן לא יכול לחזור לדרך הישנה. כשעושים זאת כך, הצוות בקושי שם לב למעבר.
למה לא פשוט לקנות מערכת ניהול מחסן מהמדף?
לפעמים זו התשובה הנכונה, ונאמר זאת אם כך. אבל פלטפורמות מהמדף מניחות שהתהליכים שלכם תואמים את ההנחות שלהן. עסק עם עשור של מעקפים ספציפיים ולא מתועדים מגלה לעיתים קרובות שהמוצר הסטנדרטי מתאים ב-80% ונאבק בו ב-20% הנותרים — בדיוק החלק שחשוב. שווה לקבל את ההחלטה במודע, לא כברירת מחדל.
כמה זמן לוקח פרויקט כזה?
עבור חברת הפצה של מחסן יחיד בגודל הזה, תכננו בחודשים ולא בשבועות — זה הספציפי רץ בערך שנה מקצה לקצה, במכוון ללא חיפזון. שיטת חלק-אחר-חלק ממירה מהירות בבטיחות: על הנייר היא איטית ממעבר חד-פעמי, אבל היא אינה נושאת את הסיכון של עסק קפוא שממתין להחלפה שמעולם לא ממש עולה לאוויר.
מהו הצעד הראשון החשוב ביותר?
תיעוד כן של מה שהמערכת הנוכחית באמת עושה — כולל כל גיליון אלקטרוני ומעקף שצמחו סביבה — ואז ניקוי הנתונים. שניהם מתרחשים לפני שנבנית תוכנה חדשה כלשהי. דילוג ישר לטכנולוגיה החדשה הוא הדרך שבה פרויקטי מודרניזציה יורשים את כל הבעיות הישנות ומואשמים בהן.
מה קורה לידע שחי בראשו של עובד מפתח אחד?
ללכוד אותו הוא אחת המטרות המרכזיות, לא תופעת לוואי. על ידי ליווי צמוד של אותו אדם וקידוד הכללים הלא מתועדים שלו אל המערכת החדשה, העסק מפסיק להיות תלוי בכל פרט בודד כדי לשמור על המחסן פועל. במקרה הזה עובד המפתח פרש במהלך הפרויקט, והתפעול נמשך ללא שיבוש — וזו בדיוק התוצאה שלשמה נעשתה המודרניזציה.
Have a nice day
Have a nice day
המערכת

‏Have a nice day הוא סטודיו תוכנה שעוזר לעסקים קטנים ובינוניים לעבור לדיגיטל — אוטומציה, בינה מלאכותית ותוכנה בהתאמה אישית שעובדת בשגרת היום-יום, לא רק על שקפים.

שירותים רלוונטיים