דצמבר 09, 2011

על ניקיון הבית, תיקון באגים ומה שביניהם

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

באותה שעה ביום חול, אנחנו אנשי ההי-טק חיים בעולם שונה לגמרי, אבל עם אותה הדילמה.

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

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




פ.ס.: אולי יש לכם מנקה באזור פ''ת?

אין תגובות: