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

סיינפלד מפורש
איכשהו יצא לי לראות קטע סטנדאפ קצר של ג'רי סיינפלד בו הוא מסביר שהמצאת הקסדה הינה הוכחה חותכת לכך שבני האדם אינם חכמים במיוחד. לבני האדם יש תחביב לעסוק בפעילויות ששוברות לנו את הראש. ואנחנו, באופן מודע, בחרנו שלא להימנע מפעולות אלה, אלא במקום זאת, להמציא התקן שיאפשר לנו להמשיך ולהנות מסגנון החיים שובר-הראשים שלנו – הקסדה.
וגם זה לא הצליח, כי לא מספיק אנשים חבשו קסדות. ולכן המצאנו את החוק שמחייב לחבוש קסדה. שזהו חוק מדהים בפני עצמו, שכן הרעיון שבסיס החוק הוא להגן על מוח בעל יכולת שיפוט כל כך עלובה, עד שהוא אפילו לא מנסה למנוע את שבירת הראש שבתוכו הוא נמצא.
הפרד ומשול
אבל אם אצל סיינפלד זה בדיחה, אצלנו בהיי-טק זו כבר טרגדיה של ממש. אנחנו כבר הבאנו את זה לדרגה של אומנות. במקום לפתור את הבעיה, אנחנו רק ממציאים עוד תהליכים ועוד שכבות ועוד ועוד ועוד.
והדבר נכון בענייני הפרוסס והפרודקטריון למיניהם, אבל הרבה יותר כואב ומרגיז בארכי-טקטורה ובתוכנה עצמה. רק בתוכנה על כל שטות ממציאים מודול חדש, מופרד לגמרי משאר אחיו וקבציו. יש את עקרון האחריות היחידה (SRP בלע"ז), שלא ברור לי איך הגעתי עד הלום בלי להכיר אותו, ועוד כל מיני שיטות ועקרונות וחוקים, שלכאורה הומצאו על מנת לעשות סדר ולמנוע תקלות, אבל בפועל כל כך מסבכות ומנפחות ומגדילות את הקוד, עד שכבר אף אחד לא מסוגל לעשות שום דבר. מה שנקרא: באנו לפשט ויצאנו מסבכים.
מופשט זה לא פשוט, זה שטות
המילה האהובה עלי בתחום היא ה"אבסטרקציה". איך שאני שומע איזו מהנדסת חכמה אומרת שהיא מוסיפה כאן שכבה אבסטרקטית בשביל שהמודול שלה לא יהיה מודע למה שרץ בחוץ אני חוטף אקספשן ומפסיק להתקמפל (על לרוץ אני אפילו לא חושב).
מה זה כל שכבות הבידוד האלה? למה היא חושבת שהיא לא צריכה לדעת מה מתרחש בשאר התוכנה? מה אנחנו לא עובדים על אותו פרוייקט? מה שנוצר בסוף מכל שכבות האבסטרקציה האלו הוא לא פחות מאשר יצירת אומנות אבסטרקטית, שכמו כל אומנות אבסטרקטית, נראית כמו משהו שבמקרה הטוב ילד קישקש, או במקרה הנפוץ, כמו מה שקורה אחרי שהחתול שפך את כל הצבעים.
אז דעו לכן. התרגום של אבסטרקטי בעברית הוא מופשט. והמשמעות של משהו מופשט זה משהו אבסטרקטי. כלומר אף אחד לא באמת יודע מה זה מופשט. אבל אני יכול להגיד לכן מה זה לא. מופשט זה לא פשוט. זה סתם שטות.
והרי לפניכן החידוש הלשוני שלי. מעתה שכבות האבסטרקציה המיותרות שמתווספות לתוכנה יקראו: פשטויות. ובלע"ז קומפליפקציה.
ואם מישהו מנסה להכריח אתכם להוסיף עוד שכבת אבסטרקציה, הרי הוא לא יותר מסתם פושטק.
קללת הגנריות
אך בזאת לא תם העניין. לו היה מדובר רק בפשטויות הייתי מחריש. אבל ישנן צרות רבות נוספות. תמיד קמים אלו שדואגים לעתיד החברה והתוכנה והפרוייקט, וטוענים שחייבים לכתוב קוד שיהיה אקסטנסבילי, ומודולרי וגנרי ועוד כל מיני מילים ארוכות, כי מי יודע מה יהיה מחר ובמה נצטרך לתמוך והכי טוב להיות מוכנים להכל.
אז כמו שכתבתי בפוסט הקודם (מומלץ מאוד, אלגוריתם בת היענה תופס גם לכאן), לא נביא אני, ולא בן נביא. אני לא יודע מה יהיה מחר. אבל אני בהחלט רואה מה הולך כאן היום, עכשיו, בהווה. מוסיפים ומנפחים. עוד שכבה ועוד מודול סופר מבודד. וכמובן לא נשכח את ה"מיקרו סרביסים" שעושים רק דבר אחד ולא יודעים שום דבר על מה שהולך בחוץ. ואז צריך להוסיף עוד מודול כדי ששני ה"מיקרו" האלה שלא יודעים מהחיים שלהם יוכלו להחליף מידע ביניהם. ואז עוד שכבת אבסטרקציה והקוד הולך ומתנפח. זוהי קללת הגנריות שנגזר עלינו ועל תוכנתנו להשתעבד לה בקוצר רוח ובעבודה קשה.
הנסיכה על העדשה
כמובן שהתוצאה היא שמרוב שכבות לא רואים את הקוד, וכבר לא זוכרים מה בכלל התוכנה אמורה לעשות ורק עסוקים בלעשות אינטגרציות ביו מודולים שבכלל לא צריך אותם.
וכך נוצר מודל שבע השכבות, או שבע-עשרה השכבות, או מאתיים השכבות וכבר אף אחד לא מצליח להשתלט על העסק.
ואז יש באג. קטן כזה שמסתתר אי שם למטה בתוכנה, הכי הכי עמוק שיש. וכל השכבות וכל האבסטרקציות לא עוזרות כהוא-זה לעצור את הבאג, וכל הלקוחות הנסיכותיים מתעצבנים. אבל בניגוד למעשייה "הנסיכה על העדשה", מי שהולך לא לישון בלילה זה אנחנו.
ולסיום, אני חושב שיש דמיון מפליא בין מתודולוגיות הפיתוח המוזרות אך אקסטנסביליות שלנו לסיינפלד. תראו איך הם הצליחו לייצר סדרה שלמה, מצחיקה ובעיקר עושה המון כסף משום דבר. סדרה שלמה על כלום. נו, ואנחנו לא ככה? מכל שטות קטנה, מהפיצ'ר הכי פשוט שבעולם מייצרים שכבות ומודולים ואבסטרקציות ומה לא. תוכנה שלמה על כלום.
למזלנו הדמיון לא מסתיים כאן. כי אולי אצלנו זה קצת פחות מצחיק, אבל כמו אצל סייינפלד, עושים המון כסף.
והמהנדס החכם אומר: ניתן לפתור את כל הבעיות בתוכנה על ידי הוספת שכבה נוספת של אבסטרקציה, פרט לבעיה של יותר מדי שכבות של אבסטרקציה. (דיוויד ווילר, המשפט היסודי של הנדסת תוכנה)
אם זה לא היה עצוב זה היה מצחיק 😉🤣😒
אהבתיאהבתי
נהדר
אהבתיLiked by 1 person