לדלג לתוכן

מונחי סלנג שמתכנתים משתמשים בהם - ומה הם באמת אומרים

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

סלנג על קוד גרוע

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

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

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

קוד נקי מול קוד מלוכלך - clean code vs dirty code: קוד נקי הוא כזה שקריא, מסודר ומדבר בשם עצמו - משתנים עם שמות הגיוניים, פונקציות קצרות, לוגיקה ברורה. קוד מלוכלך עובד, אבל רק מי שכתב אותו (ולפעמים אפילו לא הוא) מבין למה. ההבדל מרגיש כשאתם חוזרים לקובץ אחרי חצי שנה ומנסים להיזכר מה בדיוק חשבתם לעצמכם.

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

סלנג על תהליך העבודה

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

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

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

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

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

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

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

סלנג על באגים ודיבוג

דיבוג ברבר דאק - rubber duck debugging: מסבירים את הבעיה בקול רם, שורה שורה, לברווז גומי (או לעמית, או לקיר) - ולפתע, באמצע ההסבר, מבינים לבד איפה הטעות. זה עובד כי לנסח את הבעיה במילים מאלץ אתכם לחשוב עליה מזווית אחרת.

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

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

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

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

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

כינויים ותופעות מוכרות

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

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

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

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

הצטרפו לקהילה בדיסקורד