None 17 ביולי 2019

איך עובדים עם בית תוכנה? מדריך למשתמש

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

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

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

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

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

למה אתם צריכים בית תוכנה?

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

 עשיתי קצת סדר והגדרתי סיבות עיקריות:

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

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

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

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

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

פרמטרים חשובים בבחירת בית תוכנה

אוקי הבנו למה צריך בית תוכנה, אבל איך נבחר?

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

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

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

  1. התמחות טכנולוגית - בדרך כלל בתי תוכנה מתמחים בסט מסוים של טכנולוגיות. למשל אנחנו באיניטק עובדים בעולמות הווב, המובייל וה-IoT. הטכנולוגיות שאנו עובדים איתם הם Python/Django ,React React Native. אם לקוח מחפש לפתח בדוט נט, אז אנחנו לא נהיה התאמה טובה מבחינה טכנולוגית.

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

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

  2. איכות/אמינות - יש המון דרכים למדוד איכות ואמינות, כאן תצטרכו למצוא את המדדים הרלוונטיים לכם, אציג כמה דוגמאות:

 

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

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

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

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

 

צורות התקשרות עיקריות עם בית התוכנה

ארצה להתייחס לצורות התקשרות העיקריות המקובלות בהתקשרות עם בית תוכנה:

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

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

 

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

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

 

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

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

התנהלות שוטפת מול הבית תוכנה במהלך העבודה

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

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

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

שיטה זאת נקראת Agile בשפה המקצועית, הנה מאמר שלנו בנושא.

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

 

יצירת קשר מבוסס WIN-WIN עם בית התוכנה

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

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

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

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

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

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

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

 

ישי טנצר

מנכ"ל איניטק- בית תוכנה לפיתוח מוצריים דיגיטליים.

https://www.initech.co.il//

contact@initech.co.il

#פינת הידע של איניטק #development #software #initech #software development #softwaredevelopment #ביתתוכנה #בתיתוכנה