אביתר הוא מפתח פרונט יוצא דופן. הוא כמעט ולא משתמש בספריות שנחשבות כסטנדרט בתחומנו. או שהוא בונה אותן בעצמו או שהחברה בה הוא עובד יוצרת אותן לשימוש פנימי.
לא צפוי? זה בסדר גם אני הרגשתי ככה ובכל זאת אני חייב להגיד שזה נותן את ההרגשה שלא תמיד צריך ללכת עם העדר.
הנחת היסוד הזו הביאה אותו ליצירת ספריה מאוד מצליחה לולידציית טפסים שבעיניי יש לה פוטנציאל להוביל את הנישה. ביום-יום הוא עובד במטא הלוא היא פייסבוק.
הראיון איתו היה פשוט מרתק ופותח את המחשבה לכיוונים מעניינים.
במה החברה בה את/ה עובד/ת עוסקת?
אני עובד במטא, או בפייסבוק אם תרצו. אני מהנדס (בלי תואר) וחלק מצוות שעובד על פלטפורמה פנימית שבאמצעותה אפשר יהיה לבחון עסקאות ופעילויות פיננסיות חשודות שעוברות במערכת.
לדוגמא, אם התבצעה טרנזקציה דרך כרטיס אשראי גנוב או חשד להלבנת הון, המערכת תציג את המידע הרלוונטי לאנשים שבוחנים את המשתמש או העסקה.
מה זה פרונט אנד בעינייך?
זה המקום שהדברים המעניינים קורים, בלי ציניות זה כר פורה ליצירתיות וחדשנות.
לא סתם אנחנו רואים שהאקו-סיסטם בפרונט הוא בעל קצב הגדילה הכי מהיר בשנים האחרונות והרבה בזכות קהילות גדולות ופעילות שמאיצות את תהליך הגדילה של התחום.
מה את/ה הכי אוהב/ת בפרונט?
אני בעיקר אוהב שני דברים. הראשון הוא הפידבק לופ שקיים בבסיסו של תכנות צד לקוח. אנחנו חיים בעולם בו אנחנו צריכים סך הכל html, css, js וכבר יכולים כבר לראות תוצר על המסך בקלות ומהירות.
אני לא חושב שיש מקום שבו אפשר לעשות פרוטוטייפינג או פיתוח שלם של פיצ׳ר עם פידבק לופ כמו שיש לנו.
הדבר השני שאני עוד יותר אוהב, זה שלמפתחים בכלל ופרונט בפרט יש כוח על קטן. בהרבה מקומות שדורשים בירוקרטיה ועבודה מול מערכות רשמיות יש לנו את היכולות להתשחרר מהכבלים האלה ע״ שינוי קטן בקוד. למשל, פעם הייתי צריך להגיש ערעור על עסקה, אבל האתר של חברת האשראי לא היה מוכן לשלוח את הבקשה.. משם, לפתוח Devtools, לחפש את הבאג, ולהבין שיש לחברת האשראי בלאגן עם גרשים ששברו להם את ה String , Concatenation ולשחרר את עצמי היה עניין של כמה דקות. הדבר הזה חוזר על עצמו כמעט בכל מקום, הזמנת מלונות, קופת חולים, ואיפה לא…
React, Vue או Angular?
אישית אני מעדיף את ריאקט.
למה דווקא React?
קודם כל כי יש לי הרבה ניסיון איתה אבל בנוסף עוד מההתחלה כשרק התחלתי לעבוד איתה ב 2015 אהבתי את הרעיון שהיא מביאה איתה, שבעצם UI הוא פונקציה של סטייט. למרות שיש דברים לא טריוויאליים ולפעמים צריך לחשוב על דרכים עקיפות להשגת המטרה, היום קשה לי לדמיין איך כתבתי קוד לפני שלמדתי לעבוד עם ריאקט.
באיזו ספריית UI הכי כדאי להשתמש?
אין לי שום העדפה ומלבד זאת לא השתמשתי באף ספריית UI בחיי כמתכנת 🫢. במקומות שבהם הייתי צריך, בניתי את הדיזיין סיסטם שלי בעצמי.
באיזה כלים את/ה משתמש ביום יום שלך במקום העבודה?
אנחנו משתמשים בגרסה מותאמת אישית של VS Code. עובד עם כרום.
שילוב של Flow (אלטרנטיבה לטייפסקריפט שפייסבוק יצרה), Relay (שזה קליינט ל- GraphQL של פייסבוק), GraphQL וריאקט כמובן. בנוסף, בפייסבוק עובדים עם Mercurial שזה כלי אלטרנטיבי לגיט.
בפרויקטים אישיים עובד עם גיט, VS Code ו- Typescript ואת כל שאר הדברים אני בונה בעצמי.
לאיזה פרויקט קוד פתוח תרמת?
זה קל. אני תורם הרבה אבל בעיקר לפרויקט שלי שנקרא Vest. זו ספריה לוידוא קלט ממשתמשים בטפסים שמאמצת את הסינטקס של Mocha או Jest מעול הטסטים לעולם של ולידציית טפסים.
הכל התחיל אי שם ב 2015 כשעבדתי ב fiverr, החלטנו להכניס unit testing לקוד שלנו. במקביל באותו הזמן התחלתי לעבוד על פיצ׳ר שהיו לו טפסים מורכבים עם המון אינפוטים התלויים אחד בשני. בעקבות זה ערכנו דיון מאוד גדול על איך נכון לעשות ולידציה לטפסים מהסוג הזה.
הרעיון של unit testing היה טרי בראש שלי ועלה לי הרעיון של לבחון פתרונות דרך המשקפיים האלו. למעשה בעולם של unit testing המערכת מורכבת מסוויטת טסטים שהיא סדרת בדיקות שכל אחת מוודאת שערך שפונקציה מסוימת מחזירה הוא הערך שאני מצפה לו.
למעשה, כיום אנחנו מצמידים ולידציות לשדות בטופס שמוודאות שהערך בהם תקין, במידה ולא אז נרצה להציג שגיאה למשתמש הקצה. ההבנה הזו היתה מבחינתי נקודת ההשקה עם הדרך בה אנחנו עושים ולידציות ב unit testing. כך לימים נולדה Vest.
בנוסף, Vest עצמה בנויה מכמה ספריות שאני כתבתי בעצמי כמו n4s שעושה שימוש בפיצ׳ר של Proxy ו- Context שמאפשרת להעביר context בין מקומות שונים בקוד (בדומה ל- react). אלו הן ספריות נפרדות שנבנו כדי להשלים את Vest.
מה לדעתך הכי חסר היום לג'וניור?
סבלנות. אני חושב שהסבלנות הכי חסרה להם למרות שאולי זה בכלל לא באשמתם. היום הדברים רצים מאוד מהר. קשה לא להיות ב FOMO תמידי, אני בעצמי שם.
אבל זה לא בושה להיות ג׳וניור, זו לא מילה גסה. צריך לתת לעצמך זמן גם בשלב הזה שהוא חשוב מאוד בהתפתחות של מתכנת. אנחנו לומדים איך ללמוד, איך לעשות טעויות ובקיצור קחו את הזמן.
עצת הזהב שלך לג'וניורים?
תמצאו לכם מנטור.
איך התגלגלת לפיתוח?
בתיכון האמנתי שתכנות זה לא בשבילי, שאני לא מספיק מוכשר בשביל להצליח לתכנת. עסקתי באנימציה, וקיוויתי שבצבא יתנו לי לעשות שבוע-שבוע בתור ספר או משהו ושיעזבו אותי.
דיי בטעות הגעתי לעסוק בסיסטם בצבא, לא עברתי מיונים או משהו, אבל אחרי הטירונות, שכבר הגעתי לבסיס, מישהו חשב שאולי זה יוכל להתאים לי ושלח אותי למבחן.
לקראת השחרור, עדיין לא באמת ידעתי שום דבר על פיתוח תוכנה, אבל הבנתי שלשם העולם הולך, והחלטתי שהגיע הזמן ללמוד. את משמרות הלילה בחודשים האחרונים של השירות ביליתי מול Code academy, למדתי את הבסיס של JS ופיתוח ווב.
באותו זמן התחלתי לעבוד בחברת אינטגרציה למוצרי תקשורת ואבטחת מידע, לא ממש תכננתי שם, לא עבודת פיתוח במהותה ואחרי שנה וחצי שבעיקר למדתי מפרויקטים אישיים התקבלתי ל fiverr ולימים הובלתי את צוות ה Front End Infrastructure.
איזה פרויקט את/ה הכי גאה בו?
חד משמעית Vest.
לאיזה פודקאסטים את/ה מאזין/ה?
Web Rush – בקרוב יצא פרק שאני מתארח בו
Code rocket – פרק בו השתתפתי
The History of English Podcast
המלצה לספר טוב?
So Good They Can't Ignore You: Why Skills Trump Passion in the Quest for Work You Love – מאד מתכתב עם הטיפ שנתתי לג׳וניורים.
The Design of Everyday Things – ספר שאין לו שום קשר לתוכנה, אבל בכל זאת הוא לימד אותי המון על התחום.
אחרי מי שווה לעקוב?
אחריי כמובן!
אילו שאלות הייתי צריך לשאול שלא שאלתי?
האם אפשר לתרום לפרויקטים שלך?
כן בואו קחו אותם ממני כבר! עכשיו ברצינות, אני ממש אשמח לעזרה עם הפרויקטים. וכמובן שאשמח גם למנטר אנשים שירצו לתרום לפרויקטים.
כיצד ניתן לתרום לפרויקטים?
תנו לי פינג בפייסבוק, טוויטר, דיסקורד בסרבר של Vest.