רבות סופר דובר והושר אודות הקושי בצד של הפרונט. בצד השרת אפשר להבין את המגוון של האפשרויות, שכן רבות מהן מקושרות לשפת הפיתוח שבה בוחרים. בחרת Java? סביר להניח שתפתח ב-Spring. בחרת Python? זה כנראה יהיה Django או Flask. חוץ מ-NodeJS. בחרת Node – בחרת להסתבך. במקרה? לא נראה לי.
יש משהו בפשטות של JS מצד אחד והביזור שלה מצד שני, שהופכים את השפה הזאת לכר פורה כל כך של פיתוחים שונים ומשונים. אם הדבר היה מוביל לכך שמפתחים היו פשוט בוחרים את מה שנראה להם נוח וקל לפיתוח בשביל להגיע לאותן התוצאות בדרכים שונות, ניחא. אבל המצב הוא שמפתח Angular (כמוני) יירצה ללמוד React, רק אם לא תהיה לו ברירה מבחינה תעסוקתית. כשהייתי צריך לכתוב שני שרתים שונים, אחד ב-ASP.net והשני ב-ExpressJS זה היה לי די פשוט לעבור מהראשון לשני. אני מאד מסופק אם הכיוון ההפוך היה לי קל באותה המידה. למה? נראה לי שהחטא נמצא בצד של JS.
מפתחי פרונט רבים מקטרים על קושי גדול בעיקר בצד של כלי העזר מסביב לכתיבת הקוד. אתם יודעים, מה שאמור להפוך את יצירת התוכן וההפצה לפשוטים יותר. בחלק מהמקרים אני לא ממש מבין את הכעס, כמו לדוגמה למה יש כאלה שכועסים על TypeScript? הוא כל כך מוצלח שאחריו פשוט קשה לי לחזור ל-JS. אולי זה קשור לשנים הרבות בהן פיתחתי בפלאש.
אבל לאחרונה נתקלתי במקרה שבעיניי מייצג את כל מה שרע בפרונט. זה קרה לי דווקא עם כלי שאמור להפוך את הכל לפשוט.
נתחיל בבעייה עצמה. כאשר מפתחים אתר, אפילו של דף אחד (SPA), ישנם קבצי מקור בכמות הולכת וגדלה. אלה יכולים להיות פונטים, תמונות, קבצי CSS וכו'. בשביל לייעל את זמן הטעינה ולהפוך את הפרוייקט ליותר קומפקטי ומוכן להפקה משתמשים בכלי שנקרא bundler. הוא ימיר, יכווץ, יעתיק, יפצל, יאחד ועוד ועוד. את התוצר של כל הפעולות האלה אפשר יהיה להעלות לאוויר.
אולי המפורסם שבהם נקרא webpack. באנגולר הוא מוגדר כבר בצורה אוטומטית, ולכן אין צורך לגעת בו יותר מדי. אבל יצא לי גם להתעסק איתו בדברים קטנים שעשיתי, שלא הצדיקו שימוש באנגולר. מה אגיד? סיוט. קודם כל צריך ללמוד איך להשתמש בו. אז למדתי. הרצתי ואז ראיתי שחלק מהדברים לא מטופלים. רצית טיפול בקבצי עיצוב? תוסף והגדרות. רצית תמונות? תוסף והגדרות. רצית פונטים? אין פרסים למנחשים נכונה. בקיצור, מה שאמור להיות פשוט וקל הפך להיות פרוייקט בפני עצמו.
אני לא היחיד שהבין את זה כמובן. לתמונה נכנס Parcel. הרעיון שלו הוא אפס הגדרות. ומה שנכון נכון. מתקינים אותו, מוסיפים אותו לקובץ ההגדרות של הפרוייקט ובזה מסתיימת העבודה.
או שלא.
התחלתי להשתמש ב-Parcel במשחק קטן שהתחלתי לפתח. הכל עבד יופי. אבל אז שמתי לב למשהו מוזר.

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