Posts tagged ‘באגים’

באגים יש?

לכולם יש באגים, זה נכון.
השאלה היא מה עושים איתם?
יש לי רעיון:
כל באג הוא סיפור, אם תצליחו לספר את הסיפור של הבאג, אם תצליחו להבין את השתלשלות האירועים שהובילה לבאג, אז תמצאו מידע רב ערך שיכול להצביע על בעיה אמיתית ושורשית, ואם תצליחו לפתור את הבעיה הזאת, קיים סיכוי לא רע שבאגים מהסוג הזה יקרו בתדירות נמוכה באופן משמעותי, יותר מכך, קיים סיכוי לא רע שמצאו בעיה שמזיקה לכם בצורה יותר רחבה מהבאג האחד הזה.

image

אם תגדילו לעשות ותבצעו את זה על עשרת הבאגים הכי חשובים שלכם, קיים סיכוי לא רע שתצליחו להבין לא מעט בעיות, אם תתחילו לטפל בהן אחת אחרי השניה וגם תצליחו להתמודד בהצלחה עם הבעיה, אני מאמין שתקבלו תשואה מאוד גבוהה על ההשקעה שלכם, בתלות בסוג הבעיה כמובן.

אם בכלל תתמידו ותעשו את זה כל הזמן, אתם תצליחו להסיר, לאט לאט, שכבה אחרי שכבה, את האבק שהצטבר לכם במערכת, תוכלו באופן קבוע לחדש, להשתפר ולהשתכלל. בהתחלה זה ייקח זמן, אבל עם הזמן כמו בניקיון, ככל שתנקו לעתים יותר תכופות, כך כל ניקוי ידרוש פחות מאמץ.

בד”כ כשמתחילים לבצע ניתוח על הבאגים בשלבים הראשונים מגלים בעיות באוטומציה (או חוסר באוטומציה) כי כשאין אוטומציה ברמה סבירה אז באגים על פונקציונליות קיימת (רגרסיה) לא נתפסים, וכאלה יהיו הרבה.

כאשר קיימת אוטומציה, אז ניתוח של הבאגים יכול להוביל לשיפור משמעותי שלה, לזהות אזורים עם כיסוי לא טוב, לזהות סוגי בדיקות שאתם לא בודקים, כמו בדיקות ביצועים, או עומס.

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

במקום שבו התהליכים כבר עובדים בצורה סבירה, סביר שתתחילו לגלות בעיות במערכת עצמה: דברים כגון פערי ידע של אנשי הצוות, הרכב הצוות, איכות ותכיפות התקשורת בין הגורמים השונים של הפרויקט וכו’.

לא פחות חשוב מלתחקר את הבאגים, הוא למצוא דרך טובה לעקוב אחרי השיפור שאנחנו מקבלים, בכדי שנבין איזה באגים שווה לתחקר, איזה משימות מצדיקות השקעה בכלל

את ניתוח הבאגים אפשר לעשות כל יום, אפשר על כל באג שמתגלה ,ואפשר גם רק פעם בשנה, אני מציע שתבצעו אותו פעם בספרינט לפחות, אולי אפילו ברטרוספקטיבה, אפשר גם להקדיש לזה זמן קבוע בתוך הספרינט. הכי חשוב זה להתחיל לעשות משהו. אני מאמין שאם זה יעזור לכם להשתפר, אז אתם כבר תמצאו דרך להשקיע בזה יותר זמן ומאמץ.

עשרת המכות

אֵלּוּ עֶשֶׂר מַכּוֹת שֶׁהֵבִיא הַקָּדוֹשׁ בָּרוּךְ הוּא עַל חברות התוכנה בְּמִצְרַיִם, וְאֵלּוּ הֵן:

image 1. דם – הדם שמקיזים פעם אחר פעם בשעות נוספות, ובסופי שבוע בעיקר אנשי הפיתוח, שלמעשה משלמים את המחיר של בעיות ארגוניות, בעיות שגם אם הן נוצרות בפועל על ידם, מקודם בד”כ נמצא במקום אחר במערכת.

 

image 2. צפרדע – אומרים שאם שמים צפרדע במים רותחים , היא תקפוץ מיד החוצה, לעומת זאת – אם תשימו אותה בסיר עם מים קרים ותחממו אותן לאט, הצפרדע לא תשים לב לשינוי הטמפרטורה ותישאר בסיר עד הסוף המר. ככה בדיוק ארגונים ותוכנות מגיעות לסופן המר, אם לא בודקים ומשקפים על המצב באופן קבוע אנחנו פשוט לא מרגישים בהתדרדרות.

 

image 3. כינים – באגים – מה עדיין לא אמרו על באגים, כמה כבר נכתב על זה, עוד משחר הימים. מתי תבינו שיותר זול לייצר מערכת בלי באגים (או לפחות כמעט בלי) מאשר לייצר מערכת עם באגים ולשלם על התיקון שלהם? באגים כמו כינים הם קטנים, מעצבנים ומגרדים, ואפילו מדבקים מאוד.

 

image 4. ערוב – לפי חלק מן הפרשנים המודרניים יותר הכוונה למכרסמים או מזיקים שעלולים להרוס את הארץ – מכירים את המכרסמים האלו? אלה שמסרבים ללמוד דברים חדשים? לא מוכנים לשמוע על Unit test או Refactoring, מה שכן הם תמיד ישמחו לכתוב את התשתית החדשה. תעצרו אותם לפני שיהיה מאוחר מידי!

 

image 5. דבר – הוא שם כולל לשלוש מחלות הנגרמות על ידי חיידק ומופיעות בצורת מגפות המוניות שהקטל בהן רב – שלושת המחלות המדבקות שאני בוחר לציין הן : גאנטים, הערכת מאמצים ביחידות אבסולוטיות, חוצצים (Buffers), המחלות הללו, לא רק שמדבקות ומתפשטות מהר, הן הורגות את הפרויקט עוד לפני שהוא התחיל ע”י יצירת אשליה של ביטחון וודאות, ואם זה לא מספיק, אז גם המחלות הללו מספקות אילחוש כללי למשך רוב זמן הפרויקט, והאילחוש מתפוגג רק לקראת סוף הפרויקט (ראו מכה ראשונה).

 

image 6. שחין – צרעת – בעבר הלא רחוק נחשבה מחלת הצרעת חשוכת מרפא והטיפול המקובל היה או חוסר טיפול או כריתת איברים. למה הדבר דומה? בעיות ב-Design. עד שלמדנו להשתמש ב-Refactoring כמו שצריך, בכל פעם שגילינו בעיות בדיזיין עמדו בפנינו שתי אפשרויות. או שכתוב של קטעי קוד שלמים מאפס, או לתת לתוכנה למות. היום, כמו הצרעת שניתן לרפא ע”י תרופות, ניתן לתקן בעיות רבות של דיזיין ע”י Refactoring.

 

image 7. ברד – כמו חתיכות הקרח הללו שנופלות מהשמיים בהפתעה, כך גם בתוך ארגונים ישנן מידי פעם הפרעות, דברים דחופים כאלה שחייבים להתייחס אליהם מיד ואי אפשר להתקדם עד שהם נגמרים. הפרעות אתם יודעים. ארגונים בוגרים מוצאים דרכים להתמודד עם ההפרעות כך שהם לא יפריעו להתנהלות השוטפת של העבודה, למעשה מגנים על הפיתוח מפני ההפרעות הללו, וכמו להיות בתוך מקום סגור – כשיורד ברד, זה ללא ממש מפריע.

 

image8. ארבה – ארבה הוא השם שניתן לחגבים המתאגדים בלהקות – כל חגב בפני עצמו הוא לא מזיק, אבל פתאום הם מתאגדים להם ומייצרים את ארגון החגבים העולמי, ומגלים שיחד הם ממש יכולים להשתלט על נתח משמעותי מהעוגה. כך גם למשל ה-Scrum alliance שהיווה מרכיב חשוב בהפצה של אג’יל וסקראם, אבל היום נראה רוב ענינו הוא לעשות כסף וחלק תעודות שהמשמעות שלהן מוטלת בספק, לדעתי לפחות.

 

image 9. חושך – אולי המכה הקשה מכל לארגוני תוכנה (ובכלל), הרבה ארגונים שאני רואה ומכיר חיים בחושך מוחלט, הם לא יודעים מה קורה, איך הולך, מי הולך, אין שקיפות, אין הבנה אמיתית של המצב והבעיות. חיים בחושך.כשחיים בחושך אי אפשר לדעת מה הכיוון הנכון, קשה לראות את המכשולים. לא נעים.

 

image 10. מכת בכורות – מכת הבכורות הייתה המכה שגרמה לפרעה לשנות את דעתו ולשחרר את עם ישראל לחופשי. אין מכת בכורות אחת, יש הרבה, לכל ארגון יש כזאת, לפעמים מבינים מה המכה הזאת מאוחר מידי לפעמים לא. תחפשו מה היא מכת הבכורות שלכם, מה יגרום לארגון שלכם לשנות את דרכיו, ברגע שתמצאו את המכה, תנסו להציג אותה לארגון ואז אולי.. אם מצאתם את המכה שלכם, תוכלו גם אתם להוציא את הארגון שלכם לחופשי – מחושך לאור.

 

חג שמח!!!image

למה אנחנו לא עומדים בזמנים ?

אני לא מבין למה אנחנו לא עומדים בזמנים?

הרי יש לנו תהליך כל כך מפורט ומוגדר (עם התאמות ספציפיות לרוב החברות).
הנה התהליך פחות או יותר – ברור לי שהוא שונה במעט בין חברה לחברה.
בתחילת כל פרויקט (או גירסא) אחרי שמגדיר הלקוח את כל הדרישות שלו מהפרויקט, אנחנו משקיעים המון משאבים כדי לתת הצעת מחיר (כמה זמן וכמה אנשים) מדויקת ככל האפשר:

  • מנתחי מערכת כותבים מסמכים שמתארים את דרישות הלקוח בצורה של דרישות פונקציונאליות ספציפיות למערכת.
  • ארכיטקטים עוברים על הדרישות הפונקציונאליות ומתרגמים אותם לכדי מסמך דרישות טכניות מהמודולים השונים במערכת.
  • יושבים מנהלי הפיתוח ומקצים את העבודה לצוותים הרלוונטיים (בודקיםאינטגרציהפיתוח).
  • במקרה הטוב מתכנסים הצוותים הרלוונטיים, קוראים את המסמכים הרלוונטיים, ומעריכים את העבודה מבחינת משאבים (כמות אנשים וזמן). במקרה הרע הם מעריכים בעצמם.
  • מנהלי הפיתוח אוספים את הנתונים מהצוותים, בד”כ מוסיפים איזה שהוא טווח ביטחון להערכה. ואולי אפילו מכינים מסמך או מצגת להצגת הנתונים הסופיים.
  • מנהלי הפרויקטים אוספים את הנתונים ממנהלי הפיתוח, בד”כ מוסיפים טווח ביטחון ומעבירים לאנשי השיווקמכירות כדי שיתנו הצעת מחיר ללקוח.
    אחרי כל התהליך המפורט, המתמשך והיקר הזה, לדעתי (עם גיבוי סטטיסטי נרחב) אנחנו עדיין ברוב הפעמים לא עומדים בזמן.

מי שעדיין חושב שהוא עומד בזמנים, מוזמן לבחון את עצמו:
– האם כשאתם עומדים בזמנים, זה אומר גם בתכולה ?
– האם שום באג קריטי לא מתגלה אצל הלקוח, כלומר עומדים באיכות ?
– האם אתם לא מנפחים את הערכות הזמנים (ובכך “דופקים” את הלקוח) ?

אם התשובה לשלושת השאלות היא כן, איחולי – שברתם את הסטטיסטיקה!
http://net.educause.edu/ir/library/pdf/NCP08083B.pdf
הלינק הוא סקר CHAOS המקובל מאוד בעולם המציין שיעור ההצלחה לפרוייקטי תוכנה הוא שרק 9% מפרוייקטי התוכנה בחברות גדולות ו-16.2% ו-28% בחברות בינוניות וקטנות (בהתאמה) מצליחים.