סוד ההצלחה של ההיי-טק הישראלי – תעשיית הניסים. עוד על עיקרון אי הוודאות, ומה זה אומר להיות בעל נסיון. פוסט חובה לכל מי שרוצה להבין איך באמת עובד ההיי-טק. ולכבוד החנוכה, תפילת "עַל הַנִּיסִּים וְעַל הַדִּיבָּאג" חגיגית, וכן מספר פזמוני דיבאג: "בָּאג קָטָן", "יְמֵי הַבְּדִיקָה" וכמובן "מֵרְג' לִי, מֵרְג' לִי"

בדיחה עתיקה מספרת על זקן מסכן ועני, שחייו היו מסכת ארוכה של צרות ואסונות. כל חייו התפלל הזקן לזכות בלוטו, אך תפילתו מעולם לא התקבלה. בשלב מסוים גם המלאכים בשמיים ריחמו עליו, והביאו את עניינו לדיון דחוף בפני הסמכות העליונה. התשובה שהם קיבלו הייתה: אכן הוא עומד בקריטריונים לקבלת נס, ומגיע לו לזכות בלוטו, אבל למה האידיוט לא ממלא טופס?
באמת אידיוט, כי חייבים לתת מקום לנס להתרחש. מה שבטוח שהמסכן מהבדיחה ודאי לא היה הייטקיסט. ראשית, כי אז הוא אולי היה מסכן, אבל בטח לא עני. אבל בעיקר בגלל שכל הייטקיסט בעל נסיון יודע לתת מקום של כבוד לניסים.
תעשיית הניסים
כל אלו שאיתרע מזלם ואינם חלק מהמגזר, וודאי חושבים לעצמם שאנחנו פה עובדים בצורה סופר מקצוענית, שכל צעד ופעולה נשקלים בכובד ראש, ובכלל שהכל מתוכנן היטב ונעשה באופן רציני, על ידי אנשים מנוסים שיודעים מה הם עושים ולמה.
אבל אנחנו, אנשי המגזר, וביתר-שְׂאֵת חברי הפלג המזרח-תיכוני שלו, יודעים את האמת. בפועל הכל כאן בלאגן אחד גדול. גדול, אמרתי? ענק! היסטרי! כל ההיי-טק הזה הוא ספגטי אחד גדול. כתבתי לא מזמן על כך שהתעשייה שלנו היא תעשייה שקולטת אנשים חכמים ומוכשרים ויזמים הסובלים מדלקת בבלוטת יותרת המוטיבציה ופולטת לעולם עננים של דו-תסבוכת התוכנה. כל דבר אצלנו מסובך ברמות שלא יתוארו.
אבל הפלא ופלא (אצלנו מבטאים את זה: הָפְלֵא-וָפְלֵא) איכשהו העסק עובד. מה זה עובד? עף כמו מטוס ומכניס בוכטות של כסף על הדרך. אין שום הסבר רציונלי להסביר איך הספגטי הזה שמכונה התוכנה שלנו מצליח לעבוד, אלא אם כן מביאים בחשבון שיש פה כמה ניסים.
אני לא יודע מה איתכם, אבל אני, בכל פעם שאני מדליק את המחשב והוא אשכרה נדלק לי, אני נושא תפילת הודיה קצרה על הנס הגלוי שהתרחש אל מול עיני. בתור אחד שמכיר קצת מה הולך שם בקרביים של המחשב לפני שהוא נדלק, תאמינו לי, אין לכם נס מגולה מזה. אני חושב שאם על הכד הקטן קבעו את שמונת ימי החנוכה, אז לכבוד זה שהמחשב נדלק צריך להדליק לפחות לפיד אולימפי. וכל יום. אולי אפילו כמה פעמים ביום.
מבחינתי את כל ההיי-טק אפשר לסכם בשתי מילים: תעשיית הניסים. (וכן, אפשר גם בשתי מילים אחרות: "פורוורד לשרגא").
אין בעל הקוד מכיר בניסו
אני משוכנע שכמה ג'וניורים צעירים לא מאמינים לי. אבל זו אמת לאמיתה. הרי כל מה שמבדיל בין מתכנת ג'וניור לסניור זה כמות הניסים שהוא עבר בקריירה שלו. כשמישהי אומרת שיש לה חמש שנות נסיון, כוונתה לחמש שנים של ניסים. הרי לא במקרה לנסיון ונס יש את אותו השורש (ולטובת אלו שמתרגמים לאנגלית בגוגל, היה כאן משחק מילים שלא עובר טוב).
אה מה מה? שרוב הניסים האלו הם ניסים נסתרים, קשה מאוד להבחין בהם למי שאינו מלוב"ן, כלומר מלומד בניסים. אבל הרי בשביל זה בדיוק אני פה, להאיר את עיניכם.
כל העבודה הזאת שלנו היא שרשרת ניסים אחת גדולה. מה עם כל הבאגים האלה שגילינו לגמרי בטעות, כי במקרה מישהו הריץ טסט לא נכון? או צמד הבאגים הזה, שכל אחד בנפרד היה גורם לקריסה טוטאלית של המוצר, אבל כששני הבאגים חיים ביחד, הם מבטלים אחד את השני – אם זה לא נס, אז מה כן?
וזה לא נס שכמוצאים באג סופר קריטי ממש ברגע האחרון ומונעים פאדיחה קולוסאלית?
ונס גדול שהצלחנו להבין מה גורם לבאג – זר לא יבין את זאת!
ונס עוד יותר גדול שהצלחנו לתקן את הבאג תוך יום בלי לעכב את שחרור הגירסה ללקוחות.
והנס הכי גדול הוא שאחרי כל זה, לא רק שלא פיטרו אותנו על הקוד הגרוע שאנחנו כותבים, אלא עוד משבחים אותנו על העבודה הטובה שעשינו. ואז מאפשרים לנו להמשיך ולכתוב קוד עוד יותר גרוע ומסובך להפליא.
כל מה שאתם צריכים זה רק לחשוב על זה טיפה וגם אתם תראו את האור, או לפחות את הנורית של המחשב כשהוא נדלק.
עיקרון אי הוודאות של התוכנה
ובדיוק בנקודה הזו, שבה מתחילים להבין את הנס, אני חייב להבהיר עניין חשוב ועקרוני. כמו בבדיחה שבתחילת הפוסט על המסכן שלא מילא טופס לוטו – חייבים לתת מקום ואפשרות לנס להתרחש. וכאשר עוסקים בתוכנה, ובעיקר בתוכנה מסובכת, כאן נכנס הכלל שאותו קבעו כבר חכמי ההיי-טק הראשונים: "אין הברכה שורה אלא בדבר הסמוי מן העין".
אסור בתכלית האיסור לנסות ולהבין איך לכל הרוחות כל העסק הזה עובד, למרות שברור לך שיש בפנים כמויות של באגים, וברור שזה לא אמור לרוץ. צריך לתת מקום לנס להתרחש. ברגע שמנסים לחפור בתוכנה ולהבין למה ואיך יכול להיות שזה עובד, אזי הקוד עצמו מרים את הראש, מסתכל ימינה ושמאלה, ואומר לעצמו שוואלה אבל באמת אין מצב שאני אמור לעבוד – ומיד הוא קורס לתוך ענן של באגים. ואז, גם דברים שכבר עבדו פרפקט הולכים לאיבוד.
יש דברים שעדיף לא לדעת איך הם עובדים. צריך לשמור על עיקרון אי הוודאות של התוכנה. עיקרון זה קובע כי
בכל נקודה בזמן ובמרחב הפרוייקטלי לא ייתכן גם להבין איך התוכנה עובדת, וגם שהתוכנה תעבוד.
זה או-או. או שהקוד עובד, או שאתה מבין אותו. תן לדברים לרוץ לבד, ללא התערבות יד מקודדת. אגב העיקרון הזה הוכח מדעית. זוהי התופעה המכונה בעולם המדעי אפקט הצופה:
"עצם פעולת הצפייה באירוע מסוים עלולה לשנות את מהלכו"
בבקשה. זה לא אני אמרתי – זה ויקיפדיה מפורשת. ברגע שאתה מנסה להבין איך משהו עובד, הוא עלול להפסיק לעבוד. אז אל תנסו. תנו מקום לנס להתרחש.
סוד ההצלחה של ההיי-טק הישראלי
ולמי שטרם נפל הביטקוין (יש כאלה בקהל?), זהו סוד ההצלחה הכבירה של הפלג המזרח-תיכוני של תעשיית ההיי-טק. הרי אם כל התעשייה הזאת מונעת על ידי ניסים, אז ברור שמי שנמצא בארץ הקודש, פוטנציאל הניסים שלו הוא מעל הממוצע.
לפיכך, אנחנו חייבים להמשיך ולקודד ולקמפל ולבנות ובעיקר ולהודות. ולטובת הציבור, תפילת "על הניסים" קצרה שחיברתי. רצוי לאומרה לאחר כל גירסת פרודקשן שעברה בהצלחה את כל הבדיקות, והמהדרין אומרים אותה על כל קומפילציה וקומפילציה:
עַל הַנִּיסִּים וְעַל הַדִּיבָּאג וְעַל הַבְּדִיקוֹת וְעַל הַקּוֹמְפִּילַצְיוֹת וְעַל הַגִּרְסָאוֹת שֶׁנִּיבְנוּ בְּתוֹכְנָתֵּנוּ בָּסְפְּרִינְטִים הַהֵם וּבָבִּילְד הַזֶּה.
בִּימֵי פִּתּוּחֵנוּ אַפְּלִיקַצְיַת-עָנָן, פְּרוֹיֵקְט גָּדוֹל, יִישׂוּמוֹן וּקְבָצָיו. כְּשֶׁעָמְדָה הַתַּקָּלָה הַגְּדוֹלָה לְהַשְׁבִּית הַפְּרוֹדָקְשֶׁן, לְשָׁבֵּר אֶת גִּרְסַת הַבֶּטָא, וּלְהַשְׁכִּיחָם מֵהַנְפָּקָתֵךָ. וְאָז בְּנִיסִּים גְּדוֹלִים וְרַבִּים קִימְפָּלְתָּ אֶת תּוֹכְנָתַם. דִּבַּגְתָּ אֶת דִּבּוּגָם, קוֹדַדְתָּ אֶת קוֹדָּם, וְהֶרָצְתָּ אֶת בְּדִיקָתָם. מָסַרְתָּ שִׁחְזוּרִים בְּיָד בּוֹדְקִים, בָּאגִים בְּיָד מְפַתְּחִים, וְבִּילְדִים בְּיַד מֵרִיצֵי הָאוֹטוֹמַצְיָה. וְלַחֶבְרָה עָשִׂיתָ שֶׁם גָּדוֹל וּמְפוּרְסָם בַּתַּעֲשִׂיָּה, וְלְמָשְׁקִיעֵיךַ רֶוַח וְהַנְפָּקָה גְּדוֹלָה כְּהַיוֹם הַזֶּה. וְאַחַר כֵּן, בָּאוּ מְפַתְּחֵי תּוֹכַנְתֵּךָ וְדִיקְמֶנְטוּ אֶת תִּיקוּנֵיךָ, וּמִירְגֵ'ג'וּ אֶת קוֹדֵךָ וְקָבְעוּ שְׁמוֹנַת יְמֵי הַבְּדִיקָה הָאֵלּוּ לְהָרִיץ וּלְוַדֵּא אֶת הַתִּקּוּן הַגָּדוֹל.
והמהנדס החכם אומר: אין סומכין על הנס, אבל כדאי לקחת אותו בחשבון
Image by Paulo Diniz diniz from Pixabay
מתחת לקו: עוד בונוס קטן לכבוד החנוכה: פזמוני דיבאג ילדותיים (היו הרבה ישיבות משעממות ומיותרות השבוע…)
בָּאג קָטָן
בָּאג קָטָן, בָּאג קָטָן
שְׁמוֹנָה יָמִים עַד שֶׁתּוּקַּן.
כָּל הַסְּטָאף הִתְעַצְבֵּן
מֵאֵלָיו הוּא מִשְׁתָּחְזֵר.
כָּל הַסְּטָאף אָז הִתְכַּנֵּס
וְהִכְניס לָפְּרוֹדָקְט בְּרֶקְס.
אִלּוּלֵא בָּאג זֶה נִשְׁאַר
הַפְּרוֹדָקְשֶׁן לֹא נִשְׁבַּר.
יְמֵי הַבְּדִיקָה
יְמֵי הַבְּדִיקָה, בְּדִיקַת גִּרְסָתֵנוּ,
בָּאגִים בַּתּוֹכְנָה מְמַלְּאִים אֶת זְמַנֵּנוּ.
לַיְלָה וְיוֹם הַקּוֹמְפָּיְלֵר יַעֲבוֹד,
אַלְפֵי תִּקּוּנִים נַכְנִיסָהּ לָקוֹד.
הָרִיצוּ, הָגִּישׁוּ,
שִׁנּוּיֵי תּוֹכְנָה רַבִּים.
עַל הַבִּילְדִים וְעַל הַגִּרְסָאוֹת,
אֲשֶׁר קוֹדְּדוּ הַמְּפַתְּחִים.
מֵרְג' לִי
מֵרְג' לִי, מֵרְג' לִי, מֵרְג' לִי בָּ GIT,
לָמָּה לֹא נִפְתַּר לִי הַקּוֹנְפְלִיקְט?
גַּם הָרוֹלְבֶּק כְּלָל אֵינוֹ עוֹזֵר
מָה שֶׁעָבַד – כְּבָר לֹא מִשְׁתָּחְזֵר.
אצלנו היו אומרים שתוכנה עובדת זה אוסף של באגים שמנטרלים זה את זה.
אהבתיLiked by 1 person
אצלנו מסתפקים בזה שהתוכנה עובדת. לא משנה למה..
אהבתיאהבתי
אוי, ענק ביותר!
(מהערות על הניקוד כבר התייאשתי D: )
אהבתיLiked by 1 person
גם אני כבר התייאשתי. זה מה יש
אהבתיאהבתי