יש שיאמרו שמשימה כזאת
איננה משימה של מתכנת, אלא משימה של איש QA. וגם אם כן, עדיין צריך ללמוד קודם כל מה זה Buffer overflow לפני שאתה עושה את זה. אתה עדיין צריך ללמוד באיזה מקומות טיפוסי למצוא Buffer overflows. ויש גם מקום ליצירתיות במשימה כזאת - לא מזמן עידן(אני חושב, אולי זה היה גלעד) הביא כאן קטע קוד של מיקרוסופט שהיה בו Integer overflow, שגרר buffer overflow. לכאורה הייתה בדיקה אם יש buffer overflow, אבל היה פגם בבדיקה, שיכלה להכשל במקרה של Integer overflow. והייתה בעיה זהה בתכלית גם בקוד ASN1 של מיקרוסופט(שגרר לאחריו כל מיני תקיפות, כמו כיבוי המחשב מרחוק, על ידי הקרסת lsass). ברור שיש המון סוגים של משימות, אבל אחד הדברים שמאפיינים מתכנת טוב זה היכולת לקפוץ בין משימות, ולעשות את העבודה הדרושה באותו הרגע. בין אם אתה כותב מערכת הפעלה, לומד לכתוב למערכות משובצות, כותב בדיקות למערכת כלשהי, עובר על קוד לא שלך כדי למצוא Buffer overflows, לעצב אלגוריתמים, לתכנן GUI נכון, וכו'. ברור שזה אוסף של תכונות, וברור שאפשר לפצות על העדר תכונה אחת עם תכונות אחרות, אבל בסופו של דבר, אם חסרים לך הרבה מהתכונות הללו, יהיה קשה מאוד להיות מתכנת. ולגבי ה"לפעמים" - הלפעמים הזה קורא לכל אחד. אני אתן לך דוגמה מהמקום עבודה הקודם שלי: סיימנו פיתוח של גרסא(עברנו לcode freeze), והסתבר שלא בדקנו את הקוד מספיק, ושאין מספיק אנשי QA לעשות את העבודה. אז מנהל הפיתוח החליט שהוא פשוט מקצה חצי מהצוות פיתוח לעזור בעבודת הQA. חלק מהעבודת QA הזאת הייתה מאוד משעממת ושגרתית, אבל היה צריך לעשות אותה.