פוסט שונה באופיו מהפוסטים האחרים אבל אם לומר את האמת הוא לא פחות חשוב. בפוסט הזה אשתף על תהליך עבודה מאוד נפוץ כשיטת עבודה בישראל, וכמתכנתים אולי אתם נתקלתם בזה לא פעם , אולי אתם אפילו עובדים ככה בשגרת היום יום (חמור מאד אם תשאלו אותי) . אז ככה,
בחודש האחרון נכנס לנו פרויקט ברמת דחיפות "דחוף ביותר"\"בהול" או כל כינוי אחר בסגנון, וכן לקחו חלק נכבד מהצוות כולל אותי על מנת לנסות ולעמוד בייעדים המוגזמים הללו.
לרוב מה שקורה שמקבלים פרויקט לחוץ כלכך מתחילים להילחץ שלא לצורך מה שגורם לעבודה מפוזרת ומבולגנת וכתוצאה מזה גוררת המון עיכובים ברמה של קוד לא תקין, קונפליקטים, ניהול כושל של משימות וחלוקת עבודה בצוות, שיכתובים רבים לקוד, באגים רבים ועוד הרבה טוב בסגנון.. מה שגם קרה בפרויקט הנוכחי שעליו אני מספר..
ואם זה לא מספיק, אז גם הצוותים האחרים לא ממש הצליחו לשמור על סדר ואז קרה מצב שצוות הפיתוח מקודד ומקודד ותוך כדאי משנים את האפיון ושולחים תיקונים עיצוביים.. בקיצור חגיגה אחת גדולה.
איך התמודדתי ומה עשיתי
כחברה, וכצוות שבו יש מנהל צוות בעל ניסיון הדברים בסופו של דבר מסתדרים, וכן גם אצלנו מנהל הצוות עשה את תפקידו היטב וכן ידע לסנן חלק נכבד מהלחץ, על מנת לשמור על צוות המתכנתים בראש שקט יחסית. כמובן שלמרות הכל היה לחץ וכן היה מורגש, הרגשתי שעשיתי לא מעט טעויות שאפשר ללמוד מהם.
הבנתי כמה דברים חשובים בדרך שהייתי ממליץ לכל מתכנת מתחיל \ מתקדם לדעת,
- מינימום אחריות. בגלל שכל הצוותים השונים שעובדים על הפרויקט יש נטיה להעביר אחריות בין הצוותים, יש להיות זהירים ולהשתדל לא לקחת אחריות מיותרת שתוביל אתכם לבזבוז זמן יקר. למשל, להוסיף לפרויקט הכנה לגלובל סטייט מנגמט ונסיון לעשות חיבורים מדומים של צד שרת גרם להרבה בלגן בפרויקט ולאחר מספר ימים שעבדנו על לנסות לממש את זה, בסופו של דבר הלכו לתמיון ונאלצנו להוציא קוד זה שהיה בקשה של צד שרת..
- לבוא בראש פתוח לשינויים. אחד הדברים שקשים למתכנת זה לקבל שינויים. לאחר שישבת מספר ימים, בנית פיצר שלם ואז מגיע מנהל הפרויקט ואומר לך שצריך לשנות, זה אחד הדברים היותר מבאסים שיש בעבודה, בפרוייקט לחוץ ומבולגן שינויים באים כל הזמן מה שגרם לי לשנות גישה וקבל את המצב ששינויים יהיו, מה שעזר לי גם לתכנן דברים יותר טוב, בגלל שמראש ידעתי שהם משתנים. למשל : רכיב סינון שנשאר ללא פוקציונאליות מלאה עד לרגע שבו החליטו סופית על יכולות הסינון, רכיב שנבנה דינאמית לפי נתונים כך שהרכיב מודולארי. כך העבודה התקדמה הנראות הרצויה הוצגה בממשק אך דברים כמו סינון בפועל (פונקציונאליות) נשארה לשלב מאוחר יותר.
- להתעקש על דברים! הכי קל זה להגיד כן להכל. אבל ההתעקשות היא שתעזור לך ליישר את הפרויקט מכוון שהכל מתנהל בלחץ דברים הופכים לבלגן ולכן מאוד מומלץ להתעקש על דברים בסיסיים כמו , לקבל אפיון, לקבל רק עיצובים שעברו אישור של הלקוח, גיט מסודר עם PR וכו….
- עבודה בגיט. סופר חשוב! יש נטיה כזו לזנוח את גיט בעובדה בלחץ כי זה "בזבוז זמן" או "תדחפו למאסטר אנחנו צריכים את השינויים האלה דחוף"… אז זהו שלא, גיט מסודר יחסוך לכם הרבה מאד בעיות. לכן תמיד להקפיד על לפתוח PR (pullrequest), לקבל (Code review) CR מסודר, ניהול בראנצים קטנים וכמובן שכל אחד יטפל בדברים שלו בלבד בלי להתערב אחד לשני בפיצרים כי גם זה קורה בעבודה בפרויקט לחוץ.
- לבקש עזרה. זו לא בושה כמובן לבקש עזרה. כידוע לנו, כל מתכנת (גם אני כמובן..) והאגו שלו או הרצון שלו להסתדר לבד או "אי נעימות" או איך שלא תגדירו את זה. בפרויקט לחוץ אין זמן לחקור משהו חדש, אין זמן לאתגר את עצמכם, אז כן תשאלו ותתייעצו כמה שאפשר על מנת לחסוך זמן . לדוגמה: מפתח ישב יומיים וחצי על משהו פשוט וקטן כי הוא לא היה מספיק מנוסה בטכנולוגיה, בזבז הרבה זמן, זמן שאין, היה יכול לשאול, היה יכול להרים דגל והיה מקבל עזרה כמובן.
סיכום והמשך עבודה
לאחר חודש של עבודה בלחץ (ימיום ולילות, גם מחוץ לשעות העבודה במשרד) ומסירות מלאה של כל חברי הצוות, הפרויקט עלה לאוויר בהצלחה והלקוח כמובן מרוצה. כמובן שהאידאל הוא לא להגיע למצבים כאלו של לחץ הפרויקט אך זה גם לא בשליטתנו (ככל הנראה שתתקלו לא מעט בפרויקטים כאלה), אז חשוב לדעת כיצד לנהוג ולהתנהל בהתאם על מנת לחסוך זמן יקר להרים את הפרויקט בהצלחה.

