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

היינו ילדים, וזה היה מזמן. היום יש לנו ילדים ואין לנו זמן. אם היו מספרים לי מראש כמה זה מסובך לגדל ילדים, יכול להיות שהייתי משנה את התוכניות. טוב, האמת שכן סיפרו לי ואפילו הזהירו אותי, אבל אני הייתי בטוח שלי זה לא יקרה, ואני אעשה את יותר טוב מכולם. אכן הייתי ילד. ונשארתי ילד. אבל עכשיו אני ילד עם ילדים.
הפתגם הידוע אומר: ילדים קטנים – בעיות קטנות, ילדים גדולים – בעיות גדולות. ואני יכול להוסיף (מניסיון): הרבה ילדים, הרבה בעיות. ואם נמשיך באינדוקציה, מהר מאוד נגלה שילד = בעיה.
"מה הוא רוצה מאיתנו?" אתם שואלים את עצמכם? שילך לפסיכולוג, או יותר טוב – לפסיכיאטר. אז רגע לפני האשפוז הכפוי במחלקה סגורה, רציתי לחלוק אתכם את התובנה המהדהדת האחרונה שלי, על הדמיון המדהים שבין פיתוח תוכנה לגידול ילדים.
ראשית, כמו הילדים גם הקוד תמיד מסתבך. זה חוק פיזיקלי בלתי נמנע. אי אפשר להילחם בזה, וגם לא כדאי. כי זה לא יעזור. כלל התיכנות ההישרדותי מספר 4 אומר: KISS. רבים וטובים ממני (האמת שאין הרבה טובים ממני, אבל אמרו לי שאני צריך להיות יותר צנוע בכתיבה שלי…) טעו בהבנת העיקרון. הם קראו את את העיקרון כ: "שמור את הקוד שלך פשוט, אידיוט שכמוך", כאשר הפירוש האמיתי הוא: "לשמור את הקוד פשוט? אידיוט שכמוך!".
בתור ילד, גדלתי על הספר "הנשיקה שהלכה לאיבוד". ואכן, ה"נשיקה" הזו בהחלט הולכת לאיבוד ככל שהזמן מתקדם. כמה שלא תנסו, הקוד ילך ויסתבך. חבל להילחם בזה. כמה שהיינו רוצים לחזור לקוד התמים והילדותי שלנו, זה כבר מזמן הלך לאיבוד.
זוכרות את הגיל הנחמד הזה שבין שלוש לחמש, פחות או יותר? איזו מן תקופה כיפית ותמימה. כבר אין חיתולים, אין לילות לבנים, והם מה זה חמודים. אבל צ'יק-צ'ק זה נגמר. זה מסתבך, זה נהיה הרבה יותר קשה. אז ככה זה גם עם פיתוח תוכנה.
קחו למשל את העובדה שהזכרתי לעיל, על כך שהקוד תמיד גדל ומסתבך. כל עוד הקוד קטן ניתן להתמודד עם זה איכשהו. הרי מי כמונו, אנשי פלג ההיי-טק המזרח-תיכוני, מומחים בשליפת פתרונות במהירות שיא. הקוד לא רוצה לעשות מה שאומרים לו? דוחפים לו איזה פאץ'-ממתק, העיקר שירוץ כבר כמו שצריך. התוכנה מתרסקת באמצע הדמו לעיני כולם ומשפריצה באגים לכל עבר? מיד מבטיחים כל מיני הבטחות חסרות כיסוי על איך שמחר אנחנו כבר נסדר את הכל, בתקווה שהגורמים הרלוונטים יקנו את זה, ועד שמחר יגיע, הם ישכחו מכל הסיפור. העיקר לשמור על שקט תעשייתי, ושהקוד לא יעשה בושות.
ובאופן לא מפתיע, את נזקי העצלנות, הפלמ"חניקיות וקיצורי הדרך ו"על הדרך", אנחנו משלמים לאחר זמן. פתאום ה"תיקונים" שדחפנו מתפוצצים לנו בפנים, בתזמון היסטורי, שלא לומר היסטרי. כמו שכבר אמרו חכמי ההיי-טק: שלח פיצ'פוצ'ך על פני המים, כי ברוב ימים הוא יתפוצץ (כבר הסברתי פעם שהמילה פאץ' נגזרת מהמילה פצצה).
אבל אז כבר יש לך עסק עם קוד מתבגר. השיטות והפיצ'פוצ'ים ותיקוני ה"בא נעשה משהו מהר עכשיו, העיקר שהוא יסכים ללכת" שעבדו פעם כבר לא עובדים יותר. והכי גרוע זה שהקוד מתחיל לפתח עצמאות ורצונות משלו. כבר אי אפשר לגרום לו לעשות מה שאתם רוצים. ועכשיו גם כל הטעויות וקיצורי הדרך שדחפנו במהלך הפרוייקט פתאום מרימים ראש וגובים את התשלום בריבית-דריבית. עכשיו לקוד יש בעיה.
וכאן מפתחים חסרי-מנוח רבים עושים את הטעות הגדולה. חברות וחברים למגזר, כמי שעבר כמה פרוייקטי תוכנה מתבגרים, אני מפציר בכם – שחררו. תנו לתוכנה להתמודד בעצמה. להתבגר ולהתגבר. אתם את שלכם עשיתם. עכשיו, זה מה יש ועם זה ננצח, או שלא. בכל מקרה לא יפטרו אתכם.
אבל כמו הורים חסרי ניסיון, אותם ג'וניורים בטוחים שהם יודעים הכי טוב מכולם. כל חברי להקת זאבי האימפלמנטציה נדבקו בתסמונת ה- NIH: “Not Invented Here” (בתרגום חופשי: לא אנחנו המצאנו). הם כמובן יודעים הכי טוב מכולם איך לחנך את הקוד. הם יכולים לבזבז ימים ושבועות בנסות להבין מה עובר על הקוד, ולמה הוא מתנהג כמו שהוא מתנהג. הם גם מעבירים את הקוד סדרות חינוך אינסופיות, ובודקים אותו מכל זווית אפשרית לוודא שהוא הולך בתלם כל תוכנה.
ואני אומר, חבר'ה – חבל על הזמן. כשיש לך עסק עם קוד מתבגר, החוכמה היא להעלים עין. לא כל באג קטן צריך לתקן. ולא צריך כל הזמן לבדוק ולוודא. תנו לקוד להתפתח בעצמו. אתם את הנזקים שלכם כבר עשיתם. עם הנזקים של הבאגים שדחפתם פנימה אנחנו עוד נתמודד במשך שנים ארוכות. יאללה, די.
אבל דבר אל העצים ואל האבנים, או בשפת ההיי-טק: עזוב אותך, תן לנו לכתוב הכל מחדש. re-design, re-factoring, רי-משהו. כאילו שזה יעזור. ממש רי-טואל שחוזר על עצמו על פעם מחדש. בדיוק על החבר'ה האלה, ג'וניורים תאבי-אימפלמנטציה, כתב אריק איינשטיין את שירו הידוע "אני ואתה נשכתב את התוכנה", הכולל שורה אחת שמסכמת את כל הפוסט הזה בצורה מופלאה: "כתבו את זה קודם, לפני, זה לא משנה".
וזה באמת לא משנה. כי גם אחרי שכותבים את הכל מחדש,הכל נשאר אותו דבר.
והמהנדס החכם אומר: אין דבר כזה קוד גרוע, יש קוד שנכתב על ידי מתכנת גרוע (יאנוש קורצ'אק, בהתאמה קלה לדור ההיי-טק)
מתחת לקו:
והנה מילות השיר במלואן
אני ואתה נשכתב את התוכנה
אני ואתה אז יבואו כבר כולם
כתבו את זה קודם, לפני
לא משנה – אני ואתה נשכתב את התוכנה
אני ואתה ננסה מהתחלה
יהיה לנו באג, אין דבר זה לא נורא
אמרו את זה קודם לפני
זה לא משנה – אני ואתה נשכתב את התוכנה
נפלא כרגיל
אהבתיLiked by 1 person
חן חן. אפילו שיצא קצת פחות משעשע
אהבתיאהבתי
גיל ההתבגרות זה הכל חוץ ממשעשע
אהבתיLiked by 1 person
עדיף לצחוק מאשר לבכות
אהבתיאהבתי
מעולה כרגיל!
אהבתיLiked by 1 person
חן חן. למרות שלהערכתי מי שאין לו ילדים פחות יבין
אהבתיאהבתי
מקסים
אהבתיLiked by 1 person
הפוסט אולי הכי רציני שלך.
כבודק תוכנה התובנה שלך קשה.
אהבתיLiked by 1 person
אל תיקח אותי יותר מדי ברצינות. הסך הכל חיובי…
אהבתיאהבתי
profoundly funny as always… self-sustaining code is the future.
אהבתיLiked by 1 person
Indeed. Waiting now for self-writable funny posts too…
אהבתיאהבתי
🙂
אהבתיאהבתי