מהי תצוגת תוכנה? מתי כדאי לדבוק בשיטת "אל תשאל, אל תספר", ומי אמר למי: אני לא הפרעתי לך, אתה אל תפריע לי. קווים לדמותו של הקוד-רוויו.
אחד השלבים החשובים ביותר, שלא לומר האהובים ביותר, בתהליך פיתוח תוכנה הוא ה code review. לטובת הקוראים שאינם בקיאים ברזי ההיי-טק, רק אומר שה Code review דומה מאוד לתצוגת אופנה. אבל במקום נשים יפות לבושות במודה האחרונה שמוקפות בצלמים נלהבים, ב Code-review מדובר במישהו מהצוות שחושף את הקוד האחרון כשהוא מוקף באוסף של אנשים משועממים עד מוות שמתים ללכת הביתה. ממש תצוגת תוכנה.
אבל ברצינות, ה code-review הוא השלב שבו המתכנת כבר סיים לכתוב את הקוד, ואפילו הריץ עליו כמה בדיקות בסיסיות (לא באמת, הרי לא ניתן לבדוק אם הוא בדק. והישרים שבינינו, שלא רוצים לשקר פשוט יגידו: "מה לא מספיק שזה התקמפל?") ועכשיו בעל או בעלת הקוד מחפשים איזה פראייר שיעיף עוד מבט על הקוד כדי לוודא שאין פה איזה פאדיחה נוראית לפני שמכניסים את הקוד פנימה, או בשפה המקצועית לפני הצ'ק אין. תמיד טוב שעוד זוג עיניים יעבור על השינויים, לא? השאלה היא רק: למי זה טוב? אגב, שמעתי שבחלק מהחברות, בעיקר במגזר הציבורי, גיירו את המושג code-review ל "סקר קוד", שזה בעיניי שם הרבה יותר מוצלח מאוד, כיון שכל התהליך הזה הוא סקר לא קטן בכלל.
אז איך עושים code review? באוירת החג, התהליך תלוי בארבעת סוגי המתכנתים:
המתכנת החכם – עובד לפי הספר. אם בחרת בחכם שיעשה לך review, כדאי שתפנה לך כמה שעות טובות. הבחור הולך לעבור איתך על כל שורת קוד, ולהתעכב על כל פסיק, כל נקודה וכל נקודה פסיק. אותו אי אפשר למרוח בכל מיני תרוצים של "עזוב, לא צריך לבדוק איזה ערך החזירה הפונקציה, היא תמיד מצליחה" וכדומה. המתכנת החכם גם יקפיד לרשום את כל ההערות והריג'קטים שלו בטבלה מסודרת ועוד לקבוע איתך ישיבה לשבוע הבא לוודא שתיקנת הכל. בקיצור חתיכת ברוך. ללא ספק זה לא מעשה חכם לבחור במתכנת החכם שיעשה לך review.
המתכנת הרשע – אם במקרה נפלת על המתכנת הרשע בתור ה reviewer שלך, אז כדאי שתפנה לך לא כמה שעות, אלא כמה ימים. הוא הרבה יותר גרוע מהחכם, וכנראה גם יותר חכם ממנו. קודם כל הוא ממש רוצה להתפוצץ עליך שבכלל הפלת עליו את התיק הזה ולכן הוא מתכנן נקמה מתוקה. צריך להבין שהמתכנת הרשע הוא לא פראייר, ואין לו שום כוונה לבזבז יותר מרבע שעה עליך. אז מה הוא עושה? הוא ממציא כל מיני מקרי קצה מוזרים ושואל אם חשבת עליהם? ואם הקוד שלך הוא מספיק גנרי ואקסטנסיבילי? כלומר לך בבקשה ותוסיף תמיכה גם ביפנית (שכידוע נכתבת במאונך), כי מי יודע אולי גם שם ירצו להשתמש בתוכנה שלנו, שממירה מתאריך לועזי לעברי… ואם צלחת את כל המכשולים האלה, כאן ישלוף הרשע את הקלף המנצח – ומה עם הדוקמנטציה? הרשע קובע שאין מספיק הערות בקוד, ועכשיו לך תבכה לו שבקוד שהוא עצמו כותב אין אפילו חצי הערה. בקיצור הרשע יעשה כל מה שביכולתו על מנת לוודא שאין מצב שעוד פעם תזמין אותו לעשות לך review.
המתכנת התם – זוהי טעות שעושים רק פעם אחת. ה reviewer התם פשוט לא מצליח להבין את מהות השינוי שאתה רוצה לעשות בקוד. זה בפני עצמו לא כל כך נורא, אלא שהוא מתעקש להבין. ואז אתה מוצא את עצמך מבזבז זמן יקר בלהסביר לו את השינוי לעומק. גם זה לא היה כל כך נורא, אלא שלאט לאט אתה מבין שהתם הזה למעשה לא יודע כלום, וצריך ללמד אותו על כל מה שקרה פה בשנה וחצי האחרונות. גם זה לא היה נורא כל כך, אם לא היית מגלה במהלך שיעור ההיסטוריה, שגם אתה שכחת מה קרה פה לפני שנה וחצי ושבעצם את כל הקוד שכתבת אפשר לזרוק לפח. בקיצור באת ל review אצל התם ויצאת טָמבל.
והמתכנת שאינו יודע לשאול – חלומו של כל מי שרוצה לעשות צ'ק אין זריז. זהו בדרך כלל הבחור הכי צעיר בצוות. אין לו מושג ירוק באיזה קוד מדובר, מה השינוי שעשית ולמה. הוא קצת כמו שלושת הקופים שבתמונה. או כמו מדיניות העבר של הצבא האמריקאי: אל תשאל, אל תספר, והכי חשוב – אל תסבך אותי. רק תחתום פה, פה ופה והקוד בפנים. אגב, מי שקצת מתמצא באינטליגנציה היי-טקית יודע שכמעט כל אנשי התוכנה הופכים להיות חצי זומבים מסוג "שאינם יודעים לשאול" אם ה code-review מתרחש מיד לאחר ארוחת הצהרים, או ביום חמישי בערב.
ועכשיו, בגלל שהפוסט יצא קצר מדי (עוד אין 700 מילים, תספרו), ובשם שוויון הזכויות, הנה הצד השני של המטבע. איך זה נראה מהצד של כותבת הקוד שרק רוצה לעבוד בשלום את ה code review וללכת לשיעור יוגה. אז כנגד ארבע מתכנתות שרצו לעשות צ'ק אין דיבר הפוסט:
המתכנתת החכמה – עובדת כמו חמורה (אתון נראה לי פחות מתאים כאן) ובודקת את הקוד מכל הכיוונים עשרים פעמים לפחות. כותבת טונה של הערות בקוד וכמובן גם מעדכנת את המסמכים. כשהיא כבר מגיע ל code-review, עם עיניים אדומות מחוסר שנה, לאף אחד לא נעים להגיד לה שום דבר, אז אפילו אם יש איזו בעיה קטנה מחליקים לה, ומאשרים את הקוד. כמו שאמרו חכמנו: יגעת ומצאת? צ'ק-אין!
המתכנתת הרשעה – בדומה למקבילה הרשע מלמעלה, גם היא לוקה בעצלנות כרונית ואין לה כח. אבל מצד שני הרי אי אפשר לעבור code-review סתם ככה, אז מה עושים? גורמים לכולם לסבול, בסגנון אם אני לא עושה צ'ק אין, אף אחד לא עושה צ'ק אין. אז מתזזים את כולם לישיבות אינסופיות, וחוזרים ודשים את אותן שורות קוד שוב ושוב עד שלכולם זה כבר יוצא מהאף. בסוף מישהו נשבר ואומר, תעזבי אני כבר אעשה שינוי בקוד שלי במקומך. בינגו!
המתכנתת התמה –כבר שנתיים שהיא לא מצליחה לעבור צ'ק אין על שינוי של שורת קוד אחת. כל פעם מוצאים לה דפקט אחר. עד שבסוף הפרוייקט מסתיים או שהפיצ'ר מתבטל והיא הולכת לבזבז את הזמן שלה בפרוייקט אחר.
והמתכנתת שאינה יודעת לשאול – או לפחות עושה את עצמה כזאת. היא פשוט מדלגת לה בקלילות על שלב ה code review ועושה צ'ק-אין בלי לשאול אף אחד. כשהגירסה נדפקת בגלל הקוד הדפוק שהיא הכניסה, היא מסבירה לראש הצוות שהיא בכלל לא ידעה שצריך לשאול מישהו אם הקוד שלה בסדר. אני לא הפרעתי לך, למה אתה מפריע לי?
והמהנדס החכם אומר: על כל קוד וקוד חייב אדם לשאול את עצמו (ואת חברי הצוות) האם אפשר לכתוב אותו טוב יותר.
[תודה לא.ג. על הרעיון]
אהבתי, אחד הפוסטים הטובים.
רק הערה קטנה- במשפט "ומה אם הדוקמנטציה?" צריך להשתמש ב"עם".
כן, עשיתי code review לפוסט 🙂
אהבתיLiked by 1 person
מתוך סקרנות – מה שיעור המתכנתים מכל אחד מהסוגים לדעתך? כלומר, כמה אחוזים הם מתכנתים חכמים, כמה רשעים וכו׳?
אהבתיאהבתי
לא הבנתי למה יש הבדר בין מתכנתים למתכנתות
אהבתיאהבתי
ה reviewer הקבוע שלי לא יודע לשאול (או לא רוצה לשאול) ועושה את עצמו תם, כל זה כי הוא לא רוצה להיות רשע, וזה מה שחכם בו.
אהבתיLiked by 1 person