• בלוג
  • האם באמת צריך להכיר 5 פיתרונות לאותה הבעיה?

האם באמת צריך להכיר 5 פיתרונות לאותה הבעיה?

01/05/2021

שאלה זריזה (אל תספרו לי את התשובה. תענו בראש): כמה מכם, אחרי שסיימתם לכתוב פיצ'ר או לפתור באג, חוזרים אחורה עם git reset --hard ואז מנסים פיתרון נוסף? ופיתרון שלישי? ורביעי? וחמישי?

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

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

אבל...

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

ואני לא מדבר על לגלות איזו טכנולוגיה יותר מתאימה למוצר באמצעות כתיבת POC בכמה טכנולוגיות שונות. את זה אני יודע שאתם עושים. אני מדבר על בחירת המחלקות לפיתרון מסוים. אני מדבר על חלוקת העבודה בין ה Micro Services שאתם כותבים. אני מדבר על הבחירה בין כתיבת שאילתת SQL מסובכת לבין פיענוח המידע בקוד צד שרת. אני מדבר על ההתבלטות עד כמה לשנות את קוד המקור בשביל שיהיה קל לבדוק אותו לעומת כמה Mock-ים לבנות כחלק מהבדיקה. אלה שאלות מעניינות שרק אחרי שאנחנו כותבים את שתי האפשרויות אנחנו נמצאים במקום להשוות ביניהן.

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

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

האם באמת צריך להכיר 5 פיתרונות לאותה הבעיה? אם אנחנו מכוונים להיות המתכנתים הכי מקצועיים שאנחנו יכולים - התשובה בהחלט כן.