בין הדברים החשובים בפיתוח תוכנה זו המהירות. אחת הדרכים לפתח במהירות היא להשתמש ברכיבי תוכנה מוכנים שיחסכו זמן פיתוח.
כשמפתחים אפליקציה, אפשר לפרק אותה לתתי אובייקטים, אשר על כל אחד מהם ניתן לשאול את השאלה: האם לפתח את האובייקט בצוות שלנו, או להשתמש בפתרון מדף מוכן?
דוגמה: בשתי אפליקציות שונות בשנה האחרונה נדרשנו להכניס עורך טקסטים למערכת. באחת האפליקציות בחרנו בדרך של יצירת עורך משלנו, ובאפליקציה השניה השתמשנו בפתרון מדף מוכן. האם יש לנו מסקנות משתי האופציות? קשה לומר. מה שבטוח הוא שאף אחד מהפתרונות הוא לא כדור הכסף : אף אחד מהם לא היה “וואו!” מבחינת קיצור זמני הפיתוח. לכאורה נראה ששימוש ברכיב מוכן היה אמור להיות plug&play. אבל כל מי שהתנסה בשימוש ברכיבים חיצוניים ודאי יודע כבר שתוכנה שנראית נפלאה בפני עצמה, לא תמיד יודעת להסתדר יפה עם אחרים. כלומר, יש לנו קוד משלנו – JS, CSS, HTML – והעורך חייב לעבוד עם הקונספטים הקיימים, אבל לפעמים הוא לא רוצה…
מצד שני, יש לנו גם התנסות חיובית ברורה (בינתיים…) בקוד חיצוני: ספריית JS. החלטנו עבור אחד הפרוייקטים שלנו להעזר באחת מספריות ה-JS הנפוצות כיום. אין ספק, כי במקרה הזה מדובר בכדור כסף. מגוון האפשרויות שהספריות נותנות הוא בלתי ניתן להתחרות בייצור פנימי. כאן גם היתה פחות בעיה בהשתלבות עם קוד קיים, בגלל שרבים וטובים לפנינו התנסו בספריה הזו, ובאגים רבים כבר תוקנו.
אבל לא רק אנחנו מתלבטים בשאלה מה עדיף. גם שני ענקי התכנות – ג’ף ויואל – אינם מגיעים למסקנה חד משמעית. למעשה, כל אחד מהם נוקט עמדה הפוכה כמעט. ג’ף בעד שימוש בקוד חיצוני, וב-stackoverflow הוא השתמש ב-jQuery בשביל JS , ובעוד כמה תוכנות צד שלישי. האם השימוש בתוכנות האלה עזר לו? סביר להניח שכן. אבל אחת מהן עיכבה את שחרור המוצר מעבר לזמן המיועד (!). האם יצא שכרו בהפסדו? הוא לא חושב כך, והוא מתכוון להמשיך להשתמש בתוכנות חיצוניות. דבר חשוב שהוא מדגיש: כשלוקחים תוכנה חיצונית, כדאי שיהיה בידינו גם קוד המקור שלה . יואל לעומתו טוען בחריפות שאתה צריך להכיר מהי המהות של העסק שלך, ואת המהות הזאת צריך לפתח In House. אם תעשה outsourcing למהות שלך, תאבד אותה. הוא מביא כמה וכמה דוגמאות לפיתוחים שנראים ממש מתבקשים לשימוש בתוכנות חיצוניות (כמו למשל קומפיילר) אבל הפיתוח שלהם בתוך החברה (במקרה זה מייקרוסופט) דווקא יצרה יתרון תחרותי.
אז מה המסקנה? לדעתי, ישנם כמה כללים מנחים בהחלטה: ראשית, כאמור, כל פרוייקט ניתן לפרק לתת אובייקטים. על כל אובייקט כזה אפשר לשאול: האם זו המהות של הפרוייקט שלנו? אם כן – ודאי שעלינו לפתח אותה בעצמנו. אם לא – אפשר להשתמש תוכנת צד שלישי. שנית, עדיף לבחור מוצר ידוע ונפוץ שיש לו קהילה, מפני שבד”כ פירושו של דבר הוא שבאגים רבים כבר נפתרו, או בדרך להיפתר. זה למשל המקור להתנסות החיובית שלנו עם ספריית ה-JS – לספריה יש קהילה, וחלק גדול מהקהילה הזו הוא גם מפתחי דוטנט, כך שהשילוב של הספריה בקוד שלנו היה כמעט נטול כאבים. דבר שלישי, אני מסכימה מאד עם הקביעה של ג’ף לגבי קוד מקור, במיוחד לאחר שהתנסיתי לאחרונה בקוד שהורדנו מהאינטרנט, ולא עבד כפי שרצינו (למשל, היתה לו בעיה עם עברית). מאד שמחנו שהיה בידינו קוד המקור, מפני ששינוי קטן בו פתר את הבעיה. יתרון שני הוא האפשרות להתרשם מהקוד. לא כל מוצר שניתן לקחת הוא באמת ראוי לשימוש. אופן כתיבת הקוד יכול לפעמים לרמוז לנו אם המוצר נכתב בצורה מקצועית או חובבנית.
בהצלחה!
ללקק את האצבעות 🙂
נהנתי לקרוא כל מילה 🙂
ביקום בו אני חיי…כל מיזם מורכב מכמות די גדולה של מיזמים (רכיבים אחרים) ושיטת עבודה
בה הכל מפותח בבית לא נראת מתקבלת על הדעת, בכלל.
הדגש בכל מיזם הוא על המהות !
ובעיקר, שהיא זו שמרגשת את המפתחים ולכן ממומשת ברמה איכות גבוהה.
ביחס למפתחים ולא באופן מוחלט 🙂
אומנם, למיזמים המורכבים מאוסף גדול של מיזמים אחרים יש התנהלות שונה. שחרור גרסאות, תיקון ושיפור קוד קיים, תאום פיתוח בין מגוון רחב של מפתחים ברמות שונות…
לא תמיד פשוט אך מוכיח את עצמו כלכלית…גוגל.
ועכשיו למימוש
בכל פרויקט חדש
יופי של פוסט