ארכיון

ארכיון לקטגוריה ‘מתודולוגיות’

על שיתוף והעצמה

17 אוקטובר, 2011 אין תגובות

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

מי יודע, אולי יום אחד כל הארגון יעבוד באופן דומה.

קטגוריות:מתודולוגיות, אנשים, ניהול, כללי תגיות:

3…2…1… עולים לאוויר

4 ספטמבר, 2010 3 תגובות

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

סוף מעשה במחשבה תחילה

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

מה יש לנו לתכנן?

א.     תיקוני תקלות –

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

ב.     שלבי עליה לאוויר –

יש לתכנן את השלבים ולגזור את לוחות הזמנים מתוך תאריך היעד. שלבי העליה לאוויר כוללים:

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

ג.      תכנון נקודות בקרה ומיזעור סיכונים –

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

ד.      תכנון כח אדם ותחומי אחריות –

מיהם האנשים הנדרשים לביצוע התהליך – אנשי פיתוח, אנשי בדיקות, אנשי תשתיות, מנהלי מוצר, לקוחות וכו', מהם תחומי האחריות של כל אחת מהקבוצות המעורבות ומהו נוהל הדיווח על הצלחות וכשלונות.

ה.     תכנון היום שאחרי –

הקצאת משאבים למעקב, בקרה ותיקונים הנובעים מהעליה לאוויר.

ו.       ביצוע סימולצית התקנה –

בתהליך זה נעלה על נקודות שלא עלו בתהליך התכנון.

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

יום העליה לאוויר

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

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

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

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

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

סיום העלייה לאוויר

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

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

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

קטגוריות:מתודולוגיות, ניהול, תהליכים תגיות:

שינויים

10 אוגוסט, 2010 אין תגובות

כבר אמרו בעבר שהדבר הבטוח ביותר בחיינו כגופי פיתוח הוא השינוי.

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

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

למה הכוונה ?

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

וכמובן שיש עוד נקודות של שינוי הנחות יסוד בחברות שונות .

אז מה אנחנו עושים עם זה?

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

עכשיו כשאנחנו מודעים לכך, אנו צריכים לדעת להתכונן.

ההכנה מורכבת מכמה רבדים.

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

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

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

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

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

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

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

קטגוריות:מתודולוגיות, ניהול, תהליכים תגיות:

תכניות עבודה – יש תאריך יעד ! ומה עכשיו?

25 יולי, 2010 אין תגובות

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

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

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

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

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

כעת ניתן לגשת לבניית תכנית העבודה.

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

מדוע אנו עושים זאת באופן כזה?

משימות גדולות וניהולן

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

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

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

משימות קצרות ומשמעותן

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

תקשור וניהול של תכנית העבודה

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

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

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

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

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

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

קטגוריות:מתודולוגיות, תהליכים, כללי תגיות:

ומה עושים כשצריך למהר…

9 יוני, 2010 אין תגובות
לפעמים (וזה קורה לעיתים קרובות…), אין זמן למתודולוגיות, למסמכים, לבניה מסודרת של תהליך. מה קורה אז? 

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

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

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

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

סליחה, תקלה… התהליך המלא לטיפול בתקלות תוכנה

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

זמנים משתנים

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

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

 

מחזור הפיתוח מתחלק לשלוש תקופות עיקריות.

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

 

תקופה ראשונה – הקמה.

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

 

התקופה השניה – תיקונים והשלמות.

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

 

התקופה השלישית – העליה לאוויר

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

 

כיצד ננהל את הזמן לאורך שלוש תקופות אלו?

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

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

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

 

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

 

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

קטגוריות:מתודולוגיות, ניהול, תהליכים תגיות:

רעש לבן

"תגיד, סיימתם עם המשימה הזו ?"

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

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

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

 

מקורות הרעש הלבן

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

 

השפעות הרעש הלבן

הרעש הלבן משפיע לרעה על היכולת שלנו לעמוד בהתחייבויות שלנו.

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

 

התמודדות עם הרעש הלבן

ישנם שלושה אלמנטים מרכזיים העוזרים לנו ביכולת ההתמודדות עם הרעש הלבן.

  • סינון
  • הפחתה
  • מיקוד 

 

סינון

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

הפחתה

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

מיקוד

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

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

 

בקרה

הבקרה שאנו נדרשים לעשות היא רב מימדית.

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

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

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

 

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

 

קטגוריות:מתודולוגיות, ניהול, תהליכים תגיות:

האם אתם לומדים מהתקלות שלכם ?

28 אפריל, 2010 2 תגובות
בכל מערכת תוכנה יש תקלות. אני לא אכנס כאן לסיבות לתקלות ולמתודולוגיות פיתוח שמנסות לתת מענה לתקלות תוכנה ולהקטין את הסיכוי לתקלה.
בפוסט זה אני אתמקד בנושא ההתייחסות לתקלות, והשימוש בעובדה שהתקלות הן חלק בלתי נפרד מאורח החיים של ארגון המפתח תוכנה לשם לימוד והתפתחות.
 
השאלה שעלינו להציב לעצמנו היא – האם אנחנו מתקנים תקלות בלבד או שאנחנו לומדים מהן ומנצלים את התקלות שמתגלות לטובת התפתחות ושיפור?
אתחיל בשלוש הנקודות הבסיסיות בתפיסה שלי לניהול וטיפול בתקלות
 
  1. תיעוד - כל תקלה צריכה להיות מתועדת. התיעוד צריך לכלול את אופי התקלה, ההשפעות שלה, תוצאות האנליזה, דרך הטיפול בתקלה ואופן סגירת התקלה. התיעוד הוא אקומולוטיבי. ככל שהטיפול בתקלה מתקדם, מתווספים עוד רבדים של מידע, מידע קודם הופך לפחות רלוונטי ומידע חדש מחליף אותו. מהנסיון שלי תיעוד התקלות הופך להיות בסיס ידע מהותי בבניית מערכות, ולא רק ברובד של התקלות. המידע הנצבר יכול להעיד על החוזקות והחולשות של צוותי הפיתוח, על הקשרים בין צוותי הפיתוח וה QA, על פערי ידע בארגון, על פערי ציפיות מול לקוחות, על יכולות חדשות שיש להוסיף למערכת ועוד. על מנת להפיק תיעוד באופן יעיל, מערכת התיעוד צריכה להיות בעלת יכולת להגדרה דינמית של מידע (הוספת שדות, טבלאות וקשרים), ויכולת להגדרה דינמית של שאילתות (חתכים שונים, פילטרים שונים, גם לפי שדות מותאמים אישית).
    מרכיב נוסף שנדרש במערכת תיעוד הוא היכולת להתריע בזמן אמת לפי חתכים דינמיים. כלומר, בהנתן כלל מסויים ובהנתן תקלה מסויימת, אם התקלה עונה על הכלל – יש להפיק התראה מיידית בצורת מייל, SMS וכו'.
    השימוש במערכת התיעוד והזנת המידע צריכים להיות לא רק מדוייקים, אלא גם בזמן המתאים. כאשר ישנה מתודולוגיה מוסדרת של אופן השימוש במערכת, אזי המידע שימצא בה יהיה בעל ערך רב יותר
     
  2. שיתוף ידע – תיעוד התקלה ודרך הטיפול בה צריכים להיות זמינים לכל צוותי הפיתוח וה QA . מערכת התיעוד צריכה להיות מערכת הפתוחה לכלל אנשי הפיתוח וה QA . יש להשתמש בה על מנת לזהות תקלות חוזרות, להפחית כפילויות ובעיקר – ללמוד. ככל שרמת התיעוד , גמישות ופתיחות מערכת התיעוד יהיו גבוהות יותר, היכולת של הצוותים השונים להשתמש במערכת וללמוד ממנה תהיה גבוהה יותר. המתודולוגיה של שיתוף הידע צריכה להיות חלק מנהלי הפיתוח והניהול בארגון על מנת שניתן יהיה להפיק מתיעוד התקלות את המירב. היכולת ליצור אינדקס רב מימדי של התקלות יעזור לבניית שפה משותפת בהקשר למערכת התיעוד והשיתוף. האינדקס והשפה המשותפת יביאו למצב שבו קל לשתף ידע ע"י שליחת קישורים לתקלות ספציפיות, הגדרת שאילתות משותפות וכריית מידע שאינה מבוסס רק על מספרי תקלות אלא גם על מאפייני תקלות.
     
  3. תהליך - אופן הטיפול בתקלות צריך להיות מגובה בתהליך שידוע ומשותף לכל הגורמים. כל אחד השותף בתהליך צריך לדעת מה תפקידו , מה מצופה ממנו ומה הפעולות הנדרשות ממנו. לכל ארגון יש את מתודולוגיות העבודה שלו, אבל כל המתודולוגיות לטיפול בתקלות ייסובו מסביב אופן התפיסה של מחזור חיי התקלה. המתודולוגיה תכלול מספר תהליכים לטיפול בתקלות מסוגים שונים. התהליכים האלו צריכים להיות פשוטים, ברורים וניתנים למעקב. בנוסף, צריך להיות תהליך מקדים של סיווג תקלות על מנת להבין מה התהליך המתאים לטיפול בתקלה. יכולים להיות תהליכים שונים לתקלות המתגלות ע"י צוות ה QA, תקלות המתגלות באתר לקוח, תקלות המשביתות עבודה של לקוח, תקלות המשביתות עבודה של צוותי ה QA וצוותי הפיתוח ועוד תהליכים היכולים להשתנות מארגון לארגון. מנהלי הפיתוח, ה QA  והפרוייקטים השונים צריכים להגדיר את התהליכים האלו, תוך שמירה על מינימום בירוקרטיה, הדגשת חשיבות התיעוד והראיה הרחבה שהמידע הנאסף בתהליכים אלו הינו נדבך חשוב בבניית החוסן הארגוני.

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

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

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

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

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

קטגוריות:מתודולוגיות, ניהול תגיות:

שיתוף ידע כבסיס לגמישות ניהולית

11 אפריל, 2010 אין תגובות
שיתוף ידע בין אנשי הפיתוח הינו אלמנט חשוב מאוד באופן העבודה של גופי הפיתוח וביעילותם של גופים אלו.
חלק מהשיטות והמתודולוגיות המודרניות של תהליכי הפיתוח מתייחסות באופן מובנה לשיתוף ידע. לדוגמא ניתן להביא את מתודולוגית ה Pair Programming – שיטה שבה יותר מאדם אחד (בדרך כלל שניים) שותפים בכתיבת מודולים בתוכנה.
אולם שיתוף הידע הינו יותר מאשר לשבת ולכתוב ביחד, מה גם שלא לכל ארגון המתודולוגיות הנ"ל מתאימות.

מהו שיתוף ידע?
התשובה לשאלה הזו מתבטאת בכמה מרכיבים :

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


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

על האופן והכלים שבהם השתמשתי על מנת להטמיע תהליך שיתוף ידע – אכתוב בפוסט נפרד.