מדוע תכנות הוא המקצוע ה”עתיק” ביותר בעולם, ומאיפה הגיעה המילה דיבוג?

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

מקור: Unsplash, עיבוד תמונה

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

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

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

אם תבדקו את המקלדות של מפתחי תוכנה, תוכלו לראות שהמקשים הדהויים ביותר הם CTRL+C ו-CTRL+V. כל היום רק “העתק-הדבק”. ללא ספק כתיבת תוכנה היא אחד מהמקצועות העתיקים בעולם, מלשון העתקה כמובן.

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

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

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

מקורות הדיבוג

אבל מן הראוי להתייחס גם לשאר שמונים האחוזים, בהם לפחות אנחנו לכאורה באמת עסוקים בלהתבונן, להבין, לחקור ובעיקר להתעצבן למה התוכנה עושה מה בראש שלה, ולא מה שבראש שלנו. התהליך הזה נקרא במילה אחת “הדיבוג”. טעות נפוצה היא לחשוב שהמילה “Debug” מקורה בחרק אמיתי (bug בלע”ז) שגרם לקצר באחד המחשבים הראשונים, אי שם בשנות החמישים, ומאז זהו השם של תהליך ניקוי התוכנה מתקלות. אבל כאמור, זוהי טעות. מקור המילה “דיבוג”, הוא למעשה עיוות קל של המילה העברית הקדומה “דיבוק”.

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

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

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

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

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

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

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

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

והמהנדס החכם אומר: אם הדיבוג הוא התהליך בו מוציאים באגים מהתוכנה, אז התכנות חייב להיות התהליך בו מכניסים אותם פנימה (א. דייקסטרה)

באנגלית זה נשמע יותר טוב:

If debugging is the process of removing bugs, then programming must be the process of putting them in

–Edsger W. Dijkstra

 

 


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

פורסם לראשונה בבלוג “פינת הקפה”

אודי הרשקוביץ

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

הגב

6 תגובות על "מדוע תכנות הוא המקצוע ה”עתיק” ביותר בעולם, ומאיפה הגיעה המילה דיבוג?"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 

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

סידור לפי:   חדש | ישן | הכי מדורגים
af db creid
Guest

אהבתי ????

af db creid
Guest

אוף, האימוג’ים לא עובדים פה

בוט
Guest

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

דג ברשת
Guest

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

הייקר
Guest

יש פה אנלוגיה יפה ליקום כולו: עבודה מקורית אנלוגית ליקום הנראה (3%), עבודה מועתקת אנלוגית לחומר האפל (17%), דיבוג אנלוגי לאנרגיה האפלה (80%)…

יוסי
Guest

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

wpDiscuz

תגיות לכתבה: