"איכות". אחלה מילה. גורמת לנו לתחושה טובה כזו, חמימה. כאילו שאנחנו עושים משהו כמו שצריך. רק דבר אחד קטן - יש משהו מאוד שבור בצורה בה אנחנו משתמשים במילה הזו. התחלתי לחשוב על העניין הזה כשדיברתי על החשיבות המוגזמת שניתנת ללקוח והזכרתי את ההגדרה של ג'רי ויינברג לאיכות - ערך עבור מישהו. ואז, היו כל מיני הסחות דעת שגזלו את תשומת ליבי (הסחת דעת אחת, חיובית במיוחד, הייתה כנס הבדיקות האירופאי) עד שמספיק דברים אחרים הזכירו לי שרציתי לכתוב עוד קצת על הנושא.
אז, למה אני מתכוון כשאני אומר שבור? כדי להסביר את זה אני רוצה לחזור רגע לתיכון, להגדרת הפונקציות הטריגונומטריות. נו, אתם יודעים - סינוס, קוסינוס, החברים האלה.
התחלנו את הדרך בהגדרה פשוטה של סינוס - היחס במשולש ישר-זווית שבין הצלע שמול הזווית לבין היתר, ובאופן דומה, הגדרת הקוסינוס הייתה היחס בין הצלע שליד הזווית ליתר. פשוט, אינטואיטיבי, ועם סיבה די ברורה - אנחנו רוצים לחשב את אורך הצלעות, או את ערכי הזוויות.
בהמשך, שאלנו את עצמנו (טוב, נו, המורה שאל) "ומה קורה אם יש לי זווית של תשעים מעלות או יותר?" התשובה הייתה קלה - ערכי הפונקציה אינם מוגדרים עבור זוויות כאלה, וזה חבל מאוד. מהר מאוד שרטט המורה על הלוח את מעגל היחידה והציע הצעה משונה "בואו נרחיב את הגדרת סינוס וקוסינוס באופן הבא: "עבור זווית אלפא, נגדיר רדיוס של מעגל היחידה שיוצר זווית זו יחד עם ציר הX+, סינוס הזווית יהיה ערך Y של נקודת חיתוך הרדיוס ומעגל היחידה, וקוסינוס יהיה ערך X של אותה נקודה". איזה כיף, עכשיו יש לנו הגדרה של סינוס וקוסינוס שעובדת לכל מספר, ואפשר גם להסיק כמה תכונות ממש נחמדות על שתי הפונקציות האלה. בקיצור - כיף חיים.
אבל רגע. היה דבר אחד קטן שעוד היינו צריכים לעשות: "עכשיו, בואו נראה שההגדרה החדשה שלנו לא סותרת את ההגדרה הקודמת שהייתה לנו". ההוכחה קלה למדי, והתלמיד החרוץ יוכל להשלים זאת בעצמו. וזו הנקודה שמחזירה אותי לאמירה המקורית שלי - משהו שבור בדרך בה אנחנו מגדירים "איכות" ובדרך בה אנחנו מתייחסים אליה. ההגדרה שלנו אינה עקבית עם הגדרת האיכות בכל תחום אחר שאני מצליח לחשוב עליו. יותר מזה, התכונות שמפגינות תוכנות "איכותיות" שונות באופן מהותי מאלו שמפגינים מוצרים איכותיים בתחומים אחרים.
דמיינו, למשל, ארון. ולא סתם ארון - ארון כבד מעץ אלון, מהוקצע ומעוטר ביד אומן, דלתות כפולות וציפוי לכה כהה. יש? מצויין. עכשיו דמיינו ארון נוסף, דומה בצורה ובמבנה, עשוי מחומר קל בהרבה ומצופה במשהו דמוי פלסטיק. נו, כזה שמוכרים באיקאה.
מבין שני הארונות האלה, איזה ארון איכותי יותר?
מעט מאוד אנשים (שאני מכיר) יטענו שהארון השני איכותי יותר - ועדיין, יותר אנשים יקנו ארון מעפן מאיקאה ולא את הארון היקר. למה? כי הוא זול יותר, ונגיש יותר, ולא נורא אם הילד יצייר עליו משהו. הארון מאיקאה אולי פחות איכותי, ואולי הוא יתפרק בתוך עשר שנים, אבל המחיר שלו נמוך מספיק כדי שזה יהיה לנו נחמד להחליף ארון פעם בכמה זמן, וממילא אנחנו עוברים דירה פעם בכמה שנים, אז הרבה יותר קל להשאיר אותו מאחור לדיירים הבאים. האיכות אינה זהה לשימושיות, ולמעשה, העלות הנוספת של איכות הופכת את המוצר לשימושי פחות. את אותה סתירה אפשר למצוא גם בתחומים אחרים, חומריים פחות. למשל, אם נשווה את סדרת ספרי הארי פוטר לאיליאדה ולאודיסיאה - רוב האנשים יסכימו עם הטענה שהאיליאדה והאודיסיאה הן יצירות מופת, אבל סדרת ספרי הארי פוטר שמתקשה אפילו לשמור על עקביות נמכרת הרבה יותר1. האם היא איכותית יותר? לא היא לא. או, אם נקצין את הדוגמה קצת - יותר אנשים מכירים את הטקסטים שכתב יוסי גיספן מאשר את אלו שכתב נתן אלתרמן.
ככלל, עד שמגיעים לתוכנה, יש מעט מאוד קשר בין כמות השימוש במוצר לבין האיכות שלו. למעשה, אפשר לחשוב לפעמים שהקשר הוא קשר הפוך - ככל שמוצר איכותי יותר, כך הוא נפוץ פחות. אז למה שמדד המכירות או השימוש של תוכנה יעיד על איכותה?
אפשר לנסות ולהבין את המקור לטעות התפיסתית הזו, ויש לי כמה ניחושים בגרוש, אבל זה קצת פחות חשוב. מה שחשוב יותר הוא להבין שכאשר אנחנו משתמשים במונח באופן לא הולם, כל תחושות הבטן שלנו שגויות: זה אומר שאנחנו מנסים לפתור בעיות שיווק ומכירה בעזרת "איכות", שאנחנו שואלים תהליכים ומדדים מוזרים ממקומות אחרים בהם מדברים על איכות (מישהו שמע על 6-סיגמה במקרה? למה שמושג של פס ייצור ימצא את עצמו בתהליך פיתוח תוכנה?) הערבוב הזה גם שולח אותנו במירוץ סביב הזנב של עצמנו כשאנחנו מנסים לשפר "איכות" במקומות בהם זה מיותר. כמובן, שימוש במונח בצורה כל כך לא הולמת גורם להמון אנשים לשפוך גבב של מילים רק כדי לנסות ליישב את הסתירה הזו (הייתי מחפש קישורים להדגמה, אבל מה נראה לכם שאני עושה כאן אם לא לשפוך מילים על הנושא הזה בדיוק?)
כאנשי תוכנה, אנחנו צריכים להפסיק להתייחס לאיכות כאל היעד אלא כעל עוד משהו שאנחנו צריכים להתייחס אליו בזמן שאנחנו מסייעים לקדם את המטרות העסקיות של המקום בו אנחנו עובדים. כשאנחנו עוברים למוד פעולה כזה, אפשר לדלג על השאלה הקשה של "מה היא איכות", כי התשובה "אני אזהה את זה כשאראה את זה" היא לגמרי לגיטימית כשמדובר בפרמטר יחיד (ולא מאוד חשוב) בתוך מגוון פרמטרים שעוזרים לנו לענות על השאלה "האם המוצר הזה מקדם את המטרות העסקיות שלנו היטב?" והכי חשוב - אנחנו צריכים לזכור שברוב המקרים אפשר וצריך מוצר באיכות של איקאה.
ככלל, עד שמגיעים לתוכנה, יש מעט מאוד קשר בין כמות השימוש במוצר לבין האיכות שלו. למעשה, אפשר לחשוב לפעמים שהקשר הוא קשר הפוך - ככל שמוצר איכותי יותר, כך הוא נפוץ פחות. אז למה שמדד המכירות או השימוש של תוכנה יעיד על איכותה?
אפשר לנסות ולהבין את המקור לטעות התפיסתית הזו, ויש לי כמה ניחושים בגרוש, אבל זה קצת פחות חשוב. מה שחשוב יותר הוא להבין שכאשר אנחנו משתמשים במונח באופן לא הולם, כל תחושות הבטן שלנו שגויות: זה אומר שאנחנו מנסים לפתור בעיות שיווק ומכירה בעזרת "איכות", שאנחנו שואלים תהליכים ומדדים מוזרים ממקומות אחרים בהם מדברים על איכות (מישהו שמע על 6-סיגמה במקרה? למה שמושג של פס ייצור ימצא את עצמו בתהליך פיתוח תוכנה?) הערבוב הזה גם שולח אותנו במירוץ סביב הזנב של עצמנו כשאנחנו מנסים לשפר "איכות" במקומות בהם זה מיותר. כמובן, שימוש במונח בצורה כל כך לא הולמת גורם להמון אנשים לשפוך גבב של מילים רק כדי לנסות ליישב את הסתירה הזו (הייתי מחפש קישורים להדגמה, אבל מה נראה לכם שאני עושה כאן אם לא לשפוך מילים על הנושא הזה בדיוק?)
כאנשי תוכנה, אנחנו צריכים להפסיק להתייחס לאיכות כאל היעד אלא כעל עוד משהו שאנחנו צריכים להתייחס אליו בזמן שאנחנו מסייעים לקדם את המטרות העסקיות של המקום בו אנחנו עובדים. כשאנחנו עוברים למוד פעולה כזה, אפשר לדלג על השאלה הקשה של "מה היא איכות", כי התשובה "אני אזהה את זה כשאראה את זה" היא לגמרי לגיטימית כשמדובר בפרמטר יחיד (ולא מאוד חשוב) בתוך מגוון פרמטרים שעוזרים לנו לענות על השאלה "האם המוצר הזה מקדם את המטרות העסקיות שלנו היטב?" והכי חשוב - אנחנו צריכים לזכור שברוב המקרים אפשר וצריך מוצר באיכות של איקאה.
1 הבהרה: אני לא טוען שסדרת הארי פוטר גרועה - היא מהנה וקולחת ומכילה לא מעט דברים מעניינים. אבל זו אינה יצירת מופת ↩