#10 אינטגרציה – "הילכו שניים יחדיו?"

#010 integration - babylon

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

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

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

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

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

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

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

לסיום צריך להבין שישנם שני תנאים לסיום האינטגרציה:

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

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

2 תגובות בנושא “#10 אינטגרציה – "הילכו שניים יחדיו?"

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

    אהבתי

להשאיר תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת /  לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת /  לשנות )

מתחבר ל-%s