בעיה עקרונית
כל יוצר עוור למגבלות של היצירה שלו. כותב הקוד עוור ברמה מסוימת לבעיות של הקוד שלו, עם כל הרצון הטוב שיכול להיות (ולמרבה הצער, מי מאיתנו שעבד בסביבה מסחרית לחוצה יודע שרצון טוב עלול להיות מצרך נדיר). יש הבדל שראוי לשים לב אליו בין QA ל- QC בהקשר הזה: QC = Quality Control = בקרת איכות: תהליך וידוא התאמה בין המפרט לבין המוצר בפועל. רוב מה שקוראים לו בארץ QA הוא למעשה QC QA = Quality Assurance = אבטחת איכות: וידוא התאמה של המוצר לשוק היעד. מי שעובד על הפרויקט כמאפיין או כמתכנת יכול לעשות, במקרה הטוב, QC - וגם זה בעייתי. כאשר מדובר בנושאי QA, כמו - חסר פיצ'ר כזה או אחר שלא מופיע ב- spec, או שה- layout של המסכים לא ברור (למרות שהוא תואם ל- spec), זה פשוט לא עובד. מי שיש לו את החוש כיצד לעשות את זה טוב, עושה את זה טוב מלכתחילה. ומי שחסר את החוש, לא יכול לשפוט את עבודתו שלו עצמו. יש מי שההכללה שאני עושה כאן לא מתאימה לו מן הסתם, והוא מסוגל באמת לבדוק את עצמו בצורה נאותה. יצא לי לעבור דרך עשרות פרויקטים, לעבוד עם מאות אנשים, מכל רמות היכולת - וההכללה הזאת מניסיוני דווקא די תואמת למציאות. והגדיל לעשות מישהו שעבדתי איתו, שהאשים את צוות ה- QA בבאגים, שכן "כשבדקנו את הדברים בעצמנו, לפני שהייתה מחלקת QA, לא היו כמעט באגים". נו, שוין. עם טיעון כזה אי אפשר להתווכח. מה שכן, יש עקרון שרצוי מאוד להנחיל למתכנתים שנקרא design for testability - בנה את כל המוצר מראש כך שקל יהיה לבדוק אותו. יש קצת תיאוריה מעבר לכותרת (אבל לא הרבה - מעבר לרעיון הכללי). למרבה הצער, זה לא מסתדר טוב עם רוב מתודולגיות הפיתוח האופנתיות, ולכן הסיכוי שנראה את זה נפוץ הוא אפסי.