#84 אמור זה שם של באג

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

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

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

דברים שעובדים ודברים שאמורים לעבוד

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

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

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

צעד קטן לארכי-טקטורה, ריצת מרתון בפרוגרמה.

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

למה? ככה!

ונשאלת השאלה, למה? למה זה חייב להיות ככה? והתשובה מפתיעה היא: ככה! זה מה יש. זהו האבסורד המובנה של התוכנה. האבסורד התוכנתי המובנה מוגדר כך:

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

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

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

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

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

אקסידנט-ציאליזם להגנת הארכי-טקט

אבל מה איתנו? אלה בעלי הניסיון והוותק, שלכאורה דווקא כן אמורים לרדת לעומקה של מחסנית אדירת מימדים זו ולהבין בתורת הנסתר. ללמוד וללמד את סתרי-התוכנה?

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

והמהנדס החכם אומר: אם בארכי-טקטים נפלה שלהבת מה יאמרו ג'וניורי העיר?!


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

Image by Topi Pigula from Pixabay

4 תגובות בנושא “#84 אמור זה שם של באג

  1. Nice one, Udy! Problem will be solved very soon by AI when the uber architects PPT results in autogenerated code (a la text-Davinci-003)

    Liked by 1 person

להשאיר תגובה

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

הלוגו של WordPress.com

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

תמונת Twitter

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

תמונת Facebook

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

מתחבר ל-%s