איך עובדים עם בית תוכנה? מדריך ליזמים ולסטארטאפים
מאת:
ישי טנצר, 25.7.19, 09:00
ריכוז תובנות וטיפים ליזמים ולסטארטאפים בנושא עבודה מול בתי תוכנה. סקירת שלבים שונים בתהליך ההתקשרות מבחירת ספק ועד להתנהלות מול בית תוכנה. מדריך העוזר ל-2 הצדדים להבין אחד את השני טוב יותר ולהצליח בעבודה משותפת.
למה צריך בית תוכנה?
1. מחפשים גוף, שייקח אחריות על פרויקט תוכנה מא' עד ת'. מדובר על לקוחות הרוצים להוציא החוצה את כל צרכי פיתוח התוכנה בתחום מסוים. במקרה של יזם פרטי או סטארטאפ בתחילת הדרך ייתכן שאין להם משאבי פיתוח פנימיים ובמקרה של חברות מבוססות יותר יתכן שמדובר בפרויקט, שהוא לא בליבה או בתחום טכנולוגי, שהחברה לא מתמחה בו.
בכל אופן, במקרה זה מצופה מבית התוכנה לספק את כלל השירותים הטכנולוגיים הקשורים לפרויקט, (ראה, למשל, מאמר על
שלבים בפיתוח אפליקציה), כולל ניהול והובלה טכנולוגית. הלקוח מעוניין בתוצאה הסופית ופחות בדרך.
2. מחפשים גוף, שיספק משאבי פיתוח חסרים - מדובר בחברות, שיש להן צוות פיתוח פנימי אבל חסרים להן ידיים עובדות. לפעמים הצורך נובע מסיבות אדמיניסטרטיביות כמו מחסור בתקנים או חוסר יכולת להעסיק עובדים שכירים מסיבות שונות.
במקרה זה מצופה מבית התוכנה לספק מפתח/מפתחים בעלי כישורים מסוימים, שישתלבו בצוות הלקוח, גם אם מדובר בעבודה מרחוק. במקרה זה ניהול של צוות הפיתוח, הגדרת יעדים ומשימות הוא על הלקוח.
3. השלמת התמחות שחסרה - לפעמים הלקוח פונה לבית תוכנה כי חסרה לו התמחות מסוימת בתוך החברה (אבטחת מידע, אופטימיזציה של שאילתות, שיפור זמן ריצה של אלגוריתם). השוני מול המקרה הקודם הוא, שבית תוכנה נותן כאן לא רק משאבי פיתוח, אלא גם הנחיה מקצועית לצוות הפיתוח של הלקוח.
פרמטרים חשובים בבחירת בית תוכנה
איך בוחרים תוכנה? כדי לפשט את תהליך הבחירה להלן רשימה של פרמטרים, שכדאי לקחת בחשבון:
1. התאמה לצורך - האם בית התוכנה מתאים לצורך כפי שהוגדר בסעיף הקודם? לצורך הדוגמה: אם מחפשים לפתח
מארקטפלייס, אזי בתי תוכנה, שלא התנסו במערכות מסובכות מסוג זה, לא יתאימו.
כ"כ, יש בתי תוכנה, שלא לוקחים פרויקטי פיתוח מא' עד ת' או לא מספקים שירותי יעוץ להשלמת התמחות. כדאי לברר את הנקודה הזו במגעים עם הבית תוכנה כדי לחסוך זמן יקר.
2. התמחות טכנולוגית - בד"כ בתי תוכנה מתמחים בסדרה מסוימת של טכנולוגיות. למשל, אם בית תוכנה עובד בעולמות הווב, המובייל וה-
IoT, ובטכנולוגיות של
Python/Django ,React React Native, והלקוח מחפש לפתח בדוט נט, אז בית תוכנה זה לא יהיה התאמה טובה מבחינה טכנולוגית. מומלץ לא להאמין לאמירה "אנו מפתחים בכל טכנולוגיה". בד"כ זה אומר, שלבית התוכנה אין את ההתמחות הנדרשת.
3. תקשורת ובניית מסגרת עבודה - כדאי לברר במגעים עם בית התוכנה כיצד הוא רואה את מסגרת העבודה והתקשורת עם הלקוח. הלקוח נכנס כאן ליחסים, שימשכו חודשים ארוכים ואולי אף שנים. לכן, ראוי לוודא מהי המסגרת בה מתנהל הפרויקט והאם התקשורת מתאימה ל-2 הצדדים.
4. איכות/אמינות - יש הרבה דרכים למדוד איכות ואמינות, כאן יש למצוא את המדדים הרלוונטיים. להלן כמה דוגמאות:
א. פורטפוליו / תיק עבודות - יש לבקש לראות את תיק העבודות של בית התוכנה. האם יש שם פרויקטים בסדר גודל של הפרויקט שבנדון? אם לחברה יש ניסיון באותו עולם תוכן? זה יכול להוות יתרון, כי בית התוכנה למד כבר את התחום. אולם, זו לא חובה, כי א שוכרים את שירותי בית התוכנה בזכות התמחות הטכנולוגית, שניתנת למימוש בתחומים ועולמות תוכן שונים.
ב. ממליצים - יש לבקש לדבר עם מספר ממליצים, רצוי עם חברות בסדר גודל/מצב דומה. כדאי לנסות להבין מה הם אהבו ומה הם אהבו פחות אצל בית התוכנה. אם מבינים מה מפריע לאנשים אחרים ניתן להעלות את הנקודה בשיחות עם בית התוכנה ולגשר על הפער.
ג. ותק - הסטטיסטיקה אומרת, שרוב העסקים לא שורדים את 5 השנים הראשונות לקיומם. לאחר מכן אחוזי השרידות משתפרים משמעותית. ראוי לקחת נקודה זו בחשבון בבחירת בית תוכנה, מאחר שרוצים, שהוא יהיה בשטח לאורך זמן (גם לאחר שהפרויקט יסתיים).
ד. תמהיל של מחיר/תועלת - כאשר בוחנים את עלויות הפיתוח ומשווים בתי תוכנה שונים, רצוי לא לחשב רק "זול/יקר" ולנסות לחבר את המחיר לתועלת שמצפים לקבל, ולשקלל יחדיו. מומלץ לנסות לכמת פרמטרים כמו איכות, אמינות, לו"ז, תמיכה ותקשורת בהתאם למה שחשוב, ולהסתכל על השקלול הכולל.
צורות התקשרות עיקריות עם בית התוכנה
צורות התקשרות עיקריות מקובלות עם בית תוכנה:
1. מסגרת פרויקטלית (
Fix price) - במקרה זה בית התוכנה מתמחר את הפרויקט כולו ונותן מחיר סופי ולו"ז לביצוע הפרויקט (כמו בבניית בית). היתרונות של השיטה עבור הלקוח הם, שעלויות הפרויקט ידועות מראש והלקוח, לכאורה, לא לוקח על עצמו סיכון במקרה והערכות היו מוטעות או שדברים יסתבכו בדרך. החסרונות הם, שבמקרה זה ללקוח אין אפשרות להכניס שינוים במהלך הפרויקט, דבר שלא מתאים לרוב הסטארטאפים כיוון שהמוצרים שלהם משתנים כל הזמן.
כ"כ, בגלל שהסיכונים מוטלים על הבית תוכנה, הוא ינסה לפתח את המוצר בצורה הכי פשוטה לו ויתכן וזה יבוא על חשבון יעילות, הקלות בה תתאפשר תחזוקת המשך ועוד. שיטה זו דורשת הכנת מסמכי אפיון מסודרים טרם תחילת הפיתוח דבר העלול לעכב תהליכים ולצרוך זמן נוסף.
2. רכישת משאבי פיתוח (
Time &
Materials) - צורת התקשרות זו קובעת, שהלקוח קונה מבית התוכנה זמן עבודה של מפתחים, מעצבים, מנהלי פרויקטים ושאר בעלי תפקידים. הזמן יכול להימדד בשעות, ימים, שבועות או חודשים. יתרונות השיטה ללקוח הם גמישות מרבית ויכולת להכניס שינוים בכל רגע בפרויקט. החיסרון הוא, שהעלות הסופית של הפרויקט לא ידועה מראש והסיכון מוטל על הלקוח. זה מתאים למוצרים, שתדירות השינויים בהם גבוהה ויש הרבה חוסר ודאות בתחילת הפיתוח.
כמובן, שאפשר לשלב בין השיטות ולמצוא תמהיל מתאים ל-2 הצדדים בהתאם למצב הפרויקט. חשוב להבין את היתרונות והחסרונות בכל שיטה, להעלות את הסיכונים במו"מ ולמצוא דרכים לחלק אותם בין הצדדים. למשל, כאשר בית תוכנה עובד לרוב בשיטה השנייה (
Time &
Materials) אבל מקטין את סיכוני הלקוח ע"י מתן הערכות טרם תחילת כל עבודה, מעקב צמוד אחרי התקציבים וניהול קפדני של הפיתוח.
חשוב לזכור, שפיתוח תוכנה מכיל בתוכו הרבה אי-ודאות (הרבה יותר מאשר יצור פיסי או פיתוח בתחום הבניה). לכן, תמיד צריך לקחת מקדמי בטחון גם בתקציב וגם בלו"ז. כמו בדימוי של משולש, ש-3 קדקודיו הם: עלות, לו"ז ואיכות. בכל רגע נתון ניתן לקבע 2 קודקודים אבל השלישי יצטרך לזוז כדי שצורת המשולש תשמר. כלומר, אם איכות והלו"ז קריטים העלות מאוד תעלה, או אם עלות ולו"ז קריטיים האיכות תפגע, ועלול להתקבל מוצר לא שמיש.
התנהלות שוטפת מול בית תוכנה במהלך העבודה
כמה טיפים לא לאבד את הידיים והרגליים במהלך הפרויקט ולצאת מהפרויקט כאשר 2 הצדדים מרוצים.
1. תיאום ציפיות - לפני תחילת הפרויקט ולאורך כל הדרך יש לנסות להיות מתואמים עם בית התוכנה שנבחר. ראוי לא לחסוך זמן בלהסביר מה חשוב ואיפה מוכנים לוותר ולבקש זאת גם מהצד השני. כך, שכאשר מתקבלים תוצרים, תהיינה פחות הפתעות.
2. אבני דרך ולו"ז - חשוב לראות תוצרי ביניים לעתים קרובות לאורך הפרויקט כדי לוודא תאום. פרקי זמן משתנים מפרויקט לפרויקט, אבל מעבר משותף על התוצרים ברמה שבועית או דו-שבועית מתאים לרוב הפרויקטים. רצוי לא להגיע למצב בו רואים את התוצרים רק לאחר חודשים ואז עלולה להיות הפתעה גדולה (לרוב לא נעימה). אם בפרק זמן מסוים אין תוצרים, שקל להראות, ראוי לבקש לקבל הסבר מפורט על מה עבדו באותה תקופה ומתי יהיה משהו, שניתן לראות. שיטה זאת נקראת
Agile בשפה המקצועית.
3. תקשורת - זה החוט המקשר בין הצדדים לאורך כל חיי הפרויקט ודואג, שהצדדים יישארו מתואמים. תקשורת לא חייבת להיות קשה ולדרוש מאמץ אם מארגנים אותה בצורה נכונה ומשתמשים בכלים מתאימים.
יצירת קשר מבוסס WIN-WIN עם בית התוכנה
מערכת היחסים עם בית התוכנה היא ארוכת טווח. בית תוכנה מעוניין בלקוחות עוגן לטווח ארוך. הוא מעוניין בהצלחת לקוחותיו, כי זה אומר, שהצרכים שלהם מתרחבים והוא יכול לגדול ביחד איתם. כמובן, שלקוחות מצליחים נראים טוב בפורטפוליו. המלצות מלקוחות הן קריטיות, הרי פניות ,שמגיעות דרך ממליצים, הן בעלות סיכויי סגירה הרבה יותר גבוהים.
אבל גם הלקוחות מעוניינים, שבית התוכנה ימשיך לצמוח ולהתקיים, גם אם הם לא עובדים איתו כרגע. הרי בית התוכנה ליווה אותם לאורך זמן ומכיר היטב את המערכת שלהם ואת הטכנולוגיה. הוא מהווה מעין תעודת ביטוח למקרה בו אנשי ליבה בצוות הפנימי יעזבו או כאשר כתוצאה מתקופה כלכלית קשה יהיה צורך לפטר את הצוות ולעבור למצב של תחזוקת שבר.
בכך, שמפנים פעילות לבית התוכנה, הלקוחות דואגים, שיהיה לם גוף, שאפשר יהיה לפנות אליו בימים קשים ולקבל תמיכה וגיבוי. לכן, יצירת מערכת יחסים לטווח ארוך יכולה להוות מנוע צמיחה הדדי.
מאת:
ישי טנצר, יולי 2019.
מנכ"ל איניטק- בית תוכנה לפיתוח מוצריים דיגיטליים.
https://www.initech.co.il
contact@initech.co.il