לכתוב מחדש

Leaning Tower of Pisaהנה שאלה מאוד מטרידה: "למה אף פעם אין זמן לעשות דברים כמו שצריך, אבל תמיד יש זמן לעשות דברים מחדש ?"

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

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

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

אז מדוע אף פעם אין זמן לעשות דברים כמו שצריך, אבל יש זמן לעשות אותם מחדש ?

6 מחשבות על “לכתוב מחדש

  1. TDDPirate

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

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

  2. השין גימל

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

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

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

    אבל כל השטויות האלה כבר מאחורי. שאחרים ישברו את הראש.

  3. levdev

    התשובה פשוטה: כי אנשים יקנו. המטרה האמתית של חברות תוכנה היא להרוויח כסף, לא לייצר תוכנה.

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

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

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

    לפני כמה זמן, חשבתי על נושא דומה, אם כי בכיוון קצת אחר:
    http://levdev.wordpress.com/2011/06/04/solutions-vs-products

  4. Sro

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

    1. ik_5 מאת

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

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

  5. פינגבק: סליחה, יש לכם אולי זמן ללמוד טכנולוגיה חדשה ? | לראות שונה

להשאיר תגובה

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

הלוגו של WordPress.com

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

תמונת Twitter

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

תמונת Facebook

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

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

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

מתחבר ל-%s