How to KISS a modern FED
ניר קאופמן שואל למה פיתוח פרונטאנד מסובך מדי: מסע מפלאש דרך SPA ועד server side components, איך באז מכתיב בחירת סטאק, ולמה keep it simple עדיין מנצח.
צפו בהרצאה · 31:16הסיפור שמאחורי ההרצאה
- פיתוח פרונטאנד יצא מפרופורציות והפך פשוט למסובך מדי, בלי סיבה אמיתית.
- מסע היסטורי: מפלאש ואקשן סקריפט, דרך SPA ופריימוורקים, ועד סרוור קומפוננטס.
- אין best practices, יש רק trade-offs - צריך להוציא את המושג מהשיח.
- Buzz Driven Development: בוחרים טכנולוגיה כי היא מגניבה, לא כי היא נכונה.
- סרוור סייד קומפוננטס זה בעצם PHP בתחפושת - חזרנו למקום שהתחלנו.
פיתוח פרונטאנד מסובך מדי, ורוב הזמן בלי סיבה אמיתית. זו הנקודה שניר קאופמן, פרונטאנד טק-ליד ב-Tikal עם 15 שנה בתחום, בא לפרוק מעל הבמה. לא הרצאה טכנית, לא איזו טכניקה חדשה שתצאו איתה. יותר וייק-אפ קול. ניר לוקח את הקהל למסע אחורה - מ-Flash ו-ActionScript, דרך המצאת ה-SPA, ועד server side components של היום - ושואל שאלה אחת פשוטה: איך המקצוע שלנו הפך ל-rocket science? הוא פותח בבדיחה שרצה לאורך כל ההרצאה: ג’ון לנון אף פעם לא אמר שאין bad practices, יש רק trade-offs. וזה בדיוק העניין. פחות best practices, יותר שיקול דעת.
מ-Flash ו-ActionScript ועד היום: איך הגענו לכאן
ניר מתחיל מהביוגרפיה שלו, כי היא בעצם הביוגרפיה של המקצוע. פעם, הוא מזכיר, לא היה דבר כזה Front End Developer או Back End Developer. היו Software Developers. הוא עצמו התחיל עם Java, ולפי המוצר גם כתב APIs או שלח HTML לבראוזר עם JSP, ASP, ולפעמים PHP. נקודת הכניסה שלו לעולם ה-client הייתה Flash ו-Flex, עם שפה שנקראת ActionScript. הטייטל בקורות החיים הראשונים שלו לא היה פרונטאנד בכלל - הוא היה Rich Internet Applications developer.
ומכאן ניר מוציא אנקדוטה שכדאי לזכור: MXML, ה-markup של Flex, היה בעצם XML בתוך JavaScript שהקדים את זמנו. במילים אחרות, JSX - הרעיון שכולנו התרגשנו ממנו מאוחר יותר - כבר היה שם, בערך בתקופת ECMAScript 4. ואז סטיב ג’ובס החליט ש-Flash לא רלוונטי, וניר, שהיה מפתח Flash עסוק מאוד, נאלץ עם הזמן להסכים איתו. הפואנטה שלו: הרבה ממה שנראה לנו חדש ומגניב הוא מיחזור של רעיונות ישנים שכבר עבדו.
למה המצאנו SPA - ולמה אנחנו עדיין שם
כאן ניר מפעיל את הקהל בשאלה: למה בכלל התחלנו לבנות single page applications? התשובה ההיסטורית פשוטה - האינטרנט היה איטי. אם היינו שולחים דף מלא מהשרת בכל קליק, החוויה הייתה נוראית, אז דחפנו את הלוגיקה לבראוזר כדי שירגיש כמו desktop application.
אבל, וזו הנקודה החדה שלו, הסיבה הזו כבר לא קיימת. יש לנו אינטרנט מהיר, יש רוחב פס. אז למה אנחנו עדיין בונים הכל כ-SPA? התירוץ של developer experience או user experience כבר לא מחזיק מים כשהרשת מהירה. כמו שניר מנסח את זה בציניות, אנחנו עדיין שם פשוט כי משלמים לנו על זה. את אותה שאלה הוא מותח גם על המושג פרונטאנד עצמו: אם אני בונה ממשק פקודות קוליות, אני פרונטאנד? אני בונה UI, לא GUI. ואם כן, למה מפתחי מובייל שעובדים ב-React Native לא קוראים לעצמם פרונטאנד? המושגים, הוא טוען, הרבה יותר עמומים ממה שאנחנו מתייחסים אליהם.
Buzz Driven Development: לבחור סטאק לפי דרישות גיוס
החלק הכי נוקב בהרצאה הוא מה שניר קורא לו Buzz Driven Development. אחרי הרבה שנים בחברת ייעוץ, הוא פגש יותר ויותר לקוחות שאומרים לו את אותו משפט: המוצר עובד, הכל בסדר, אבל אנחנו לא מצליחים לגייס מפתחים אם לא נעבור ל-framework הכי סקסי ו-up to date. כלומר, הסטאק הטכנולוגי נבחר לפי דרישות HR ולא לפי צרכי המוצר.
הוא לא מדבר על AngularJS או משהו deprecated. הוא מדבר על framework חי ובועט כמו Ember - שאף אחד לא יתחיל איתו פרויקט חדש היום, פשוט כי “זה לא מגניב”. ניר מתאר את הדינמיקה: יש איזה buzz, יש איזו ספרייה חדשה, כולם מכניסים אותה לפרודקשן ולוקחים לפיה שיקולים ארכיטקטוניים - בלי באמת לבחון אותה. Qwik, server side rendering, אלף ואחת ספריות state management. הכל נבחר לפי מה שמדברים עליו בכנס הבא, לא לפי מה שהמוצר צריך.
אין bad practices, יש רק trade-offs: MVC ו-Backbone עדיין ולידיים
כאן חוזרת בדיחת ג’ון לנון, אבל עם עומק אמיתי מאחוריה. ניר אומר שבשנתיים האחרונות מה שמעצבן אותו הכי הרבה זה השימוש במושגים best practice ו-bad practice. לטענתו אלה מושגים “רעילים” שכדאי להוציא מהשיח לגמרי. במקומם - trade-offs. כל בחירה היא trade-off, ותפקיד המפתח הוא לשקול אותו, לא לצטט כלל.
אין דבר כזה bad practices, רק trade-offs.
הוא לוקח את זה למקום הכי לא-אופנתי שאפשר. MVC, הוא מזכיר, חי ובועט. הוא מוכן להראות לכל מי שרוצה case study של אפליקציה אמיתית שבנה ללקוח עם MVC, React, Backbone ו-TypeScript - קוד נקי, שעבד, שהיה כיף לפתח בו, כי ה-design pattern התאים לאופי המוצר. הבעיה היחידה שלו, לדבריו, היא שזה פשוט לא מגניב. ואז הוא מקצין: הוא בנה ב-2022 אפליקציה שלמה עם Backbone. זה התחיל כבדיחה והגיע לפרודקשן, כי הכל היה נקי, קל ועבד. המסר לבחירת framework לפרויקט חדש ברור - תבחרו לפי המוצר, לא לפי הטרנד.
Server Side Components - או PHP במסווה?
אחת השורות שהכי נתקעות בראש מגיעה כשניר מגיע ל-server side components. הוא פורש את הלולאה השלמה: פעם שלחנו HTML מהשרת, כי הבראוזר יודע לרנדר HTML. אחר כך החלטנו שזה לא מגניב, הבאנו המון JavaScript לבראוזר, בנינו SPA. זה יצר בעיה, אז המצאנו פתרון - נתחיל לעשות streaming של JavaScript מהשרת.
ואיך קוראים לפתרון הזה? server side components. כותבים JSX, זה מתרנדר בשרת, ומגיע ללקוח מוכן. כמו שניר שם את זה, זה בעצם PHP - אבל עם JSX במקום PHP, כדי שנוכל להמשיך להרגיש מגניבים. “PHP לא מגניב, אתה יודע מה כן מגניב? server side component.” הוא לא אומר שזה רע. הוא אומר שסגרנו מעגל שלם, השקענו בו עשור, וחזרנו כמעט בדיוק לנקודת ההתחלה - רק עם שם חדש ומצגת יפה יותר.
Keep It Simple: להחזיר את הפרונטאנד לפרופורציות
הכותרת KISS היא כמובן keep it simple, אבל גם הלהקה - ניר עושה מוזיקה כשהוא לא מקודד, אז המשחק מכוון. במקור, הוא מספר, ההרצאה נבנתה להיות שעה וחצי על העיקרון הזה, שהיה שם ונשכח. הגרסה הקצרה נשארת עם אותה בקשה.
המסר שלו מפרספקטיבה של 15 שנה: framework-ים מתחלפים, טרנדים מתחלפים, ועכשיו server side rendering חוזר עם שלל המצאות נלוות. אל תתאהבו בבאז, ואל תפחדו מהטכנולוגיה ה”לא מגניבה” שעובדת. השאלה שניר משאיר לכל אחד היא אישית - מה התרומה שלי, בתור הבן אדם הקטן, להחזיר את התחום הזה לשפיות. הוא לא מוכר שיטה, הוא מזמין למחשבה. את ההמשך, לדבריו, אפשר למצוא באתר הצנוע שלו, nir.life - פסקה קטנה והמון לינקים.
למי ההרצאה הזאת
אם אתם פרונטאנד דיוולופרים שמרגישים שהסטאק תפח מעבר לכל היגיון, או טק-לידים שצריכים להצדיק בחירת framework מול לחצי גיוס - זה בול בשבילכם. גם מפתחים צעירים שרק נכנסו לעולם וחושבים שכל טרנד חדש הוא חובה ייצאו עם פרספקטיבה בריאה. אל תחכו לטריק טכני, זה לא שם. מה שתיקחו זה זווית ביקורתית על ההייפ, וקצת אומץ לבחור פשוט על מגניב.
השורה התחתונה
- אין bad practices, יש רק trade-offs. תפסיקו לצטט כללים, תתחילו לשקול הקשר.
- SPA הומצא כי האינטרנט היה איטי. האינטרנט כבר מהיר - אז תשאלו למה אתם עדיין שם.
- Buzz Driven Development אמיתי: כשבוחרים סטאק לפי דרישות גיוס במקום לפי צרכי המוצר, הפסדתם.
- MVC ו-Backbone עדיין ולידיים ב-2022. הבעיה היחידה שלהם היא שהם לא מגניבים.
- Server side components הם במידה רבה PHP במסווה - סגרנו מעגל שלם וחזרנו לרנדר בשרת.
- Keep it simple. שאלו את עצמכם מה התרומה שלכם להחזיר את הפרונטאנד לפרופורציות.
ניר מעביר את הכל בהומור ובשיחה פתוחה עם הקהל, אז שווה לראות את ההקלטה המלאה ב-YouTube - במיוחד את הקטעים שבהם הוא מפעיל את האולם בשאלות. אם המסר תפס אתכם, הכנסו גם ל-nir.life. ותשאלו את עצמכם, לפני ה-npm install הבא, אם אתם באמת צריכים את זה או שסתם רדפתם אחרי הבאז.
"אין דבר כזה bad practices, רק trade offs."
- ניר קאופמן
"אני לא מגדיר את עצמי כפול סטק דיבלופר."
- ניר קאופמן
"PHP לא מגניב. אתה יודע מה כן מגניב? סרבר סייד קומפוננט."
- ניר קאופמן
- 00:00:00 פתיחה: פרונטאנד יצא מפרופורציותניר פותח בהתרסה, פיתוח פרונטאנד הפך למשהו מסובך ומנופח בלי שום סיבה אמיתית.
- 00:04:33 אין best practices, רק trade-offsניר מסביר למה המושגים best practice ו-bad practice רעילים וצריך להוציא אותם מהשיח המקצועי.
- 00:06:28 פעם היו רק מפתחי תוכנהסיפור על התקופה שבה לא היו פרונטאנד ובקאנד נפרדים, אלא מפתחי תוכנה ששלחו HTML מהשרת.
- 00:10:30 מפלאש לפריחת הפריימוורקיםמאקשן סקריפט ופלאש, דרך RIA ו-JSX שהקדים את זמנו, ועד סטיב ג'ובס והפריחה של הפריימוורקים.
- 00:14:37 מה זה בכלל פרונטאנד?ניר מאתגר את ההגדרה, פרונטאנד זה בניית ממשק בין אדם לתוכנה, לא בהכרח אפליקציה בבראוזר.
- 00:18:38 עידן הפריימוורקים וה-MVCמ-MVC ואנגולר, דרך Backbone וקומפוננט ארכיטקטורה ועד אלף ספריות לניהול state - סיבוך הולך וגובר.
- 00:24:56 Buzz Driven Developmentבוחרים סטאק טכנולוגי לפי מה שמגניב ולפי דרישות גיוס, ולא לפי מה שנכון למוצר.
- 00:26:48 KISS: חזרה לשפיותהמסר המסכם, לשמור על פשטות, לקחת הכל בפרופורציה ולהבין שסרוור קומפוננטס זה בעצם PHP מחדש.
מה כוסה בהרצאה
ניר קאופמן
ניר קאופמן
מנהל גילדת הפרונטאנד ב-Next Insurance, Google Developer Expert ומרצה בינלאומי. לשעבר יועץ שנגע בקרוב ל-250 פרויקטים, מנטור ומנהל קהילות.
שאלות מההרצאה
למה פיתוח פרונטאנד נהיה כל כך מסובך?
לפי ניר קאופמן, יצאנו מפרופורציות. הבאנו כמויות עצומות של JavaScript לבראוזר, יצרנו בעיות, ואז המצאנו עוד שכבות פתרונות - state management, bundlers, micro frontends, server side rendering. הרבה מזה מונע מ-buzz ומהרצון להישאר מגניבים, לא מצורך אמיתי של המוצר. המקצוע, לטענתו, הפך ל-rocket science בלי סיבה מספקת.
מה זה buzz driven development?
זה המונח של ניר לתופעה שבה בוחרים טכנולוגיה לפי מה שמדברים עליו, לא לפי מה שנכון למוצר. הוא פגש לקוחות שאמרו שלא מצליחים לגייס מפתחים אם לא יעברו ל-framework הכי סקסי ו-up to date. כך הסטאק נבחר לפי דרישות HR, וספריות חדשות נכנסות לפרודקשן רק כי כולם מדברים עליהן.
מה זה server side components בריאקט?
ניר מסביר שזה קוד שכותבים ב-JSX ומתרנדר בשרת, ואז נשלח מוכן ללקוח - במקום להביא את כל ה-JavaScript לבראוזר. הפואנטה שלו: זה בעצם PHP במסווה. פעם שלחנו HTML מהשרת, עברנו ל-SPA כי "PHP לא מגניב", ועכשיו חזרנו לרנדר בשרת עם שם חדש. סגרנו מעגל שלם וחזרנו כמעט לנקודת ההתחלה.
איך בוחרים framework לפרויקט חדש?
ניר טוען שאין תשובה נכונה אחת, יש רק trade-offs. תבחרו לפי אופי המוצר, לא לפי מה שמגניב. הוא הראה שאפשר לבנות אפליקציה אמיתית ונקייה גם עם MVC, Backbone ו-TypeScript ב-2022, וגם היה בונה סטארט-אפ חדש עם Ruby on Rails. הבעיה עם הטכנולוגיות ה"ישנות" היא לרוב שהן לא מגניבות, לא שהן לא עובדות.