מבט על בחירה טכנולוגית

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

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

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

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

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

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

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

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

כלומר חברה שלמה אחרי הרבה ניסיונות החליטה שהרבה יותר קל לה לבנות מוצר עם FPC מאשר C בשביל לשרת ספקי תקשורת גדולים אשר מספקים פתרונות VoIP וכו' ללקוחות קצה. אבל אל תספרו לאלו שנעולים על טכנולוגיות, אותם זה לא מעניין והם ישארו עם מה שהם יודעים הכי טוב, שזה אין כלי אחר מ C/++, פרל, רובי, פייתון PHP וג'אווה. פסקל, אפילו לא תגיע לרשימה כלשהי של טכנולוגיות להסתכל עליהם, למרות שאולי היא זו דווקא תוכל לתת את המענה הנכון והטוב ביותר עבור המוצר, עם פחות בעיות מסביב…

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

6 מחשבות על “מבט על בחירה טכנולוגית

  1. אורי

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

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

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

    אגב, כנ"ל לגבי הבחירה במערכת ההפעלה שעליה התוכנה תרוץ.

  2. ארתיום

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

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

    רק מדוע, אני, לא אבחר בטכנולוגיה הזו? יש לזה שתי סיבות:

    1. איפה אני אמצא תיעוד רחב ומסודר, איפה אני אגגל על כל פיפס קטן בשביל להתמודד איתה? על Java, Python, C, PHP אני יכול, על פסקל? לך תחפש.
    2. איפה אני אמצא מתכנתים לצוות? עם כל הכבוד, גם אם אני אקח תותחי־על, זה יקח להם חצי שנה, להתחיל לכתוב בצורה באמת טובה בפסקל, (אם כי לכתוב יקח להם שבוע־שבועיים).

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

    מס' הערות:

    1. אני לא יודע לגבי הבעיות של מזרים, אבל Python דווקא עושה לי רושם של שפה מאוד גמישה שדברים כמו שתיארת אפשר לשנות בקלות.
    2. תסביר לי מה הבעיה עם gettext? אני בחרתי בו עבור CppCMS ואני דווקא מאוד מרוצה בגלל שיש עשרות כלים מסביבו שעושים את החיים מאוד קלים (למשל kbabael). אשמח אם תשתף אותי עם הבעיות שלו.

  3. Ilan Shavit

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

    בסופו של דבר אין שפה אולטימטיבית. כפי שכתבת, רצוי מאוד להתאים את השפה לבעיה, אבל זה מחייב אותך להיות "תותח על" בתחום התכנות: כלומר לדעת אסמבלר, להכיר היטב אחת משפות הסקריפטים (פרל, רובי,פייתון), לדעת java, לדעת php ו- javascript, לדעת c/c++/pascal וגם לדעת היטב visual studio.
    מאחר שלרוב האנשים האנשים אין את הידע הזה אז הם עובדים עם הכל שהם מכירים (למרות שהפתרון שהוא מציע הוא לא הכי מוצלח).

    דבר נוסף: גם FPC ולזרוס רחוקים משלמות: נתתי לך דוגמא ב- irc: תפתח את מזרים ל- hp-ux או aix… לא בטוח שתמצא במכונות הללו סביבה מתאימה, ולא בטוח שיהיה לך קל לבנות סביבה כזו. בלינוקס, דרך אגב, אם התוכנה הייתה נכתבת ב- fpc זה היה מחייב את המשתמש להוסיף לדיסק שלו עוד כ- 370 מגהבייט (וזה קצת מוגזם בשביל תוכנית אחת). כלומר, בדיוק כפי שהצגת, להיצמד לטכנולוגיה אחת הוא לא טוב, גם במקרה של fpc ולזרוס.

  4. Ilan Shavit

    ארתיום שלום
    הבעיה שעידו סיפר עליה היא לתת יכולת למשתמשים להוסיף תחנות רדיו/מצלמות בעצמם. הבעיה התעוררה רק בגרסה האחרונה בה השפה מתורגמת לשפות שונות. הוספת תחנת רדיו מחייבת לעדכן שלושה קבצים: את הקובץ mazrim.rsrc.py שהוא תבנית ה- gui של התוכנה, את התכנית הראשית: mazrim.py וכמובן להכין קובץ תרגום מקומפל חדש Mazrim.mo. כאמור השינוי הנ"ל צריך להיות מוטמע בשפות שונות, כאשר קובץ תחנות הרדיו נמצא בתיקיית הבית של המשתמש. לא אמרתי שזה בלתי אפשרי, אבל יש לזה היבטים שונים שמחייבים בדיקות שונות.

  5. ik_5 מאת

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

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

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

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

  6. פינגבק: חופש הדיבור» ארכיון הבלוג » תחתונים גדולים (XXL ) לאנשי קוד פתוח ..

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s