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

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